blockly 12.3.1 → 12.4.0

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 (1636) hide show
  1. package/.prettierignore +30 -0
  2. package/.prettierrc.js +15 -0
  3. package/api-extractor.json +390 -0
  4. package/appengine/.gcloudignore +20 -0
  5. package/appengine/README.txt +42 -0
  6. package/appengine/add_timestamps.py +69 -0
  7. package/appengine/app.yaml +106 -0
  8. package/appengine/apple-touch-icon.png +0 -0
  9. package/appengine/blockly_compressed.js +11 -0
  10. package/appengine/expiration.py +52 -0
  11. package/appengine/favicon.ico +0 -0
  12. package/appengine/index.yaml +11 -0
  13. package/appengine/main.py +39 -0
  14. package/appengine/redirect.html +107 -0
  15. package/appengine/requirements.txt +1 -0
  16. package/appengine/robots.txt +2 -0
  17. package/appengine/storage.js +190 -0
  18. package/appengine/storage.py +125 -0
  19. package/blocks/blocks.ts +44 -0
  20. package/blocks/lists.ts +1065 -0
  21. package/blocks/logic.ts +712 -0
  22. package/blocks/loops.ts +408 -0
  23. package/blocks/math.ts +591 -0
  24. package/blocks/procedures.ts +1366 -0
  25. package/blocks/text.ts +1001 -0
  26. package/blocks/variables.ts +181 -0
  27. package/blocks/variables_dynamic.ts +192 -0
  28. package/core/any_aliases.ts +8 -0
  29. package/core/block.ts +2511 -0
  30. package/core/block_animations.ts +233 -0
  31. package/core/block_flyout_inflater.ts +283 -0
  32. package/core/block_svg.ts +1873 -0
  33. package/core/blockly.ts +644 -0
  34. package/core/blockly_options.ts +71 -0
  35. package/core/blocks.ts +18 -0
  36. package/core/browser_events.ts +256 -0
  37. package/core/bubbles/bubble.ts +732 -0
  38. package/core/bubbles/mini_workspace_bubble.ts +292 -0
  39. package/core/bubbles/text_bubble.ts +112 -0
  40. package/core/bubbles/textinput_bubble.ts +296 -0
  41. package/core/bubbles.ts +12 -0
  42. package/core/bump_objects.ts +188 -0
  43. package/core/button_flyout_inflater.ts +76 -0
  44. package/core/clipboard/block_paster.ts +154 -0
  45. package/core/clipboard/registry.ts +31 -0
  46. package/core/clipboard/workspace_comment_paster.ts +95 -0
  47. package/core/clipboard.ts +197 -0
  48. package/core/comments/collapse_comment_bar_button.ts +102 -0
  49. package/core/comments/comment_bar_button.ts +105 -0
  50. package/core/comments/comment_editor.ts +220 -0
  51. package/core/comments/comment_view.ts +773 -0
  52. package/core/comments/delete_comment_bar_button.ts +106 -0
  53. package/core/comments/rendered_workspace_comment.ts +361 -0
  54. package/core/comments/workspace_comment.ts +247 -0
  55. package/core/comments.ts +13 -0
  56. package/core/common.ts +347 -0
  57. package/core/component_manager.ts +247 -0
  58. package/core/config.ts +65 -0
  59. package/core/connection.ts +807 -0
  60. package/core/connection_checker.ts +348 -0
  61. package/core/connection_db.ts +297 -0
  62. package/core/connection_type.ts +21 -0
  63. package/core/constants.ts +23 -0
  64. package/core/contextmenu.ts +295 -0
  65. package/core/contextmenu_items.ts +684 -0
  66. package/core/contextmenu_registry.ts +278 -0
  67. package/core/css.ts +518 -0
  68. package/core/delete_area.ts +77 -0
  69. package/core/dialog.ts +167 -0
  70. package/core/drag_target.ts +97 -0
  71. package/core/dragging/block_drag_strategy.ts +523 -0
  72. package/core/dragging/bubble_drag_strategy.ts +49 -0
  73. package/core/dragging/comment_drag_strategy.ts +92 -0
  74. package/core/dragging/dragger.ts +174 -0
  75. package/core/dragging.ts +12 -0
  76. package/core/dropdowndiv.ts +792 -0
  77. package/core/events/events.ts +109 -0
  78. package/core/events/events_abstract.ts +129 -0
  79. package/core/events/events_block_base.ts +87 -0
  80. package/core/events/events_block_change.ts +259 -0
  81. package/core/events/events_block_create.ts +185 -0
  82. package/core/events/events_block_delete.ts +182 -0
  83. package/core/events/events_block_drag.ts +116 -0
  84. package/core/events/events_block_field_intermediate_change.ts +166 -0
  85. package/core/events/events_block_move.ts +306 -0
  86. package/core/events/events_bubble_open.ts +121 -0
  87. package/core/events/events_click.ts +110 -0
  88. package/core/events/events_comment_base.ts +126 -0
  89. package/core/events/events_comment_change.ts +156 -0
  90. package/core/events/events_comment_collapse.ts +103 -0
  91. package/core/events/events_comment_create.ts +114 -0
  92. package/core/events/events_comment_delete.ts +113 -0
  93. package/core/events/events_comment_drag.ts +99 -0
  94. package/core/events/events_comment_move.ts +206 -0
  95. package/core/events/events_comment_resize.ts +169 -0
  96. package/core/events/events_selected.ts +97 -0
  97. package/core/events/events_theme_change.ts +84 -0
  98. package/core/events/events_toolbox_item_select.ts +96 -0
  99. package/core/events/events_trashcan_open.ts +87 -0
  100. package/core/events/events_ui_base.ts +47 -0
  101. package/core/events/events_var_base.ts +88 -0
  102. package/core/events/events_var_create.ts +131 -0
  103. package/core/events/events_var_delete.ts +124 -0
  104. package/core/events/events_var_rename.ts +133 -0
  105. package/core/events/events_var_type_change.ts +122 -0
  106. package/core/events/events_viewport.ts +149 -0
  107. package/core/events/predicates.ts +166 -0
  108. package/core/events/type.ts +87 -0
  109. package/core/events/utils.ts +455 -0
  110. package/core/events/workspace_events.ts +46 -0
  111. package/core/extensions.ts +497 -0
  112. package/core/field.ts +1445 -0
  113. package/core/field_checkbox.ts +266 -0
  114. package/core/field_dropdown.ts +907 -0
  115. package/core/field_image.ts +307 -0
  116. package/core/field_input.ts +826 -0
  117. package/core/field_label.ts +150 -0
  118. package/core/field_label_serializable.ts +73 -0
  119. package/core/field_number.ts +381 -0
  120. package/core/field_registry.ts +115 -0
  121. package/core/field_textinput.ts +125 -0
  122. package/core/field_variable.ts +654 -0
  123. package/core/flyout_base.ts +1013 -0
  124. package/core/flyout_button.ts +447 -0
  125. package/core/flyout_horizontal.ts +375 -0
  126. package/core/flyout_item.ts +33 -0
  127. package/core/flyout_metrics_manager.ts +90 -0
  128. package/core/flyout_navigator.ts +24 -0
  129. package/core/flyout_separator.ts +94 -0
  130. package/core/flyout_vertical.ts +354 -0
  131. package/core/focus_manager.ts +675 -0
  132. package/core/generator.ts +611 -0
  133. package/core/gesture.ts +1190 -0
  134. package/core/grid.ts +267 -0
  135. package/core/icons/comment_icon.ts +429 -0
  136. package/core/icons/exceptions.ts +23 -0
  137. package/core/icons/icon.ts +204 -0
  138. package/core/icons/icon_types.ts +32 -0
  139. package/core/icons/mutator_icon.ts +360 -0
  140. package/core/icons/registry.ts +33 -0
  141. package/core/icons/warning_icon.ts +226 -0
  142. package/core/icons.ts +24 -0
  143. package/core/inject.ts +332 -0
  144. package/core/inputs/align.ts +14 -0
  145. package/core/inputs/dummy_input.ts +26 -0
  146. package/core/inputs/end_row_input.ts +31 -0
  147. package/core/inputs/input.ts +317 -0
  148. package/core/inputs/input_types.ts +27 -0
  149. package/core/inputs/statement_input.ts +34 -0
  150. package/core/inputs/value_input.ts +30 -0
  151. package/core/inputs.ts +23 -0
  152. package/core/insertion_marker_previewer.ts +268 -0
  153. package/core/interfaces/i_autohideable.ts +27 -0
  154. package/core/interfaces/i_bounded_element.ts +31 -0
  155. package/core/interfaces/i_bubble.ts +64 -0
  156. package/core/interfaces/i_collapsible_toolbox_item.ts +33 -0
  157. package/core/interfaces/i_comment_icon.ts +47 -0
  158. package/core/interfaces/i_component.ts +19 -0
  159. package/core/interfaces/i_connection_checker.ts +101 -0
  160. package/core/interfaces/i_connection_previewer.ts +50 -0
  161. package/core/interfaces/i_contextmenu.ts +21 -0
  162. package/core/interfaces/i_copyable.ts +39 -0
  163. package/core/interfaces/i_deletable.ts +35 -0
  164. package/core/interfaces/i_delete_area.ts +28 -0
  165. package/core/interfaces/i_drag_target.ts +67 -0
  166. package/core/interfaces/i_draggable.ts +73 -0
  167. package/core/interfaces/i_dragger.ts +35 -0
  168. package/core/interfaces/i_flyout.ts +190 -0
  169. package/core/interfaces/i_flyout_inflater.ts +51 -0
  170. package/core/interfaces/i_focusable_node.ts +120 -0
  171. package/core/interfaces/i_focusable_tree.ts +144 -0
  172. package/core/interfaces/i_has_bubble.ts +37 -0
  173. package/core/interfaces/i_icon.ts +116 -0
  174. package/core/interfaces/i_keyboard_accessible.ts +22 -0
  175. package/core/interfaces/i_legacy_procedure_blocks.ts +51 -0
  176. package/core/interfaces/i_metrics_manager.ts +150 -0
  177. package/core/interfaces/i_movable.ts +19 -0
  178. package/core/interfaces/i_navigation_policy.ts +69 -0
  179. package/core/interfaces/i_observable.ts +28 -0
  180. package/core/interfaces/i_parameter_model.ts +51 -0
  181. package/core/interfaces/i_paster.ts +25 -0
  182. package/core/interfaces/i_positionable.ts +33 -0
  183. package/core/interfaces/i_procedure_block.ts +29 -0
  184. package/core/interfaces/i_procedure_map.ts +18 -0
  185. package/core/interfaces/i_procedure_model.ts +71 -0
  186. package/core/interfaces/i_registrable.ts +12 -0
  187. package/core/interfaces/i_rendered_element.ts +19 -0
  188. package/core/interfaces/i_selectable.ts +41 -0
  189. package/core/interfaces/i_selectable_toolbox_item.ts +63 -0
  190. package/core/interfaces/i_serializable.ts +32 -0
  191. package/core/interfaces/i_serializer.ts +51 -0
  192. package/core/interfaces/i_styleable.ts +26 -0
  193. package/core/interfaces/i_toolbox.ts +121 -0
  194. package/core/interfaces/i_toolbox_item.ts +83 -0
  195. package/core/interfaces/i_variable_backed_parameter_model.ts +23 -0
  196. package/core/interfaces/i_variable_map.ts +65 -0
  197. package/core/interfaces/i_variable_model.ts +57 -0
  198. package/core/internal_constants.ts +47 -0
  199. package/core/keyboard_nav/block_comment_navigation_policy.ts +76 -0
  200. package/core/keyboard_nav/block_navigation_policy.ts +213 -0
  201. package/core/keyboard_nav/comment_bar_button_navigation_policy.ts +88 -0
  202. package/core/keyboard_nav/comment_editor_navigation_policy.ts +54 -0
  203. package/core/keyboard_nav/connection_navigation_policy.ts +155 -0
  204. package/core/keyboard_nav/field_navigation_policy.ts +85 -0
  205. package/core/keyboard_nav/flyout_button_navigation_policy.ts +76 -0
  206. package/core/keyboard_nav/flyout_navigation_policy.ts +111 -0
  207. package/core/keyboard_nav/flyout_separator_navigation_policy.ts +53 -0
  208. package/core/keyboard_nav/icon_navigation_policy.ts +93 -0
  209. package/core/keyboard_nav/line_cursor.ts +414 -0
  210. package/core/keyboard_nav/marker.ts +86 -0
  211. package/core/keyboard_nav/workspace_comment_navigation_policy.ts +77 -0
  212. package/core/keyboard_nav/workspace_navigation_policy.ts +77 -0
  213. package/core/keyboard_navigation_controller.ts +63 -0
  214. package/core/label_flyout_inflater.ts +75 -0
  215. package/core/layer_manager.ts +229 -0
  216. package/core/layers.ts +17 -0
  217. package/core/main.ts +31 -0
  218. package/core/marker_manager.ts +116 -0
  219. package/core/menu.ts +486 -0
  220. package/core/menu_separator.ts +38 -0
  221. package/core/menuitem.ts +289 -0
  222. package/core/metrics_manager.ts +486 -0
  223. package/core/msg.ts +27 -0
  224. package/core/names.ts +275 -0
  225. package/core/navigator.ts +123 -0
  226. package/core/observable_procedure_map.ts +66 -0
  227. package/core/options.ts +377 -0
  228. package/core/positionable_helpers.ts +186 -0
  229. package/core/procedures.ts +622 -0
  230. package/core/registry.ts +400 -0
  231. package/core/render_management.ts +193 -0
  232. package/core/rendered_connection.ts +690 -0
  233. package/core/renderers/common/block_rendering.ts +122 -0
  234. package/core/renderers/common/constants.ts +1226 -0
  235. package/core/renderers/common/drawer.ts +511 -0
  236. package/core/renderers/common/i_path_object.ts +109 -0
  237. package/core/renderers/common/info.ts +768 -0
  238. package/core/renderers/common/path_object.ts +260 -0
  239. package/core/renderers/common/renderer.ts +236 -0
  240. package/core/renderers/geras/constants.ts +42 -0
  241. package/core/renderers/geras/drawer.ts +166 -0
  242. package/core/renderers/geras/geras.ts +31 -0
  243. package/core/renderers/geras/highlight_constants.ts +342 -0
  244. package/core/renderers/geras/highlighter.ts +312 -0
  245. package/core/renderers/geras/info.ts +476 -0
  246. package/core/renderers/geras/measurables/inline_input.ts +36 -0
  247. package/core/renderers/geras/measurables/statement_input.ts +35 -0
  248. package/core/renderers/geras/path_object.ts +121 -0
  249. package/core/renderers/geras/renderer.ts +127 -0
  250. package/core/renderers/measurables/base.ts +40 -0
  251. package/core/renderers/measurables/bottom_row.ts +103 -0
  252. package/core/renderers/measurables/connection.ts +41 -0
  253. package/core/renderers/measurables/external_value_input.ts +51 -0
  254. package/core/renderers/measurables/field.ts +48 -0
  255. package/core/renderers/measurables/hat.ts +32 -0
  256. package/core/renderers/measurables/icon.ts +40 -0
  257. package/core/renderers/measurables/in_row_spacer.ts +36 -0
  258. package/core/renderers/measurables/inline_input.ts +61 -0
  259. package/core/renderers/measurables/input_connection.ts +56 -0
  260. package/core/renderers/measurables/input_row.ts +62 -0
  261. package/core/renderers/measurables/jagged_edge.ts +35 -0
  262. package/core/renderers/measurables/next_connection.ts +41 -0
  263. package/core/renderers/measurables/output_connection.ts +42 -0
  264. package/core/renderers/measurables/previous_connection.ts +41 -0
  265. package/core/renderers/measurables/round_corner.ts +41 -0
  266. package/core/renderers/measurables/row.ts +190 -0
  267. package/core/renderers/measurables/spacer_row.ts +43 -0
  268. package/core/renderers/measurables/square_corner.ts +39 -0
  269. package/core/renderers/measurables/statement_input.ts +47 -0
  270. package/core/renderers/measurables/top_row.ts +108 -0
  271. package/core/renderers/measurables/types.ts +362 -0
  272. package/core/renderers/thrasos/info.ts +327 -0
  273. package/core/renderers/thrasos/renderer.ts +39 -0
  274. package/core/renderers/thrasos/thrasos.ts +14 -0
  275. package/core/renderers/zelos/constants.ts +913 -0
  276. package/core/renderers/zelos/drawer.ts +272 -0
  277. package/core/renderers/zelos/info.ts +651 -0
  278. package/core/renderers/zelos/measurables/bottom_row.ts +44 -0
  279. package/core/renderers/zelos/measurables/inputs.ts +40 -0
  280. package/core/renderers/zelos/measurables/row_elements.ts +29 -0
  281. package/core/renderers/zelos/measurables/top_row.ts +50 -0
  282. package/core/renderers/zelos/path_object.ts +209 -0
  283. package/core/renderers/zelos/renderer.ts +91 -0
  284. package/core/renderers/zelos/zelos.ts +31 -0
  285. package/core/scrollbar.ts +898 -0
  286. package/core/scrollbar_pair.ts +349 -0
  287. package/core/separator_flyout_inflater.ts +83 -0
  288. package/core/serialization/blocks.ts +834 -0
  289. package/core/serialization/exceptions.ts +112 -0
  290. package/core/serialization/priorities.ts +25 -0
  291. package/core/serialization/procedures.ts +158 -0
  292. package/core/serialization/registry.ts +30 -0
  293. package/core/serialization/variables.ts +69 -0
  294. package/core/serialization/workspace_comments.ts +143 -0
  295. package/core/serialization/workspaces.ts +94 -0
  296. package/core/serialization.ts +32 -0
  297. package/core/shortcut_items.ts +405 -0
  298. package/core/shortcut_registry.ts +451 -0
  299. package/core/sprites.ts +15 -0
  300. package/core/theme/classic.ts +40 -0
  301. package/core/theme/themes.ts +12 -0
  302. package/core/theme/zelos.ts +80 -0
  303. package/core/theme.ts +232 -0
  304. package/core/theme_manager.ts +192 -0
  305. package/core/toast.ts +219 -0
  306. package/core/toolbox/category.ts +746 -0
  307. package/core/toolbox/collapsible_category.ts +287 -0
  308. package/core/toolbox/separator.ts +108 -0
  309. package/core/toolbox/toolbox.ts +1210 -0
  310. package/core/toolbox/toolbox_item.ts +181 -0
  311. package/core/tooltip.ts +466 -0
  312. package/core/touch.ts +155 -0
  313. package/core/trashcan.ts +730 -0
  314. package/core/utils/aria.ts +158 -0
  315. package/core/utils/array.ts +24 -0
  316. package/core/utils/colour.ts +265 -0
  317. package/core/utils/coordinate.ts +129 -0
  318. package/core/utils/deprecation.ts +47 -0
  319. package/core/utils/dom.ts +356 -0
  320. package/core/utils/drag.ts +74 -0
  321. package/core/utils/focusable_tree_traverser.ts +126 -0
  322. package/core/utils/idgenerator.ts +70 -0
  323. package/core/utils/keycodes.ts +154 -0
  324. package/core/utils/math.ts +50 -0
  325. package/core/utils/metrics.ts +86 -0
  326. package/core/utils/object.ts +33 -0
  327. package/core/utils/parsing.ts +286 -0
  328. package/core/utils/rect.ts +142 -0
  329. package/core/utils/size.ts +62 -0
  330. package/core/utils/string.ts +289 -0
  331. package/core/utils/style.ts +219 -0
  332. package/core/utils/svg.ts +84 -0
  333. package/core/utils/svg_math.ts +207 -0
  334. package/core/utils/svg_paths.ts +133 -0
  335. package/core/utils/toolbox.ts +417 -0
  336. package/core/utils/useragent.ts +86 -0
  337. package/core/utils/xml.ts +165 -0
  338. package/core/utils.ts +59 -0
  339. package/core/variable_map.ts +476 -0
  340. package/core/variable_model.ts +150 -0
  341. package/core/variables.ts +931 -0
  342. package/core/variables_dynamic.ts +230 -0
  343. package/core/widgetdiv.ts +349 -0
  344. package/core/workspace.ts +994 -0
  345. package/core/workspace_audio.ts +137 -0
  346. package/core/workspace_dragger.ts +81 -0
  347. package/core/workspace_svg.ts +2954 -0
  348. package/core/xml.ts +1126 -0
  349. package/core/zoom_controls.ts +495 -0
  350. package/demos/blockfactory/analytics.js +195 -0
  351. package/demos/blockfactory/app_controller.js +726 -0
  352. package/demos/blockfactory/block_definition_extractor.js +742 -0
  353. package/demos/blockfactory/block_exporter_controller.js +311 -0
  354. package/demos/blockfactory/block_exporter_tools.js +212 -0
  355. package/demos/blockfactory/block_exporter_view.js +101 -0
  356. package/demos/blockfactory/block_library_controller.js +325 -0
  357. package/demos/blockfactory/block_library_storage.js +149 -0
  358. package/demos/blockfactory/block_library_view.js +178 -0
  359. package/demos/blockfactory/block_option.js +151 -0
  360. package/demos/blockfactory/blocks.js +920 -0
  361. package/demos/blockfactory/cp.css +46 -0
  362. package/demos/blockfactory/cp.js +179 -0
  363. package/demos/blockfactory/factory.css +586 -0
  364. package/demos/blockfactory/factory.js +338 -0
  365. package/demos/blockfactory/factory_utils.js +1036 -0
  366. package/demos/blockfactory/icon.png +0 -0
  367. package/demos/blockfactory/index.html +767 -0
  368. package/demos/blockfactory/link.png +0 -0
  369. package/demos/blockfactory/standard_categories.js +384 -0
  370. package/demos/blockfactory/workspacefactory/wfactory_controller.js +1332 -0
  371. package/demos/blockfactory/workspacefactory/wfactory_generator.js +224 -0
  372. package/demos/blockfactory/workspacefactory/wfactory_init.js +541 -0
  373. package/demos/blockfactory/workspacefactory/wfactory_model.js +548 -0
  374. package/demos/blockfactory/workspacefactory/wfactory_view.js +424 -0
  375. package/demos/code/code.js +626 -0
  376. package/demos/code/icon.png +0 -0
  377. package/demos/code/icons.png +0 -0
  378. package/demos/code/index.html +359 -0
  379. package/demos/code/msg/ar.js +24 -0
  380. package/demos/code/msg/be-tarask.js +24 -0
  381. package/demos/code/msg/br.js +24 -0
  382. package/demos/code/msg/ca.js +24 -0
  383. package/demos/code/msg/cs.js +24 -0
  384. package/demos/code/msg/da.js +24 -0
  385. package/demos/code/msg/de.js +24 -0
  386. package/demos/code/msg/el.js +24 -0
  387. package/demos/code/msg/en.js +24 -0
  388. package/demos/code/msg/es.js +24 -0
  389. package/demos/code/msg/et.js +24 -0
  390. package/demos/code/msg/fa.js +24 -0
  391. package/demos/code/msg/fr.js +24 -0
  392. package/demos/code/msg/he.js +24 -0
  393. package/demos/code/msg/hr.js +24 -0
  394. package/demos/code/msg/hrx.js +24 -0
  395. package/demos/code/msg/hu.js +24 -0
  396. package/demos/code/msg/ia.js +24 -0
  397. package/demos/code/msg/is.js +24 -0
  398. package/demos/code/msg/it.js +24 -0
  399. package/demos/code/msg/ja.js +24 -0
  400. package/demos/code/msg/kab.js +24 -0
  401. package/demos/code/msg/ko.js +24 -0
  402. package/demos/code/msg/mk.js +24 -0
  403. package/demos/code/msg/ms.js +24 -0
  404. package/demos/code/msg/nb.js +24 -0
  405. package/demos/code/msg/nl.js +24 -0
  406. package/demos/code/msg/oc.js +24 -0
  407. package/demos/code/msg/pl.js +24 -0
  408. package/demos/code/msg/pms.js +24 -0
  409. package/demos/code/msg/pt-br.js +24 -0
  410. package/demos/code/msg/ro.js +24 -0
  411. package/demos/code/msg/ru.js +24 -0
  412. package/demos/code/msg/sc.js +24 -0
  413. package/demos/code/msg/sk.js +24 -0
  414. package/demos/code/msg/sr.js +24 -0
  415. package/demos/code/msg/sv.js +24 -0
  416. package/demos/code/msg/ta.js +24 -0
  417. package/demos/code/msg/th.js +24 -0
  418. package/demos/code/msg/tlh.js +24 -0
  419. package/demos/code/msg/tr.js +24 -0
  420. package/demos/code/msg/uk.js +24 -0
  421. package/demos/code/msg/vi.js +24 -0
  422. package/demos/code/msg/zh-hans.js +24 -0
  423. package/demos/code/msg/zh-hant.js +24 -0
  424. package/demos/code/style.css +184 -0
  425. package/demos/index.html +68 -0
  426. package/demos/storage/icon.png +0 -0
  427. package/demos/storage/index.html +104 -0
  428. package/eslint.config.mjs +314 -0
  429. package/generators/dart/dart_generator.ts +321 -0
  430. package/generators/dart/lists.ts +525 -0
  431. package/generators/dart/logic.ts +157 -0
  432. package/generators/dart/loops.ts +217 -0
  433. package/generators/dart/math.ts +559 -0
  434. package/generators/dart/procedures.ts +138 -0
  435. package/generators/dart/text.ts +405 -0
  436. package/generators/dart/variables.ts +32 -0
  437. package/generators/dart/variables_dynamic.ts +17 -0
  438. package/generators/dart.ts +50 -0
  439. package/generators/javascript/javascript_generator.ts +346 -0
  440. package/generators/javascript/lists.ts +465 -0
  441. package/generators/javascript/logic.ts +155 -0
  442. package/generators/javascript/loops.ts +245 -0
  443. package/generators/javascript/math.ts +450 -0
  444. package/generators/javascript/procedures.ts +142 -0
  445. package/generators/javascript/text.ts +418 -0
  446. package/generators/javascript/variables.ts +32 -0
  447. package/generators/javascript/variables_dynamic.ts +17 -0
  448. package/generators/javascript.ts +46 -0
  449. package/generators/lua/lists.ts +445 -0
  450. package/generators/lua/logic.ts +144 -0
  451. package/generators/lua/loops.ts +192 -0
  452. package/generators/lua/lua_generator.ts +225 -0
  453. package/generators/lua/math.ts +473 -0
  454. package/generators/lua/procedures.ts +144 -0
  455. package/generators/lua/text.ts +380 -0
  456. package/generators/lua/variables.ts +31 -0
  457. package/generators/lua/variables_dynamic.ts +17 -0
  458. package/generators/lua.ts +44 -0
  459. package/generators/php/lists.ts +585 -0
  460. package/generators/php/logic.ts +157 -0
  461. package/generators/php/loops.ts +218 -0
  462. package/generators/php/math.ts +408 -0
  463. package/generators/php/php_generator.ts +320 -0
  464. package/generators/php/procedures.ts +159 -0
  465. package/generators/php/text.ts +315 -0
  466. package/generators/php/variables.ts +32 -0
  467. package/generators/php/variables_dynamic.ts +17 -0
  468. package/generators/php.ts +46 -0
  469. package/generators/python/lists.ts +398 -0
  470. package/generators/python/logic.ts +152 -0
  471. package/generators/python/loops.ts +251 -0
  472. package/generators/python/math.ts +434 -0
  473. package/generators/python/procedures.ts +159 -0
  474. package/generators/python/python_generator.ts +355 -0
  475. package/generators/python/text.ts +338 -0
  476. package/generators/python/variables.ts +31 -0
  477. package/generators/python/variables_dynamic.ts +17 -0
  478. package/generators/python.ts +51 -0
  479. package/gulpfile.mjs +100 -0
  480. package/jsconfig.json +7 -0
  481. package/msg/json/README.md +33 -0
  482. package/msg/json/ab.json +222 -0
  483. package/msg/json/ace.json +7 -0
  484. package/msg/json/af.json +34 -0
  485. package/msg/json/am.json +30 -0
  486. package/msg/json/ar.json +355 -0
  487. package/msg/json/ast.json +10 -0
  488. package/msg/json/az.json +334 -0
  489. package/msg/json/ba.json +211 -0
  490. package/msg/json/bcc.json +290 -0
  491. package/msg/json/be-tarask.json +335 -0
  492. package/msg/json/be.json +326 -0
  493. package/msg/json/bg.json +347 -0
  494. package/msg/json/bn.json +189 -0
  495. package/msg/json/br.json +334 -0
  496. package/msg/json/bs.json +166 -0
  497. package/msg/json/ca.json +341 -0
  498. package/msg/json/cdo.json +6 -0
  499. package/msg/json/ce.json +328 -0
  500. package/msg/json/constants.json +12 -0
  501. package/msg/json/cs.json +344 -0
  502. package/msg/json/da.json +346 -0
  503. package/msg/json/de.json +369 -0
  504. package/msg/json/diq.json +264 -0
  505. package/msg/json/dtp.json +198 -0
  506. package/msg/json/dty.json +97 -0
  507. package/msg/json/ee.json +160 -0
  508. package/msg/json/el.json +356 -0
  509. package/msg/json/en-gb.json +199 -0
  510. package/msg/json/en.json +423 -0
  511. package/msg/json/eo.json +337 -0
  512. package/msg/json/es.json +361 -0
  513. package/msg/json/et.json +335 -0
  514. package/msg/json/eu.json +219 -0
  515. package/msg/json/fa.json +342 -0
  516. package/msg/json/fi.json +350 -0
  517. package/msg/json/fo.json +46 -0
  518. package/msg/json/fr.json +374 -0
  519. package/msg/json/frr.json +6 -0
  520. package/msg/json/gl.json +338 -0
  521. package/msg/json/gn.json +54 -0
  522. package/msg/json/gor.json +87 -0
  523. package/msg/json/ha.json +313 -0
  524. package/msg/json/hak.json +17 -0
  525. package/msg/json/he.json +355 -0
  526. package/msg/json/hi.json +318 -0
  527. package/msg/json/hr.json +337 -0
  528. package/msg/json/hrx.json +287 -0
  529. package/msg/json/hsb.json +128 -0
  530. package/msg/json/hu.json +349 -0
  531. package/msg/json/hy.json +337 -0
  532. package/msg/json/ia.json +337 -0
  533. package/msg/json/id.json +338 -0
  534. package/msg/json/ig.json +323 -0
  535. package/msg/json/inh.json +80 -0
  536. package/msg/json/is.json +331 -0
  537. package/msg/json/it.json +346 -0
  538. package/msg/json/ja.json +362 -0
  539. package/msg/json/ka.json +14 -0
  540. package/msg/json/kab.json +323 -0
  541. package/msg/json/kbd-cyrl.json +84 -0
  542. package/msg/json/km.json +29 -0
  543. package/msg/json/kn.json +333 -0
  544. package/msg/json/ko.json +377 -0
  545. package/msg/json/ksh.json +43 -0
  546. package/msg/json/ku-latn.json +41 -0
  547. package/msg/json/ky.json +71 -0
  548. package/msg/json/la.json +6 -0
  549. package/msg/json/lb.json +156 -0
  550. package/msg/json/lki.json +282 -0
  551. package/msg/json/lo.json +92 -0
  552. package/msg/json/lrc.json +123 -0
  553. package/msg/json/lt.json +321 -0
  554. package/msg/json/lv.json +324 -0
  555. package/msg/json/mg.json +58 -0
  556. package/msg/json/mk.json +178 -0
  557. package/msg/json/ml.json +35 -0
  558. package/msg/json/mnw.json +90 -0
  559. package/msg/json/ms.json +300 -0
  560. package/msg/json/my.json +57 -0
  561. package/msg/json/mzn.json +6 -0
  562. package/msg/json/nb.json +331 -0
  563. package/msg/json/ne.json +247 -0
  564. package/msg/json/nl.json +358 -0
  565. package/msg/json/oc.json +194 -0
  566. package/msg/json/olo.json +37 -0
  567. package/msg/json/pa.json +75 -0
  568. package/msg/json/pl.json +358 -0
  569. package/msg/json/pms.json +325 -0
  570. package/msg/json/ps.json +50 -0
  571. package/msg/json/pt-br.json +371 -0
  572. package/msg/json/pt.json +360 -0
  573. package/msg/json/qqq.json +430 -0
  574. package/msg/json/ro.json +333 -0
  575. package/msg/json/ru.json +363 -0
  576. package/msg/json/sc.json +283 -0
  577. package/msg/json/sco.json +11 -0
  578. package/msg/json/sd.json +158 -0
  579. package/msg/json/shn.json +109 -0
  580. package/msg/json/si.json +16 -0
  581. package/msg/json/sk.json +339 -0
  582. package/msg/json/skr-arab.json +117 -0
  583. package/msg/json/sl.json +355 -0
  584. package/msg/json/smn.json +133 -0
  585. package/msg/json/sq.json +343 -0
  586. package/msg/json/sr-latn.json +324 -0
  587. package/msg/json/sr.json +349 -0
  588. package/msg/json/sv.json +350 -0
  589. package/msg/json/sw.json +12 -0
  590. package/msg/json/synonyms.json +22 -0
  591. package/msg/json/ta.json +306 -0
  592. package/msg/json/tcy.json +316 -0
  593. package/msg/json/tdd.json +110 -0
  594. package/msg/json/te.json +101 -0
  595. package/msg/json/th.json +333 -0
  596. package/msg/json/ti.json +50 -0
  597. package/msg/json/tl.json +149 -0
  598. package/msg/json/tlh.json +179 -0
  599. package/msg/json/tr.json +370 -0
  600. package/msg/json/ug-arab.json +180 -0
  601. package/msg/json/uk.json +346 -0
  602. package/msg/json/ur.json +118 -0
  603. package/msg/json/uz.json +36 -0
  604. package/msg/json/vi.json +345 -0
  605. package/msg/json/xmf.json +99 -0
  606. package/msg/json/yo.json +316 -0
  607. package/msg/json/zgh.json +83 -0
  608. package/msg/json/zh-hans.json +374 -0
  609. package/msg/json/zh-hant.json +362 -0
  610. package/msg/messages.js +1695 -0
  611. package/package.json +36 -5
  612. package/scripts/gulpfiles/appengine_tasks.mjs +189 -0
  613. package/scripts/gulpfiles/build_tasks.mjs +753 -0
  614. package/scripts/gulpfiles/config.mjs +40 -0
  615. package/scripts/gulpfiles/docs_tasks.mjs +146 -0
  616. package/scripts/gulpfiles/git_tasks.mjs +167 -0
  617. package/scripts/gulpfiles/helper_tasks.mjs +25 -0
  618. package/scripts/gulpfiles/package_tasks.mjs +257 -0
  619. package/scripts/gulpfiles/release_tasks.mjs +174 -0
  620. package/scripts/gulpfiles/test_tasks.mjs +409 -0
  621. package/scripts/helpers.js +74 -0
  622. package/scripts/i18n/common.py +233 -0
  623. package/scripts/i18n/create_messages.py +167 -0
  624. package/scripts/i18n/dedup_json.py +72 -0
  625. package/scripts/i18n/js_to_json.py +135 -0
  626. package/scripts/i18n/tests.py +46 -0
  627. package/scripts/migration/renamings.json5 +1599 -0
  628. package/scripts/package/index.js +23 -0
  629. package/scripts/package/templates/umd-msg.template +16 -0
  630. package/scripts/package/templates/umd.template +13 -0
  631. package/scripts/themes/blockStyles_example.json +11 -0
  632. package/scripts/themes/create_blockStyles.py +184 -0
  633. package/scripts/tsick.js +86 -0
  634. package/tests/browser/.mocharc.js +7 -0
  635. package/tests/browser/test/basic_block_factory_test.mjs +44 -0
  636. package/tests/browser/test/basic_block_test.mjs +38 -0
  637. package/tests/browser/test/basic_playground_test.mjs +461 -0
  638. package/tests/browser/test/block_undo_test.mjs +50 -0
  639. package/tests/browser/test/clipboard_test.mjs +611 -0
  640. package/tests/browser/test/delete_blocks_test.mjs +217 -0
  641. package/tests/browser/test/extensive_test.mjs +191 -0
  642. package/tests/browser/test/field_edits_test.mjs +61 -0
  643. package/tests/browser/test/hooks.mjs +23 -0
  644. package/tests/browser/test/mutator_test.mjs +87 -0
  645. package/tests/browser/test/procedure_test.mjs +109 -0
  646. package/tests/browser/test/test_setup.mjs +623 -0
  647. package/tests/browser/test/toolbox_drag_test.mjs +219 -0
  648. package/tests/browser/test/workspace_comment_test.mjs +220 -0
  649. package/tests/compile/index.html +43 -0
  650. package/tests/compile/main.js +53 -0
  651. package/tests/compile/test_blocks.js +47 -0
  652. package/tests/compile/webdriver.js +81 -0
  653. package/tests/generators/functions.xml +561 -0
  654. package/tests/generators/golden/generated.dart +1604 -0
  655. package/tests/generators/golden/generated.js +1552 -0
  656. package/tests/generators/golden/generated.lua +1828 -0
  657. package/tests/generators/golden/generated.php +1611 -0
  658. package/tests/generators/golden/generated.py +1407 -0
  659. package/tests/generators/index.html +408 -0
  660. package/tests/generators/lists.xml +8675 -0
  661. package/tests/generators/logic.xml +1019 -0
  662. package/tests/generators/loops1.xml +345 -0
  663. package/tests/generators/loops2.xml +891 -0
  664. package/tests/generators/loops3.xml +735 -0
  665. package/tests/generators/math.xml +2077 -0
  666. package/tests/generators/text.xml +4651 -0
  667. package/tests/generators/unittest.js +103 -0
  668. package/tests/generators/unittest_dart.js +163 -0
  669. package/tests/generators/unittest_javascript.js +167 -0
  670. package/tests/generators/unittest_lua.js +165 -0
  671. package/tests/generators/unittest_php.js +154 -0
  672. package/tests/generators/unittest_python.js +138 -0
  673. package/tests/generators/variables.xml +68 -0
  674. package/tests/generators/webdriver.js +123 -0
  675. package/tests/media/200px.png +0 -0
  676. package/tests/media/30px.png +0 -0
  677. package/tests/media/50px.png +0 -0
  678. package/tests/media/a.png +0 -0
  679. package/tests/media/arrow.png +0 -0
  680. package/tests/media/b.png +0 -0
  681. package/tests/media/c.png +0 -0
  682. package/tests/media/d.png +0 -0
  683. package/tests/media/e.png +0 -0
  684. package/tests/media/f.png +0 -0
  685. package/tests/media/g.png +0 -0
  686. package/tests/media/h.png +0 -0
  687. package/tests/media/i.png +0 -0
  688. package/tests/media/j.png +0 -0
  689. package/tests/media/k.png +0 -0
  690. package/tests/media/l.png +0 -0
  691. package/tests/media/m.png +0 -0
  692. package/tests/migration/renamings.schema.json +59 -0
  693. package/tests/migration/validate-renamings.mjs +63 -0
  694. package/tests/mocha/.mocharc.js +6 -0
  695. package/tests/mocha/block_json_test.js +777 -0
  696. package/tests/mocha/block_test.js +2949 -0
  697. package/tests/mocha/blocks/lists_test.js +238 -0
  698. package/tests/mocha/blocks/logic_ternary_test.js +320 -0
  699. package/tests/mocha/blocks/loops_test.js +56 -0
  700. package/tests/mocha/blocks/procedures_test.js +2509 -0
  701. package/tests/mocha/blocks/variables_test.js +345 -0
  702. package/tests/mocha/clipboard_test.js +263 -0
  703. package/tests/mocha/comment_deserialization_test.js +122 -0
  704. package/tests/mocha/comment_test.js +215 -0
  705. package/tests/mocha/comment_view_test.js +188 -0
  706. package/tests/mocha/connection_checker_test.js +694 -0
  707. package/tests/mocha/connection_db_test.js +363 -0
  708. package/tests/mocha/connection_test.js +3738 -0
  709. package/tests/mocha/contextmenu_items_test.js +653 -0
  710. package/tests/mocha/contextmenu_test.js +73 -0
  711. package/tests/mocha/cursor_test.js +922 -0
  712. package/tests/mocha/dialog_test.js +168 -0
  713. package/tests/mocha/dropdowndiv_test.js +458 -0
  714. package/tests/mocha/event_block_change_test.js +126 -0
  715. package/tests/mocha/event_block_create_test.js +109 -0
  716. package/tests/mocha/event_block_delete_test.js +55 -0
  717. package/tests/mocha/event_block_drag_test.js +36 -0
  718. package/tests/mocha/event_block_field_intermediate_change_test.js +67 -0
  719. package/tests/mocha/event_block_move_test.js +39 -0
  720. package/tests/mocha/event_bubble_open_test.js +42 -0
  721. package/tests/mocha/event_click_test.js +40 -0
  722. package/tests/mocha/event_comment_change_test.js +39 -0
  723. package/tests/mocha/event_comment_collapse_test.js +34 -0
  724. package/tests/mocha/event_comment_create_test.js +38 -0
  725. package/tests/mocha/event_comment_delete_test.js +38 -0
  726. package/tests/mocha/event_comment_drag_test.js +35 -0
  727. package/tests/mocha/event_comment_move_test.js +40 -0
  728. package/tests/mocha/event_comment_resize_test.js +38 -0
  729. package/tests/mocha/event_selected_test.js +41 -0
  730. package/tests/mocha/event_test.js +1668 -0
  731. package/tests/mocha/event_theme_change_test.js +36 -0
  732. package/tests/mocha/event_toolbox_item_select_test.js +64 -0
  733. package/tests/mocha/event_trashcan_open_test.js +36 -0
  734. package/tests/mocha/event_var_create_test.js +54 -0
  735. package/tests/mocha/event_var_delete_test.js +54 -0
  736. package/tests/mocha/event_var_rename_test.js +39 -0
  737. package/tests/mocha/event_var_type_change_test.js +43 -0
  738. package/tests/mocha/event_viewport_test.js +39 -0
  739. package/tests/mocha/extensions_test.js +613 -0
  740. package/tests/mocha/field_checkbox_test.js +299 -0
  741. package/tests/mocha/field_colour_test.js +395 -0
  742. package/tests/mocha/field_dropdown_test.js +328 -0
  743. package/tests/mocha/field_image_test.js +351 -0
  744. package/tests/mocha/field_label_serializable_test.js +252 -0
  745. package/tests/mocha/field_label_test.js +226 -0
  746. package/tests/mocha/field_number_test.js +505 -0
  747. package/tests/mocha/field_registry_test.js +115 -0
  748. package/tests/mocha/field_test.js +821 -0
  749. package/tests/mocha/field_textinput_test.js +593 -0
  750. package/tests/mocha/field_variable_test.js +644 -0
  751. package/tests/mocha/flyout_test.js +650 -0
  752. package/tests/mocha/focus_manager_test.js +5979 -0
  753. package/tests/mocha/focusable_tree_traverser_test.js +602 -0
  754. package/tests/mocha/generator_test.js +233 -0
  755. package/tests/mocha/gesture_test.js +133 -0
  756. package/tests/mocha/icon_test.js +431 -0
  757. package/tests/mocha/index.html +354 -0
  758. package/tests/mocha/input_test.js +296 -0
  759. package/tests/mocha/insertion_marker_test.js +432 -0
  760. package/tests/mocha/jso_deserialization_test.js +848 -0
  761. package/tests/mocha/jso_serialization_test.js +1068 -0
  762. package/tests/mocha/json_test.js +303 -0
  763. package/tests/mocha/keyboard_navigation_controller_test.js +37 -0
  764. package/tests/mocha/layering_test.js +104 -0
  765. package/tests/mocha/menu_item_test.js +176 -0
  766. package/tests/mocha/metrics_test.js +671 -0
  767. package/tests/mocha/mutator_test.js +87 -0
  768. package/tests/mocha/names_test.js +97 -0
  769. package/tests/mocha/navigation_test.js +876 -0
  770. package/tests/mocha/old_workspace_comment_test.js +256 -0
  771. package/tests/mocha/procedure_map_test.js +52 -0
  772. package/tests/mocha/rect_test.js +1668 -0
  773. package/tests/mocha/registry_test.js +281 -0
  774. package/tests/mocha/render_management_test.js +127 -0
  775. package/tests/mocha/serializer_test.js +2100 -0
  776. package/tests/mocha/shortcut_items_test.js +563 -0
  777. package/tests/mocha/shortcut_registry_test.js +533 -0
  778. package/tests/mocha/test_helpers/block_definitions.js +204 -0
  779. package/tests/mocha/test_helpers/code_generation.js +114 -0
  780. package/tests/mocha/test_helpers/common.js +106 -0
  781. package/tests/mocha/test_helpers/events.js +290 -0
  782. package/tests/mocha/test_helpers/fields.js +310 -0
  783. package/tests/mocha/test_helpers/icon_mocks.js +130 -0
  784. package/tests/mocha/test_helpers/procedures.js +304 -0
  785. package/tests/mocha/test_helpers/serialization.js +124 -0
  786. package/tests/mocha/test_helpers/setup_teardown.js +232 -0
  787. package/tests/mocha/test_helpers/toolbox_definitions.js +269 -0
  788. package/tests/mocha/test_helpers/user_input.js +62 -0
  789. package/tests/mocha/test_helpers/variables.js +27 -0
  790. package/tests/mocha/test_helpers/warnings.js +83 -0
  791. package/tests/mocha/test_helpers/workspace.js +1659 -0
  792. package/tests/mocha/theme_test.js +307 -0
  793. package/tests/mocha/toast_test.js +129 -0
  794. package/tests/mocha/toolbox_test.js +821 -0
  795. package/tests/mocha/tooltip_test.js +276 -0
  796. package/tests/mocha/touch_test.js +109 -0
  797. package/tests/mocha/trashcan_test.js +376 -0
  798. package/tests/mocha/utils_test.js +557 -0
  799. package/tests/mocha/variable_map_test.js +470 -0
  800. package/tests/mocha/variable_model_test.js +85 -0
  801. package/tests/mocha/webdriver.js +110 -0
  802. package/tests/mocha/widget_div_test.js +427 -0
  803. package/tests/mocha/workspace_comment_test.js +197 -0
  804. package/tests/mocha/workspace_svg_test.js +922 -0
  805. package/tests/mocha/workspace_test.js +24 -0
  806. package/tests/mocha/xml_test.js +893 -0
  807. package/tests/mocha/zoom_controls_test.js +81 -0
  808. package/tests/multi_playground.html +482 -0
  809. package/tests/node/.mocharc.js +6 -0
  810. package/tests/node/run_node_test.mjs +191 -0
  811. package/tests/playground.html +1280 -0
  812. package/tests/playgrounds/advanced_playground.html +188 -0
  813. package/tests/playgrounds/iframe.html +40 -0
  814. package/tests/playgrounds/screenshot.js +123 -0
  815. package/tests/scripts/check_metadata.sh +170 -0
  816. package/tests/scripts/load.mjs +140 -0
  817. package/tests/scripts/setup_linux_env.sh +7 -0
  818. package/tests/scripts/update_metadata.sh +46 -0
  819. package/tests/themes/test_themes.js +62 -0
  820. package/tests/typescript/README.md +4 -0
  821. package/tests/typescript/src/field/different_user_input.ts +81 -0
  822. package/tests/typescript/src/generators/dart.ts +24 -0
  823. package/tests/typescript/src/generators/javascript.ts +28 -0
  824. package/tests/typescript/src/generators/lua.ts +24 -0
  825. package/tests/typescript/src/generators/php.ts +24 -0
  826. package/tests/typescript/src/generators/python.ts +24 -0
  827. package/tests/typescript/src/generators.ts +33 -0
  828. package/tests/typescript/src/msg.ts +20 -0
  829. package/tests/typescript/tsconfig.json +20 -0
  830. package/tests/xml/README.txt +11 -0
  831. package/tests/xml/blockly.xsd +178 -0
  832. package/tests/xml/invalid.xml +6 -0
  833. package/tests/xml/toolbox.xml +311 -0
  834. package/tests/xml/workspace.xml +114 -0
  835. package/tsconfig.json +37 -0
  836. package/tsdoc.json +25 -0
  837. package/typings/README.md +5 -0
  838. package/typings/templates/blockly-header.template +11 -0
  839. package/typings/templates/blockly-interfaces.template +83 -0
  840. package/typings/templates/msg.template +15 -0
  841. package/typings/tsconfig.json +23 -0
  842. package/blockly.min.js +0 -2740
  843. package/blockly.mjs +0 -163
  844. package/blockly_compressed.js +0 -1815
  845. package/blockly_compressed.js.map +0 -1
  846. package/blocks.js +0 -4
  847. package/blocks.mjs +0 -12
  848. package/blocks_compressed.js +0 -193
  849. package/blocks_compressed.js.map +0 -1
  850. package/core/any_aliases.d.ts +0 -7
  851. package/core/block.d.ts +0 -1006
  852. package/core/block_animations.d.ts +0 -34
  853. package/core/block_flyout_inflater.d.ts +0 -94
  854. package/core/block_svg.d.ts +0 -733
  855. package/core/blockly.d.ts +0 -286
  856. package/core/blockly_options.d.ts +0 -70
  857. package/core/blocks.d.ts +0 -17
  858. package/core/browser_events.d.ts +0 -82
  859. package/core/bubbles/bubble.d.ts +0 -228
  860. package/core/bubbles/mini_workspace_bubble.d.ts +0 -84
  861. package/core/bubbles/text_bubble.d.ts +0 -38
  862. package/core/bubbles/textinput_bubble.d.ts +0 -102
  863. package/core/bubbles.d.ts +0 -11
  864. package/core/bump_objects.d.ts +0 -37
  865. package/core/button_flyout_inflater.d.ts +0 -42
  866. package/core/clipboard/block_paster.d.ts +0 -34
  867. package/core/clipboard/registry.d.ts +0 -21
  868. package/core/clipboard/workspace_comment_paster.d.ts +0 -19
  869. package/core/clipboard.d.ts +0 -103
  870. package/core/comments/collapse_comment_bar_button.d.ts +0 -52
  871. package/core/comments/comment_bar_button.d.ts +0 -62
  872. package/core/comments/comment_editor.d.ts +0 -62
  873. package/core/comments/comment_view.d.ts +0 -213
  874. package/core/comments/delete_comment_bar_button.d.ts +0 -52
  875. package/core/comments/rendered_workspace_comment.d.ts +0 -121
  876. package/core/comments/workspace_comment.d.ts +0 -107
  877. package/core/comments.d.ts +0 -13
  878. package/core/common.d.ts +0 -163
  879. package/core/component_manager.d.ts +0 -112
  880. package/core/config.d.ts +0 -24
  881. package/core/connection.d.ts +0 -291
  882. package/core/connection_checker.d.ts +0 -85
  883. package/core/connection_db.d.ts +0 -100
  884. package/core/connection_type.d.ts +0 -15
  885. package/core/constants.d.ts +0 -19
  886. package/core/contextmenu.d.ts +0 -53
  887. package/core/contextmenu_items.d.ts +0 -73
  888. package/core/contextmenu_registry.d.ts +0 -173
  889. package/core/css.d.ts +0 -25
  890. package/core/delete_area.d.ts +0 -48
  891. package/core/dialog.d.ts +0 -82
  892. package/core/drag_target.d.ts +0 -75
  893. package/core/dragging/block_drag_strategy.d.ts +0 -121
  894. package/core/dragging/bubble_drag_strategy.d.ts +0 -20
  895. package/core/dragging/comment_drag_strategy.d.ts +0 -26
  896. package/core/dragging/dragger.d.ts +0 -49
  897. package/core/dragging.d.ts +0 -11
  898. package/core/dropdowndiv.d.ts +0 -208
  899. package/core/events/events.d.ts +0 -72
  900. package/core/events/events_abstract.d.ts +0 -72
  901. package/core/events/events_block_base.d.ts +0 -46
  902. package/core/events/events_block_change.d.ts +0 -100
  903. package/core/events/events_block_create.d.ts +0 -59
  904. package/core/events/events_block_delete.d.ts +0 -62
  905. package/core/events/events_block_drag.d.ts +0 -61
  906. package/core/events/events_block_field_intermediate_change.d.ts +0 -71
  907. package/core/events/events_block_move.d.ts +0 -115
  908. package/core/events/events_bubble_open.d.ts +0 -62
  909. package/core/events/events_click.d.ts +0 -64
  910. package/core/events/events_comment_base.d.ts +0 -55
  911. package/core/events/events_comment_change.d.ts +0 -64
  912. package/core/events/events_comment_collapse.d.ts +0 -40
  913. package/core/events/events_comment_create.d.ts +0 -57
  914. package/core/events/events_comment_delete.d.ts +0 -57
  915. package/core/events/events_comment_drag.d.ts +0 -51
  916. package/core/events/events_comment_move.d.ts +0 -93
  917. package/core/events/events_comment_resize.d.ts +0 -68
  918. package/core/events/events_selected.d.ts +0 -53
  919. package/core/events/events_theme_change.d.ts +0 -43
  920. package/core/events/events_toolbox_item_select.d.ts +0 -49
  921. package/core/events/events_trashcan_open.d.ts +0 -47
  922. package/core/events/events_ui_base.d.ts +0 -32
  923. package/core/events/events_var_base.d.ts +0 -46
  924. package/core/events/events_var_create.d.ts +0 -55
  925. package/core/events/events_var_delete.d.ts +0 -50
  926. package/core/events/events_var_rename.d.ts +0 -51
  927. package/core/events/events_var_type_change.d.ts +0 -55
  928. package/core/events/events_viewport.d.ts +0 -67
  929. package/core/events/predicates.d.ts +0 -87
  930. package/core/events/type.d.ts +0 -81
  931. package/core/events/utils.d.ts +0 -211
  932. package/core/events/workspace_events.d.ts +0 -23
  933. package/core/extensions.d.ts +0 -99
  934. package/core/field.d.ts +0 -724
  935. package/core/field_checkbox.d.ts +0 -156
  936. package/core/field_dropdown.d.ts +0 -295
  937. package/core/field_image.d.ts +0 -148
  938. package/core/field_input.d.ts +0 -293
  939. package/core/field_label.d.ts +0 -80
  940. package/core/field_label_serializable.d.ts +0 -50
  941. package/core/field_number.d.ts +0 -194
  942. package/core/field_registry.d.ts +0 -83
  943. package/core/field_textinput.d.ts +0 -78
  944. package/core/field_variable.d.ts +0 -261
  945. package/core/flyout_base.d.ts +0 -455
  946. package/core/flyout_button.d.ts +0 -139
  947. package/core/flyout_horizontal.d.ts +0 -87
  948. package/core/flyout_item.d.ts +0 -26
  949. package/core/flyout_metrics_manager.d.ts +0 -46
  950. package/core/flyout_navigator.d.ts +0 -11
  951. package/core/flyout_separator.d.ts +0 -64
  952. package/core/flyout_vertical.d.ts +0 -88
  953. package/core/focus_manager.d.ts +0 -266
  954. package/core/generator.d.ts +0 -279
  955. package/core/gesture.d.ts +0 -454
  956. package/core/grid.d.ts +0 -124
  957. package/core/icons/comment_icon.d.ts +0 -134
  958. package/core/icons/exceptions.d.ts +0 -17
  959. package/core/icons/icon.d.ts +0 -82
  960. package/core/icons/icon_types.d.ts +0 -25
  961. package/core/icons/mutator_icon.d.ts +0 -96
  962. package/core/icons/registry.d.ts +0 -23
  963. package/core/icons/warning_icon.d.ts +0 -77
  964. package/core/icons.d.ts +0 -14
  965. package/core/inject.d.ts +0 -16
  966. package/core/inputs/align.d.ts +0 -14
  967. package/core/inputs/dummy_input.d.ts +0 -20
  968. package/core/inputs/end_row_input.d.ts +0 -25
  969. package/core/inputs/input.d.ts +0 -147
  970. package/core/inputs/input_types.d.ts +0 -16
  971. package/core/inputs/statement_input.d.ts +0 -22
  972. package/core/inputs/value_input.d.ts +0 -20
  973. package/core/inputs.d.ts +0 -14
  974. package/core/insertion_marker_previewer.d.ts +0 -67
  975. package/core/interfaces/i_autohideable.d.ts +0 -21
  976. package/core/interfaces/i_bounded_element.d.ts +0 -27
  977. package/core/interfaces/i_bubble.d.ts +0 -55
  978. package/core/interfaces/i_collapsible_toolbox_item.d.ts +0 -28
  979. package/core/interfaces/i_comment_icon.d.ts +0 -24
  980. package/core/interfaces/i_component.d.ts +0 -17
  981. package/core/interfaces/i_connection_checker.d.ts +0 -75
  982. package/core/interfaces/i_connection_previewer.d.ts +0 -39
  983. package/core/interfaces/i_contextmenu.d.ts +0 -14
  984. package/core/interfaces/i_copyable.d.ts +0 -30
  985. package/core/interfaces/i_deletable.d.ts +0 -23
  986. package/core/interfaces/i_delete_area.d.ts +0 -25
  987. package/core/interfaces/i_drag_target.d.ts +0 -59
  988. package/core/interfaces/i_draggable.d.ts +0 -56
  989. package/core/interfaces/i_dragger.d.ts +0 -32
  990. package/core/interfaces/i_flyout.d.ts +0 -159
  991. package/core/interfaces/i_flyout_inflater.d.ts +0 -48
  992. package/core/interfaces/i_focusable_node.d.ts +0 -105
  993. package/core/interfaces/i_focusable_tree.d.ts +0 -125
  994. package/core/interfaces/i_has_bubble.d.ts +0 -27
  995. package/core/interfaces/i_icon.d.ts +0 -84
  996. package/core/interfaces/i_keyboard_accessible.d.ts +0 -19
  997. package/core/interfaces/i_legacy_procedure_blocks.d.ts +0 -34
  998. package/core/interfaces/i_metrics_manager.d.ts +0 -129
  999. package/core/interfaces/i_movable.d.ts +0 -17
  1000. package/core/interfaces/i_navigation_policy.d.ts +0 -63
  1001. package/core/interfaces/i_observable.d.ts +0 -21
  1002. package/core/interfaces/i_parameter_model.d.ts +0 -44
  1003. package/core/interfaces/i_paster.d.ts +0 -15
  1004. package/core/interfaces/i_positionable.d.ts +0 -29
  1005. package/core/interfaces/i_procedure_block.d.ts +0 -16
  1006. package/core/interfaces/i_procedure_map.d.ts +0 -16
  1007. package/core/interfaces/i_procedure_model.d.ts +0 -59
  1008. package/core/interfaces/i_registrable.d.ts +0 -11
  1009. package/core/interfaces/i_rendered_element.d.ts +0 -16
  1010. package/core/interfaces/i_selectable.d.ts +0 -26
  1011. package/core/interfaces/i_selectable_toolbox_item.d.ts +0 -51
  1012. package/core/interfaces/i_serializable.d.ts +0 -24
  1013. package/core/interfaces/i_serializer.d.ts +0 -45
  1014. package/core/interfaces/i_styleable.d.ts +0 -23
  1015. package/core/interfaces/i_toolbox.d.ts +0 -102
  1016. package/core/interfaces/i_toolbox_item.d.ts +0 -71
  1017. package/core/interfaces/i_variable_backed_parameter_model.d.ts +0 -17
  1018. package/core/interfaces/i_variable_map.d.ts +0 -48
  1019. package/core/interfaces/i_variable_model.d.ts +0 -36
  1020. package/core/internal_constants.d.ts +0 -34
  1021. package/core/keyboard_nav/block_comment_navigation_policy.d.ts +0 -56
  1022. package/core/keyboard_nav/block_navigation_policy.d.ts +0 -84
  1023. package/core/keyboard_nav/comment_bar_button_navigation_policy.d.ts +0 -56
  1024. package/core/keyboard_nav/comment_editor_navigation_policy.d.ts +0 -34
  1025. package/core/keyboard_nav/connection_navigation_policy.d.ts +0 -67
  1026. package/core/keyboard_nav/field_navigation_policy.d.ts +0 -56
  1027. package/core/keyboard_nav/flyout_button_navigation_policy.d.ts +0 -56
  1028. package/core/keyboard_nav/flyout_navigation_policy.d.ts +0 -65
  1029. package/core/keyboard_nav/flyout_separator_navigation_policy.d.ts +0 -33
  1030. package/core/keyboard_nav/icon_navigation_policy.d.ts +0 -56
  1031. package/core/keyboard_nav/line_cursor.d.ts +0 -187
  1032. package/core/keyboard_nav/marker.d.ts +0 -53
  1033. package/core/keyboard_nav/workspace_comment_navigation_policy.d.ts +0 -56
  1034. package/core/keyboard_nav/workspace_navigation_policy.d.ts +0 -56
  1035. package/core/keyboard_navigation_controller.d.ts +0 -48
  1036. package/core/label_flyout_inflater.d.ts +0 -42
  1037. package/core/layer_manager.d.ts +0 -86
  1038. package/core/layers.d.ts +0 -16
  1039. package/core/main.d.ts +0 -7
  1040. package/core/marker_manager.d.ts +0 -72
  1041. package/core/menu.d.ts +0 -170
  1042. package/core/menu_separator.d.ts +0 -25
  1043. package/core/menuitem.d.ts +0 -139
  1044. package/core/metrics_manager.d.ts +0 -221
  1045. package/core/msg.d.ts +0 -24
  1046. package/core/names.d.ts +0 -139
  1047. package/core/navigator.d.ts +0 -65
  1048. package/core/observable_procedure_map.d.ts +0 -34
  1049. package/core/options.d.ts +0 -148
  1050. package/core/positionable_helpers.d.ts +0 -89
  1051. package/core/procedures.d.ts +0 -108
  1052. package/core/registry.d.ts +0 -158
  1053. package/core/render_management.d.ts +0 -34
  1054. package/core/rendered_connection.d.ts +0 -263
  1055. package/core/renderers/common/block_rendering.d.ts +0 -63
  1056. package/core/renderers/common/constants.d.ts +0 -454
  1057. package/core/renderers/common/drawer.d.ts +0 -156
  1058. package/core/renderers/common/i_path_object.d.ts +0 -88
  1059. package/core/renderers/common/info.d.ts +0 -201
  1060. package/core/renderers/common/path_object.d.ts +0 -130
  1061. package/core/renderers/common/renderer.d.ts +0 -141
  1062. package/core/renderers/geras/constants.d.ts +0 -22
  1063. package/core/renderers/geras/drawer.d.ts +0 -44
  1064. package/core/renderers/geras/geras.d.ts +0 -17
  1065. package/core/renderers/geras/highlight_constants.d.ts +0 -100
  1066. package/core/renderers/geras/highlighter.d.ts +0 -96
  1067. package/core/renderers/geras/info.d.ts +0 -45
  1068. package/core/renderers/geras/measurables/inline_input.d.ts +0 -22
  1069. package/core/renderers/geras/measurables/statement_input.d.ts +0 -22
  1070. package/core/renderers/geras/path_object.d.ts +0 -42
  1071. package/core/renderers/geras/renderer.d.ts +0 -77
  1072. package/core/renderers/measurables/base.d.ts +0 -26
  1073. package/core/renderers/measurables/bottom_row.d.ts +0 -58
  1074. package/core/renderers/measurables/connection.d.ts +0 -25
  1075. package/core/renderers/measurables/external_value_input.d.ts +0 -25
  1076. package/core/renderers/measurables/field.d.ts +0 -28
  1077. package/core/renderers/measurables/hat.d.ts +0 -19
  1078. package/core/renderers/measurables/icon.d.ts +0 -25
  1079. package/core/renderers/measurables/in_row_spacer.d.ts +0 -20
  1080. package/core/renderers/measurables/inline_input.d.ts +0 -22
  1081. package/core/renderers/measurables/input_connection.d.ts +0 -28
  1082. package/core/renderers/measurables/input_row.d.ts +0 -26
  1083. package/core/renderers/measurables/jagged_edge.d.ts +0 -19
  1084. package/core/renderers/measurables/next_connection.d.ts +0 -22
  1085. package/core/renderers/measurables/output_connection.d.ts +0 -24
  1086. package/core/renderers/measurables/previous_connection.d.ts +0 -22
  1087. package/core/renderers/measurables/round_corner.d.ts +0 -20
  1088. package/core/renderers/measurables/row.d.ts +0 -124
  1089. package/core/renderers/measurables/spacer_row.d.ts +0 -27
  1090. package/core/renderers/measurables/square_corner.d.ts +0 -20
  1091. package/core/renderers/measurables/statement_input.d.ts +0 -21
  1092. package/core/renderers/measurables/top_row.d.ts +0 -53
  1093. package/core/renderers/measurables/types.d.ts +0 -258
  1094. package/core/renderers/thrasos/info.d.ts +0 -37
  1095. package/core/renderers/thrasos/renderer.d.ts +0 -28
  1096. package/core/renderers/thrasos/thrasos.d.ts +0 -10
  1097. package/core/renderers/zelos/constants.d.ts +0 -165
  1098. package/core/renderers/zelos/drawer.d.ts +0 -51
  1099. package/core/renderers/zelos/info.d.ts +0 -89
  1100. package/core/renderers/zelos/measurables/bottom_row.d.ts +0 -26
  1101. package/core/renderers/zelos/measurables/inputs.d.ts +0 -21
  1102. package/core/renderers/zelos/measurables/row_elements.d.ts +0 -20
  1103. package/core/renderers/zelos/measurables/top_row.d.ts +0 -28
  1104. package/core/renderers/zelos/path_object.d.ts +0 -76
  1105. package/core/renderers/zelos/renderer.d.ts +0 -64
  1106. package/core/renderers/zelos/zelos.d.ts +0 -17
  1107. package/core/scrollbar.d.ts +0 -348
  1108. package/core/scrollbar_pair.d.ts +0 -121
  1109. package/core/separator_flyout_inflater.d.ts +0 -57
  1110. package/core/serialization/blocks.d.ts +0 -138
  1111. package/core/serialization/exceptions.d.ts +0 -81
  1112. package/core/serialization/priorities.d.ts +0 -20
  1113. package/core/serialization/procedures.d.ts +0 -97
  1114. package/core/serialization/registry.d.ts +0 -21
  1115. package/core/serialization/variables.d.ts +0 -38
  1116. package/core/serialization/workspace_comments.d.ts +0 -45
  1117. package/core/serialization/workspaces.d.ts +0 -29
  1118. package/core/serialization.d.ts +0 -19
  1119. package/core/shortcut_items.d.ts +0 -54
  1120. package/core/shortcut_registry.d.ts +0 -236
  1121. package/core/sprites.d.ts +0 -15
  1122. package/core/theme/classic.d.ts +0 -12
  1123. package/core/theme/themes.d.ts +0 -9
  1124. package/core/theme/zelos.d.ts +0 -11
  1125. package/core/theme.d.ts +0 -151
  1126. package/core/theme_manager.d.ts +0 -92
  1127. package/core/toast.d.ts +0 -74
  1128. package/core/toolbox/category.d.ts +0 -265
  1129. package/core/toolbox/collapsible_category.d.ts +0 -99
  1130. package/core/toolbox/separator.d.ts +0 -40
  1131. package/core/toolbox/toolbox.d.ts +0 -417
  1132. package/core/toolbox/toolbox_item.d.ts +0 -109
  1133. package/core/tooltip.d.ts +0 -118
  1134. package/core/touch.d.ts +0 -72
  1135. package/core/trashcan.d.ts +0 -212
  1136. package/core/utils/aria.d.ts +0 -69
  1137. package/core/utils/array.d.ts +0 -15
  1138. package/core/utils/colour.d.ts +0 -102
  1139. package/core/utils/coordinate.d.ts +0 -87
  1140. package/core/utils/deprecation.d.ts +0 -18
  1141. package/core/utils/dom.d.ts +0 -154
  1142. package/core/utils/drag.d.ts +0 -33
  1143. package/core/utils/focusable_tree_traverser.d.ts +0 -53
  1144. package/core/utils/idgenerator.d.ts +0 -33
  1145. package/core/utils/keycodes.d.ts +0 -136
  1146. package/core/utils/math.d.ts +0 -31
  1147. package/core/utils/metrics.d.ts +0 -64
  1148. package/core/utils/object.d.ts +0 -17
  1149. package/core/utils/parsing.d.ts +0 -52
  1150. package/core/utils/rect.d.ts +0 -82
  1151. package/core/utils/size.d.ts +0 -44
  1152. package/core/utils/string.d.ts +0 -46
  1153. package/core/utils/style.d.ts +0 -89
  1154. package/core/utils/svg.d.ts +0 -75
  1155. package/core/utils/svg_math.d.ts +0 -64
  1156. package/core/utils/svg_paths.d.ts +0 -103
  1157. package/core/utils/toolbox.d.ts +0 -180
  1158. package/core/utils/useragent.d.ts +0 -14
  1159. package/core/utils/xml.d.ts +0 -96
  1160. package/core/utils.d.ts +0 -31
  1161. package/core/variable_map.d.ts +0 -164
  1162. package/core/variable_model.d.ts +0 -73
  1163. package/core/variables.d.ts +0 -238
  1164. package/core/variables_dynamic.d.ts +0 -56
  1165. package/core/widgetdiv.d.ts +0 -87
  1166. package/core/workspace.d.ts +0 -482
  1167. package/core/workspace_audio.d.ts +0 -61
  1168. package/core/workspace_dragger.d.ts +0 -54
  1169. package/core/workspace_svg.d.ts +0 -1103
  1170. package/core/xml.d.ts +0 -127
  1171. package/core/zoom_controls.d.ts +0 -134
  1172. package/core.js +0 -4
  1173. package/dart.js +0 -4
  1174. package/dart.mjs +0 -6
  1175. package/dart_compressed.js +0 -330
  1176. package/dart_compressed.js.map +0 -1
  1177. package/generators/dart/dart_generator.d.ts +0 -104
  1178. package/generators/dart/lists.d.ts +0 -21
  1179. package/generators/dart/logic.d.ts +0 -20
  1180. package/generators/dart/loops.d.ts +0 -14
  1181. package/generators/dart/math.d.ts +0 -26
  1182. package/generators/dart/procedures.d.ts +0 -14
  1183. package/generators/dart/text.d.ts +0 -25
  1184. package/generators/dart/variables.d.ts +0 -14
  1185. package/generators/dart/variables_dynamic.d.ts +0 -10
  1186. package/generators/dart.d.ts +0 -18
  1187. package/generators/javascript/javascript_generator.d.ts +0 -123
  1188. package/generators/javascript/lists.d.ts +0 -21
  1189. package/generators/javascript/logic.d.ts +0 -20
  1190. package/generators/javascript/loops.d.ts +0 -14
  1191. package/generators/javascript/math.d.ts +0 -26
  1192. package/generators/javascript/procedures.d.ts +0 -14
  1193. package/generators/javascript/text.d.ts +0 -25
  1194. package/generators/javascript/variables.d.ts +0 -14
  1195. package/generators/javascript/variables_dynamic.d.ts +0 -10
  1196. package/generators/javascript.d.ts +0 -18
  1197. package/generators/lua/lists.d.ts +0 -21
  1198. package/generators/lua/logic.d.ts +0 -20
  1199. package/generators/lua/loops.d.ts +0 -14
  1200. package/generators/lua/lua_generator.d.ts +0 -91
  1201. package/generators/lua/math.d.ts +0 -26
  1202. package/generators/lua/procedures.d.ts +0 -14
  1203. package/generators/lua/text.d.ts +0 -25
  1204. package/generators/lua/variables.d.ts +0 -14
  1205. package/generators/lua/variables_dynamic.d.ts +0 -10
  1206. package/generators/lua.d.ts +0 -12
  1207. package/generators/php/lists.d.ts +0 -21
  1208. package/generators/php/logic.d.ts +0 -20
  1209. package/generators/php/loops.d.ts +0 -14
  1210. package/generators/php/math.d.ts +0 -26
  1211. package/generators/php/php_generator.d.ts +0 -122
  1212. package/generators/php/procedures.d.ts +0 -14
  1213. package/generators/php/text.d.ts +0 -25
  1214. package/generators/php/variables.d.ts +0 -14
  1215. package/generators/php/variables_dynamic.d.ts +0 -10
  1216. package/generators/php.d.ts +0 -13
  1217. package/generators/python/lists.d.ts +0 -21
  1218. package/generators/python/logic.d.ts +0 -20
  1219. package/generators/python/loops.d.ts +0 -14
  1220. package/generators/python/math.d.ts +0 -26
  1221. package/generators/python/procedures.d.ts +0 -14
  1222. package/generators/python/python_generator.d.ts +0 -111
  1223. package/generators/python/text.d.ts +0 -25
  1224. package/generators/python/variables.d.ts +0 -14
  1225. package/generators/python/variables_dynamic.d.ts +0 -10
  1226. package/generators/python.d.ts +0 -13
  1227. package/index.js +0 -36
  1228. package/index.mjs +0 -163
  1229. package/javascript.js +0 -4
  1230. package/javascript.mjs +0 -6
  1231. package/javascript_compressed.js +0 -264
  1232. package/javascript_compressed.js.map +0 -1
  1233. package/lua.js +0 -4
  1234. package/lua.mjs +0 -6
  1235. package/lua_compressed.js +0 -373
  1236. package/lua_compressed.js.map +0 -1
  1237. package/media/click.ogg +0 -0
  1238. package/media/click.wav +0 -0
  1239. package/media/delete.ogg +0 -0
  1240. package/media/delete.wav +0 -0
  1241. package/media/disconnect.ogg +0 -0
  1242. package/media/disconnect.wav +0 -0
  1243. package/msg/ab.js +0 -465
  1244. package/msg/ab.mjs +0 -446
  1245. package/msg/ace.js +0 -465
  1246. package/msg/ace.mjs +0 -446
  1247. package/msg/af.js +0 -465
  1248. package/msg/af.mjs +0 -446
  1249. package/msg/am.js +0 -465
  1250. package/msg/am.mjs +0 -446
  1251. package/msg/ar.js +0 -465
  1252. package/msg/ar.mjs +0 -446
  1253. package/msg/ast.js +0 -465
  1254. package/msg/ast.mjs +0 -446
  1255. package/msg/az.js +0 -465
  1256. package/msg/az.mjs +0 -446
  1257. package/msg/ba.js +0 -465
  1258. package/msg/ba.mjs +0 -446
  1259. package/msg/bcc.js +0 -465
  1260. package/msg/bcc.mjs +0 -446
  1261. package/msg/be-tarask.js +0 -465
  1262. package/msg/be-tarask.mjs +0 -446
  1263. package/msg/be.js +0 -465
  1264. package/msg/be.mjs +0 -446
  1265. package/msg/bg.js +0 -465
  1266. package/msg/bg.mjs +0 -446
  1267. package/msg/bn.js +0 -465
  1268. package/msg/bn.mjs +0 -446
  1269. package/msg/br.js +0 -465
  1270. package/msg/br.mjs +0 -446
  1271. package/msg/bs.js +0 -465
  1272. package/msg/bs.mjs +0 -446
  1273. package/msg/ca.js +0 -465
  1274. package/msg/ca.mjs +0 -446
  1275. package/msg/cdo.js +0 -465
  1276. package/msg/cdo.mjs +0 -446
  1277. package/msg/ce.js +0 -465
  1278. package/msg/ce.mjs +0 -446
  1279. package/msg/cs.js +0 -465
  1280. package/msg/cs.mjs +0 -446
  1281. package/msg/da.js +0 -465
  1282. package/msg/da.mjs +0 -446
  1283. package/msg/de.js +0 -465
  1284. package/msg/de.mjs +0 -446
  1285. package/msg/diq.js +0 -465
  1286. package/msg/diq.mjs +0 -446
  1287. package/msg/dtp.js +0 -465
  1288. package/msg/dtp.mjs +0 -446
  1289. package/msg/dty.js +0 -465
  1290. package/msg/dty.mjs +0 -446
  1291. package/msg/ee.js +0 -465
  1292. package/msg/ee.mjs +0 -446
  1293. package/msg/el.js +0 -465
  1294. package/msg/el.mjs +0 -446
  1295. package/msg/en-gb.js +0 -465
  1296. package/msg/en-gb.mjs +0 -446
  1297. package/msg/en.js +0 -465
  1298. package/msg/en.mjs +0 -446
  1299. package/msg/eo.js +0 -465
  1300. package/msg/eo.mjs +0 -446
  1301. package/msg/es.js +0 -465
  1302. package/msg/es.mjs +0 -446
  1303. package/msg/et.js +0 -465
  1304. package/msg/et.mjs +0 -446
  1305. package/msg/eu.js +0 -465
  1306. package/msg/eu.mjs +0 -446
  1307. package/msg/fa.js +0 -465
  1308. package/msg/fa.mjs +0 -446
  1309. package/msg/fi.js +0 -465
  1310. package/msg/fi.mjs +0 -446
  1311. package/msg/fo.js +0 -465
  1312. package/msg/fo.mjs +0 -446
  1313. package/msg/fr.js +0 -465
  1314. package/msg/fr.mjs +0 -446
  1315. package/msg/frr.js +0 -465
  1316. package/msg/frr.mjs +0 -446
  1317. package/msg/gl.js +0 -465
  1318. package/msg/gl.mjs +0 -446
  1319. package/msg/gn.js +0 -465
  1320. package/msg/gn.mjs +0 -446
  1321. package/msg/gor.js +0 -465
  1322. package/msg/gor.mjs +0 -446
  1323. package/msg/ha.js +0 -465
  1324. package/msg/ha.mjs +0 -446
  1325. package/msg/hak.js +0 -465
  1326. package/msg/hak.mjs +0 -446
  1327. package/msg/he.js +0 -465
  1328. package/msg/he.mjs +0 -446
  1329. package/msg/hi.js +0 -465
  1330. package/msg/hi.mjs +0 -446
  1331. package/msg/hr.js +0 -465
  1332. package/msg/hr.mjs +0 -446
  1333. package/msg/hrx.js +0 -465
  1334. package/msg/hrx.mjs +0 -446
  1335. package/msg/hsb.js +0 -465
  1336. package/msg/hsb.mjs +0 -446
  1337. package/msg/hu.js +0 -465
  1338. package/msg/hu.mjs +0 -446
  1339. package/msg/hy.js +0 -465
  1340. package/msg/hy.mjs +0 -446
  1341. package/msg/ia.js +0 -465
  1342. package/msg/ia.mjs +0 -446
  1343. package/msg/id.js +0 -465
  1344. package/msg/id.mjs +0 -446
  1345. package/msg/ig.js +0 -465
  1346. package/msg/ig.mjs +0 -446
  1347. package/msg/inh.js +0 -465
  1348. package/msg/inh.mjs +0 -446
  1349. package/msg/is.js +0 -465
  1350. package/msg/is.mjs +0 -446
  1351. package/msg/it.js +0 -465
  1352. package/msg/it.mjs +0 -446
  1353. package/msg/ja.js +0 -465
  1354. package/msg/ja.mjs +0 -446
  1355. package/msg/ka.js +0 -465
  1356. package/msg/ka.mjs +0 -446
  1357. package/msg/kab.js +0 -465
  1358. package/msg/kab.mjs +0 -446
  1359. package/msg/kbd-cyrl.js +0 -465
  1360. package/msg/kbd-cyrl.mjs +0 -446
  1361. package/msg/km.js +0 -465
  1362. package/msg/km.mjs +0 -446
  1363. package/msg/kn.js +0 -465
  1364. package/msg/kn.mjs +0 -446
  1365. package/msg/ko.js +0 -465
  1366. package/msg/ko.mjs +0 -446
  1367. package/msg/ksh.js +0 -465
  1368. package/msg/ksh.mjs +0 -446
  1369. package/msg/ku-latn.js +0 -465
  1370. package/msg/ku-latn.mjs +0 -446
  1371. package/msg/ky.js +0 -465
  1372. package/msg/ky.mjs +0 -446
  1373. package/msg/la.js +0 -465
  1374. package/msg/la.mjs +0 -446
  1375. package/msg/lb.js +0 -465
  1376. package/msg/lb.mjs +0 -446
  1377. package/msg/lki.js +0 -465
  1378. package/msg/lki.mjs +0 -446
  1379. package/msg/lo.js +0 -465
  1380. package/msg/lo.mjs +0 -446
  1381. package/msg/lrc.js +0 -465
  1382. package/msg/lrc.mjs +0 -446
  1383. package/msg/lt.js +0 -465
  1384. package/msg/lt.mjs +0 -446
  1385. package/msg/lv.js +0 -465
  1386. package/msg/lv.mjs +0 -446
  1387. package/msg/mg.js +0 -465
  1388. package/msg/mg.mjs +0 -446
  1389. package/msg/mk.js +0 -465
  1390. package/msg/mk.mjs +0 -446
  1391. package/msg/ml.js +0 -465
  1392. package/msg/ml.mjs +0 -446
  1393. package/msg/mnw.js +0 -465
  1394. package/msg/mnw.mjs +0 -446
  1395. package/msg/ms.js +0 -465
  1396. package/msg/ms.mjs +0 -446
  1397. package/msg/my.js +0 -465
  1398. package/msg/my.mjs +0 -446
  1399. package/msg/mzn.js +0 -465
  1400. package/msg/mzn.mjs +0 -446
  1401. package/msg/nb.js +0 -465
  1402. package/msg/nb.mjs +0 -446
  1403. package/msg/ne.js +0 -465
  1404. package/msg/ne.mjs +0 -446
  1405. package/msg/nl.js +0 -465
  1406. package/msg/nl.mjs +0 -446
  1407. package/msg/oc.js +0 -465
  1408. package/msg/oc.mjs +0 -446
  1409. package/msg/olo.js +0 -465
  1410. package/msg/olo.mjs +0 -446
  1411. package/msg/pa.js +0 -465
  1412. package/msg/pa.mjs +0 -446
  1413. package/msg/pl.js +0 -465
  1414. package/msg/pl.mjs +0 -446
  1415. package/msg/pms.js +0 -465
  1416. package/msg/pms.mjs +0 -446
  1417. package/msg/ps.js +0 -465
  1418. package/msg/ps.mjs +0 -446
  1419. package/msg/pt-br.js +0 -465
  1420. package/msg/pt-br.mjs +0 -446
  1421. package/msg/pt.js +0 -465
  1422. package/msg/pt.mjs +0 -446
  1423. package/msg/ro.js +0 -465
  1424. package/msg/ro.mjs +0 -446
  1425. package/msg/ru.js +0 -465
  1426. package/msg/ru.mjs +0 -446
  1427. package/msg/sc.js +0 -465
  1428. package/msg/sc.mjs +0 -446
  1429. package/msg/sco.js +0 -465
  1430. package/msg/sco.mjs +0 -446
  1431. package/msg/sd.js +0 -465
  1432. package/msg/sd.mjs +0 -446
  1433. package/msg/shn.js +0 -465
  1434. package/msg/shn.mjs +0 -446
  1435. package/msg/si.js +0 -465
  1436. package/msg/si.mjs +0 -446
  1437. package/msg/sk.js +0 -465
  1438. package/msg/sk.mjs +0 -446
  1439. package/msg/skr-arab.js +0 -465
  1440. package/msg/skr-arab.mjs +0 -446
  1441. package/msg/sl.js +0 -465
  1442. package/msg/sl.mjs +0 -446
  1443. package/msg/smn.js +0 -465
  1444. package/msg/smn.mjs +0 -446
  1445. package/msg/sq.js +0 -465
  1446. package/msg/sq.mjs +0 -446
  1447. package/msg/sr-latn.js +0 -465
  1448. package/msg/sr-latn.mjs +0 -446
  1449. package/msg/sr.js +0 -465
  1450. package/msg/sr.mjs +0 -446
  1451. package/msg/sv.js +0 -465
  1452. package/msg/sv.mjs +0 -446
  1453. package/msg/sw.js +0 -465
  1454. package/msg/sw.mjs +0 -446
  1455. package/msg/ta.js +0 -465
  1456. package/msg/ta.mjs +0 -446
  1457. package/msg/tcy.js +0 -465
  1458. package/msg/tcy.mjs +0 -446
  1459. package/msg/tdd.js +0 -465
  1460. package/msg/tdd.mjs +0 -446
  1461. package/msg/te.js +0 -465
  1462. package/msg/te.mjs +0 -446
  1463. package/msg/th.js +0 -465
  1464. package/msg/th.mjs +0 -446
  1465. package/msg/ti.js +0 -465
  1466. package/msg/ti.mjs +0 -446
  1467. package/msg/tl.js +0 -465
  1468. package/msg/tl.mjs +0 -446
  1469. package/msg/tlh.js +0 -465
  1470. package/msg/tlh.mjs +0 -446
  1471. package/msg/tr.js +0 -465
  1472. package/msg/tr.mjs +0 -446
  1473. package/msg/ug-arab.js +0 -465
  1474. package/msg/ug-arab.mjs +0 -446
  1475. package/msg/uk.js +0 -465
  1476. package/msg/uk.mjs +0 -446
  1477. package/msg/ur.js +0 -465
  1478. package/msg/ur.mjs +0 -446
  1479. package/msg/uz.js +0 -465
  1480. package/msg/uz.mjs +0 -446
  1481. package/msg/vi.js +0 -465
  1482. package/msg/vi.mjs +0 -446
  1483. package/msg/xmf.js +0 -465
  1484. package/msg/xmf.mjs +0 -446
  1485. package/msg/yo.js +0 -465
  1486. package/msg/yo.mjs +0 -446
  1487. package/msg/zgh.js +0 -465
  1488. package/msg/zgh.mjs +0 -446
  1489. package/msg/zh-hans.js +0 -465
  1490. package/msg/zh-hans.mjs +0 -446
  1491. package/msg/zh-hant.js +0 -465
  1492. package/msg/zh-hant.mjs +0 -446
  1493. package/php.js +0 -4
  1494. package/php.mjs +0 -6
  1495. package/php_compressed.js +0 -283
  1496. package/php_compressed.js.map +0 -1
  1497. package/python.js +0 -4
  1498. package/python.mjs +0 -6
  1499. package/python_compressed.js +0 -208
  1500. package/python_compressed.js.map +0 -1
  1501. /package/{README.md → scripts/package/README.md} +0 -0
  1502. /package/{core-node.js → scripts/package/core-node.js} +0 -0
  1503. /package/{blocks.d.ts → typings/blocks.d.ts} +0 -0
  1504. /package/{core.d.ts → typings/core.d.ts} +0 -0
  1505. /package/{dart.d.ts → typings/dart.d.ts} +0 -0
  1506. /package/{index.d.ts → typings/index.d.ts} +0 -0
  1507. /package/{javascript.d.ts → typings/javascript.d.ts} +0 -0
  1508. /package/{lua.d.ts → typings/lua.d.ts} +0 -0
  1509. /package/{msg → typings/msg}/ab.d.ts +0 -0
  1510. /package/{msg → typings/msg}/ace.d.ts +0 -0
  1511. /package/{msg → typings/msg}/af.d.ts +0 -0
  1512. /package/{msg → typings/msg}/am.d.ts +0 -0
  1513. /package/{msg → typings/msg}/ar.d.ts +0 -0
  1514. /package/{msg → typings/msg}/ast.d.ts +0 -0
  1515. /package/{msg → typings/msg}/az.d.ts +0 -0
  1516. /package/{msg → typings/msg}/ba.d.ts +0 -0
  1517. /package/{msg → typings/msg}/bcc.d.ts +0 -0
  1518. /package/{msg → typings/msg}/be-tarask.d.ts +0 -0
  1519. /package/{msg → typings/msg}/be.d.ts +0 -0
  1520. /package/{msg → typings/msg}/bg.d.ts +0 -0
  1521. /package/{msg → typings/msg}/bn.d.ts +0 -0
  1522. /package/{msg → typings/msg}/br.d.ts +0 -0
  1523. /package/{msg → typings/msg}/bs.d.ts +0 -0
  1524. /package/{msg → typings/msg}/ca.d.ts +0 -0
  1525. /package/{msg → typings/msg}/cdo.d.ts +0 -0
  1526. /package/{msg → typings/msg}/ce.d.ts +0 -0
  1527. /package/{msg → typings/msg}/cs.d.ts +0 -0
  1528. /package/{msg → typings/msg}/da.d.ts +0 -0
  1529. /package/{msg → typings/msg}/de.d.ts +0 -0
  1530. /package/{msg → typings/msg}/diq.d.ts +0 -0
  1531. /package/{msg → typings/msg}/dtp.d.ts +0 -0
  1532. /package/{msg → typings/msg}/dty.d.ts +0 -0
  1533. /package/{msg → typings/msg}/ee.d.ts +0 -0
  1534. /package/{msg → typings/msg}/el.d.ts +0 -0
  1535. /package/{msg → typings/msg}/en-gb.d.ts +0 -0
  1536. /package/{msg → typings/msg}/en.d.ts +0 -0
  1537. /package/{msg → typings/msg}/eo.d.ts +0 -0
  1538. /package/{msg → typings/msg}/es.d.ts +0 -0
  1539. /package/{msg → typings/msg}/et.d.ts +0 -0
  1540. /package/{msg → typings/msg}/eu.d.ts +0 -0
  1541. /package/{msg → typings/msg}/fa.d.ts +0 -0
  1542. /package/{msg → typings/msg}/fi.d.ts +0 -0
  1543. /package/{msg → typings/msg}/fo.d.ts +0 -0
  1544. /package/{msg → typings/msg}/fr.d.ts +0 -0
  1545. /package/{msg → typings/msg}/frr.d.ts +0 -0
  1546. /package/{msg → typings/msg}/gl.d.ts +0 -0
  1547. /package/{msg → typings/msg}/gn.d.ts +0 -0
  1548. /package/{msg → typings/msg}/gor.d.ts +0 -0
  1549. /package/{msg → typings/msg}/ha.d.ts +0 -0
  1550. /package/{msg → typings/msg}/hak.d.ts +0 -0
  1551. /package/{msg → typings/msg}/he.d.ts +0 -0
  1552. /package/{msg → typings/msg}/hi.d.ts +0 -0
  1553. /package/{msg → typings/msg}/hr.d.ts +0 -0
  1554. /package/{msg → typings/msg}/hrx.d.ts +0 -0
  1555. /package/{msg → typings/msg}/hsb.d.ts +0 -0
  1556. /package/{msg → typings/msg}/hu.d.ts +0 -0
  1557. /package/{msg → typings/msg}/hy.d.ts +0 -0
  1558. /package/{msg → typings/msg}/ia.d.ts +0 -0
  1559. /package/{msg → typings/msg}/id.d.ts +0 -0
  1560. /package/{msg → typings/msg}/ig.d.ts +0 -0
  1561. /package/{msg → typings/msg}/inh.d.ts +0 -0
  1562. /package/{msg → typings/msg}/is.d.ts +0 -0
  1563. /package/{msg → typings/msg}/it.d.ts +0 -0
  1564. /package/{msg → typings/msg}/ja.d.ts +0 -0
  1565. /package/{msg → typings/msg}/ka.d.ts +0 -0
  1566. /package/{msg → typings/msg}/kab.d.ts +0 -0
  1567. /package/{msg → typings/msg}/kbd-cyrl.d.ts +0 -0
  1568. /package/{msg → typings/msg}/km.d.ts +0 -0
  1569. /package/{msg → typings/msg}/kn.d.ts +0 -0
  1570. /package/{msg → typings/msg}/ko.d.ts +0 -0
  1571. /package/{msg → typings/msg}/ksh.d.ts +0 -0
  1572. /package/{msg → typings/msg}/ku-latn.d.ts +0 -0
  1573. /package/{msg → typings/msg}/ky.d.ts +0 -0
  1574. /package/{msg → typings/msg}/la.d.ts +0 -0
  1575. /package/{msg → typings/msg}/lb.d.ts +0 -0
  1576. /package/{msg → typings/msg}/lki.d.ts +0 -0
  1577. /package/{msg → typings/msg}/lo.d.ts +0 -0
  1578. /package/{msg → typings/msg}/lrc.d.ts +0 -0
  1579. /package/{msg → typings/msg}/lt.d.ts +0 -0
  1580. /package/{msg → typings/msg}/lv.d.ts +0 -0
  1581. /package/{msg → typings/msg}/mg.d.ts +0 -0
  1582. /package/{msg → typings/msg}/mk.d.ts +0 -0
  1583. /package/{msg → typings/msg}/ml.d.ts +0 -0
  1584. /package/{msg → typings/msg}/mnw.d.ts +0 -0
  1585. /package/{msg → typings/msg}/ms.d.ts +0 -0
  1586. /package/{msg → typings/msg}/msg.d.ts +0 -0
  1587. /package/{msg → typings/msg}/my.d.ts +0 -0
  1588. /package/{msg → typings/msg}/mzn.d.ts +0 -0
  1589. /package/{msg → typings/msg}/nb.d.ts +0 -0
  1590. /package/{msg → typings/msg}/ne.d.ts +0 -0
  1591. /package/{msg → typings/msg}/nl.d.ts +0 -0
  1592. /package/{msg → typings/msg}/oc.d.ts +0 -0
  1593. /package/{msg → typings/msg}/olo.d.ts +0 -0
  1594. /package/{msg → typings/msg}/pa.d.ts +0 -0
  1595. /package/{msg → typings/msg}/pl.d.ts +0 -0
  1596. /package/{msg → typings/msg}/pms.d.ts +0 -0
  1597. /package/{msg → typings/msg}/ps.d.ts +0 -0
  1598. /package/{msg → typings/msg}/pt-br.d.ts +0 -0
  1599. /package/{msg → typings/msg}/pt.d.ts +0 -0
  1600. /package/{msg → typings/msg}/ro.d.ts +0 -0
  1601. /package/{msg → typings/msg}/ru.d.ts +0 -0
  1602. /package/{msg → typings/msg}/sc.d.ts +0 -0
  1603. /package/{msg → typings/msg}/sco.d.ts +0 -0
  1604. /package/{msg → typings/msg}/sd.d.ts +0 -0
  1605. /package/{msg → typings/msg}/shn.d.ts +0 -0
  1606. /package/{msg → typings/msg}/si.d.ts +0 -0
  1607. /package/{msg → typings/msg}/sk.d.ts +0 -0
  1608. /package/{msg → typings/msg}/skr-arab.d.ts +0 -0
  1609. /package/{msg → typings/msg}/sl.d.ts +0 -0
  1610. /package/{msg → typings/msg}/smn.d.ts +0 -0
  1611. /package/{msg → typings/msg}/sq.d.ts +0 -0
  1612. /package/{msg → typings/msg}/sr-latn.d.ts +0 -0
  1613. /package/{msg → typings/msg}/sr.d.ts +0 -0
  1614. /package/{msg → typings/msg}/sv.d.ts +0 -0
  1615. /package/{msg → typings/msg}/sw.d.ts +0 -0
  1616. /package/{msg → typings/msg}/ta.d.ts +0 -0
  1617. /package/{msg → typings/msg}/tcy.d.ts +0 -0
  1618. /package/{msg → typings/msg}/tdd.d.ts +0 -0
  1619. /package/{msg → typings/msg}/te.d.ts +0 -0
  1620. /package/{msg → typings/msg}/th.d.ts +0 -0
  1621. /package/{msg → typings/msg}/ti.d.ts +0 -0
  1622. /package/{msg → typings/msg}/tl.d.ts +0 -0
  1623. /package/{msg → typings/msg}/tlh.d.ts +0 -0
  1624. /package/{msg → typings/msg}/tr.d.ts +0 -0
  1625. /package/{msg → typings/msg}/ug-arab.d.ts +0 -0
  1626. /package/{msg → typings/msg}/uk.d.ts +0 -0
  1627. /package/{msg → typings/msg}/ur.d.ts +0 -0
  1628. /package/{msg → typings/msg}/uz.d.ts +0 -0
  1629. /package/{msg → typings/msg}/vi.d.ts +0 -0
  1630. /package/{msg → typings/msg}/xmf.d.ts +0 -0
  1631. /package/{msg → typings/msg}/yo.d.ts +0 -0
  1632. /package/{msg → typings/msg}/zgh.d.ts +0 -0
  1633. /package/{msg → typings/msg}/zh-hans.d.ts +0 -0
  1634. /package/{msg → typings/msg}/zh-hant.d.ts +0 -0
  1635. /package/{php.d.ts → typings/php.d.ts} +0 -0
  1636. /package/{python.d.ts → typings/python.d.ts} +0 -0
@@ -0,0 +1,1190 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2017 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * The class representing an in-progress gesture, e.g. a drag,
9
+ * tap, or pinch to zoom.
10
+ *
11
+ * @class
12
+ */
13
+ // Former goog.module ID: Blockly.Gesture
14
+
15
+ // Unused import preserved for side-effects. Remove if unneeded.
16
+ import './events/events_click.js';
17
+
18
+ import * as blockAnimations from './block_animations.js';
19
+ import type {BlockSvg} from './block_svg.js';
20
+ import * as browserEvents from './browser_events.js';
21
+ import {RenderedWorkspaceComment} from './comments.js';
22
+ import * as common from './common.js';
23
+ import {config} from './config.js';
24
+ import * as dropDownDiv from './dropdowndiv.js';
25
+ import {EventType} from './events/type.js';
26
+ import * as eventUtils from './events/utils.js';
27
+ import type {Field} from './field.js';
28
+ import {getFocusManager} from './focus_manager.js';
29
+ import type {IBubble} from './interfaces/i_bubble.js';
30
+ import {hasContextMenu} from './interfaces/i_contextmenu.js';
31
+ import {IDraggable, isDraggable} from './interfaces/i_draggable.js';
32
+ import {IDragger} from './interfaces/i_dragger.js';
33
+ import type {IFlyout} from './interfaces/i_flyout.js';
34
+ import type {IIcon} from './interfaces/i_icon.js';
35
+ import {keyboardNavigationController} from './keyboard_navigation_controller.js';
36
+ import * as registry from './registry.js';
37
+ import * as Tooltip from './tooltip.js';
38
+ import * as Touch from './touch.js';
39
+ import {Coordinate} from './utils/coordinate.js';
40
+ import {WorkspaceDragger} from './workspace_dragger.js';
41
+ import type {WorkspaceSvg} from './workspace_svg.js';
42
+
43
+ /**
44
+ * Note: In this file "start" refers to pointerdown
45
+ * events. "End" refers to pointerup events.
46
+ */
47
+
48
+ /** A multiplier used to convert the gesture scale to a zoom in delta. */
49
+ const ZOOM_IN_MULTIPLIER = 5;
50
+
51
+ /** A multiplier used to convert the gesture scale to a zoom out delta. */
52
+ const ZOOM_OUT_MULTIPLIER = 6;
53
+
54
+ /**
55
+ * Class for one gesture.
56
+ */
57
+ export class Gesture {
58
+ /**
59
+ * The position of the pointer when the gesture started. Units are CSS
60
+ * pixels, with (0, 0) at the top left of the browser window (pointer event
61
+ * clientX/Y).
62
+ */
63
+ private mouseDownXY = new Coordinate(0, 0);
64
+ private currentDragDeltaXY: Coordinate;
65
+
66
+ /**
67
+ * The bubble that the gesture started on, or null if it did not start on a
68
+ * bubble.
69
+ */
70
+ private startBubble: IBubble | null = null;
71
+
72
+ /**
73
+ * The field that the gesture started on, or null if it did not start on a
74
+ * field.
75
+ */
76
+ private startField: Field | null = null;
77
+
78
+ /**
79
+ * The icon that the gesture started on, or null if it did not start on an
80
+ * icon.
81
+ */
82
+ private startIcon: IIcon | null = null;
83
+
84
+ /**
85
+ * The block that the gesture started on, or null if it did not start on a
86
+ * block.
87
+ */
88
+ private startBlock: BlockSvg | null = null;
89
+
90
+ /**
91
+ * The comment that the gesture started on, or null if it did not start on a
92
+ * comment.
93
+ */
94
+ private startComment: RenderedWorkspaceComment | null = null;
95
+
96
+ /**
97
+ * The block that this gesture targets. If the gesture started on a
98
+ * shadow block, this is the first non-shadow parent of the block. If the
99
+ * gesture started in the flyout, this is the root block of the block group
100
+ * that was clicked or dragged.
101
+ */
102
+ private targetBlock: BlockSvg | null = null;
103
+
104
+ /**
105
+ * The workspace that the gesture started on. There may be multiple
106
+ * workspaces on a page; this is more accurate than using
107
+ * Blockly.common.getMainWorkspace().
108
+ */
109
+ protected startWorkspace_: WorkspaceSvg | null = null;
110
+
111
+ /**
112
+ * Whether the pointer has at any point moved out of the drag radius.
113
+ * A gesture that exceeds the drag radius is a drag even if it ends exactly
114
+ * at its start point.
115
+ */
116
+ private hasExceededDragRadius = false;
117
+
118
+ /**
119
+ * Array holding info needed to unbind events.
120
+ * Used for disposing.
121
+ * Ex: [[node, name, func], [node, name, func]].
122
+ */
123
+ private boundEvents: browserEvents.Data[] = [];
124
+
125
+ private dragger: IDragger | null = null;
126
+
127
+ /**
128
+ * The object tracking a workspace or flyout workspace drag, or null if none
129
+ * is in progress.
130
+ */
131
+ private workspaceDragger: WorkspaceDragger | null = null;
132
+
133
+ /** Whether the gesture is dragging or not. */
134
+ private dragging: boolean = false;
135
+
136
+ /** The flyout a gesture started in, if any. */
137
+ private flyout: IFlyout | null = null;
138
+
139
+ /** Boolean for sanity-checking that some code is only called once. */
140
+ private calledUpdateIsDragging = false;
141
+
142
+ /** Boolean for sanity-checking that some code is only called once. */
143
+ private gestureHasStarted = false;
144
+
145
+ /** Boolean used internally to break a cycle in disposal. */
146
+ protected isEnding_ = false;
147
+
148
+ /** The event that most recently updated this gesture. */
149
+ private mostRecentEvent: PointerEvent;
150
+
151
+ /** Boolean for whether or not this gesture is a multi-touch gesture. */
152
+ private multiTouch = false;
153
+
154
+ /** A map of cached points used for tracking multi-touch gestures. */
155
+ private cachedPoints = new Map<string, Coordinate | null>();
156
+
157
+ /**
158
+ * This is the ratio between the starting distance between the touch points
159
+ * and the most recent distance between the touch points.
160
+ * Scales between 0 and 1 mean the most recent zoom was a zoom out.
161
+ * Scales above 1.0 mean the most recent zoom was a zoom in.
162
+ */
163
+ private previousScale = 0;
164
+
165
+ /** The starting distance between two touch points. */
166
+ private startDistance = 0;
167
+
168
+ /** Boolean for whether or not the workspace supports pinch-zoom. */
169
+ private isPinchZoomEnabled: boolean | null = null;
170
+
171
+ /**
172
+ * The owner of the dropdownDiv when this gesture first starts.
173
+ * Needed because we'll close the dropdown before fields get to
174
+ * act on their events, and some fields care about who owns
175
+ * the dropdown.
176
+ */
177
+ currentDropdownOwner: Field | null = null;
178
+
179
+ /**
180
+ * @param e The event that kicked off this gesture.
181
+ * @param creatorWorkspace The workspace that created this gesture and has a
182
+ * reference to it.
183
+ */
184
+ constructor(
185
+ e: PointerEvent,
186
+ private readonly creatorWorkspace: WorkspaceSvg,
187
+ ) {
188
+ this.mostRecentEvent = e;
189
+
190
+ /**
191
+ * How far the pointer has moved during this drag, in pixel units.
192
+ * (0, 0) is at this.mouseDownXY_.
193
+ */
194
+ this.currentDragDeltaXY = new Coordinate(0, 0);
195
+ }
196
+
197
+ /**
198
+ * Sever all links from this object.
199
+ *
200
+ * @internal
201
+ */
202
+ dispose() {
203
+ Touch.clearTouchIdentifier();
204
+ Tooltip.unblock();
205
+ // Clear the owner's reference to this gesture.
206
+ this.creatorWorkspace.clearGesture();
207
+
208
+ for (const event of this.boundEvents) {
209
+ browserEvents.unbind(event);
210
+ }
211
+ this.boundEvents.length = 0;
212
+ }
213
+
214
+ /**
215
+ * Update internal state based on an event.
216
+ *
217
+ * @param e The most recent pointer event.
218
+ */
219
+ private updateFromEvent(e: PointerEvent) {
220
+ const currentXY = new Coordinate(e.clientX, e.clientY);
221
+ const changed = this.updateDragDelta(currentXY);
222
+ // Exceeded the drag radius for the first time.
223
+ if (changed) {
224
+ this.updateIsDragging(e);
225
+ Touch.longStop();
226
+ }
227
+ this.mostRecentEvent = e;
228
+ }
229
+
230
+ /**
231
+ * DO MATH to set currentDragDeltaXY_ based on the most recent pointer
232
+ * position.
233
+ *
234
+ * @param currentXY The most recent pointer position, in pixel units,
235
+ * with (0, 0) at the window's top left corner.
236
+ * @returns True if the drag just exceeded the drag radius for the first time.
237
+ */
238
+ private updateDragDelta(currentXY: Coordinate): boolean {
239
+ this.currentDragDeltaXY = Coordinate.difference(
240
+ currentXY,
241
+ this.mouseDownXY,
242
+ );
243
+
244
+ if (!this.hasExceededDragRadius) {
245
+ const currentDragDelta = Coordinate.magnitude(this.currentDragDeltaXY);
246
+
247
+ // The flyout has a different drag radius from the rest of Blockly.
248
+ const limitRadius = this.flyout
249
+ ? config.flyoutDragRadius
250
+ : config.dragRadius;
251
+
252
+ this.hasExceededDragRadius = currentDragDelta > limitRadius;
253
+ return this.hasExceededDragRadius;
254
+ }
255
+ return false;
256
+ }
257
+
258
+ /**
259
+ * Update this gesture to record whether a block is being dragged from the
260
+ * flyout.
261
+ * This function should be called on a pointermove event the first time
262
+ * the drag radius is exceeded. It should be called no more than once per
263
+ * gesture. If a block should be dragged from the flyout this function creates
264
+ * the new block on the main workspace and updates targetBlock_ and
265
+ * startWorkspace_.
266
+ *
267
+ * @returns True if a block is being dragged from the flyout.
268
+ */
269
+ private updateIsDraggingFromFlyout(): boolean {
270
+ if (!this.targetBlock || !this.flyout?.isBlockCreatable(this.targetBlock)) {
271
+ return false;
272
+ }
273
+ if (!this.flyout.targetWorkspace) {
274
+ throw new Error(`Cannot update dragging from the flyout because the ' +
275
+ 'flyout's target workspace is undefined`);
276
+ }
277
+
278
+ this.startWorkspace_ = this.flyout.targetWorkspace;
279
+ this.startWorkspace_.updateScreenCalculationsIfScrolled();
280
+ // Start the event group now, so that the same event group is used for
281
+ // block creation and block dragging.
282
+ if (!eventUtils.getGroup()) {
283
+ eventUtils.setGroup(true);
284
+ }
285
+ // The start block is no longer relevant, because this is a drag.
286
+ this.startBlock = null;
287
+ this.targetBlock = this.flyout.createBlock(this.targetBlock);
288
+ getFocusManager().focusNode(this.targetBlock);
289
+ return true;
290
+ }
291
+
292
+ /**
293
+ * Check whether to start a workspace drag. If a workspace is being dragged,
294
+ * create the necessary WorkspaceDragger and start the drag.
295
+ *
296
+ * This function should be called on a pointermove event the first time
297
+ * the drag radius is exceeded. It should be called no more than once per
298
+ * gesture. If a workspace is being dragged this function creates the
299
+ * necessary WorkspaceDragger and starts the drag.
300
+ */
301
+ private updateIsDraggingWorkspace() {
302
+ if (!this.startWorkspace_) {
303
+ throw new Error(
304
+ 'Cannot update dragging the workspace because the ' +
305
+ 'start workspace is undefined',
306
+ );
307
+ }
308
+
309
+ const wsMovable = this.flyout
310
+ ? this.flyout.isScrollable()
311
+ : this.startWorkspace_ && this.startWorkspace_.isDraggable();
312
+ if (!wsMovable) return;
313
+
314
+ this.dragging = true;
315
+ this.workspaceDragger = new WorkspaceDragger(this.startWorkspace_);
316
+
317
+ this.workspaceDragger.startDrag();
318
+ }
319
+
320
+ /**
321
+ * Update this gesture to record whether anything is being dragged.
322
+ * This function should be called on a pointermove event the first time
323
+ * the drag radius is exceeded. It should be called no more than once per
324
+ * gesture.
325
+ */
326
+ private updateIsDragging(e: PointerEvent) {
327
+ if (!this.startWorkspace_) {
328
+ throw new Error(
329
+ 'Cannot update dragging because the start workspace is undefined',
330
+ );
331
+ }
332
+
333
+ if (this.calledUpdateIsDragging) {
334
+ throw Error('updateIsDragging_ should only be called once per gesture.');
335
+ }
336
+ this.calledUpdateIsDragging = true;
337
+
338
+ // If we drag a block out of the flyout, it updates `common.getSelected`
339
+ // to return the new block.
340
+ if (this.flyout) this.updateIsDraggingFromFlyout();
341
+
342
+ const selected = common.getSelected();
343
+ if (selected && isDraggable(selected) && selected.isMovable()) {
344
+ this.dragging = true;
345
+ this.dragger = this.createDragger(selected, this.startWorkspace_);
346
+ this.dragger.onDragStart(e);
347
+ this.dragger.onDrag(e, this.currentDragDeltaXY);
348
+ } else {
349
+ this.updateIsDraggingWorkspace();
350
+ }
351
+ }
352
+
353
+ private createDragger(
354
+ draggable: IDraggable,
355
+ workspace: WorkspaceSvg,
356
+ ): IDragger {
357
+ const DraggerClass = registry.getClassFromOptions(
358
+ registry.Type.BLOCK_DRAGGER,
359
+ this.creatorWorkspace.options,
360
+ true,
361
+ );
362
+ return new DraggerClass!(draggable, workspace);
363
+ }
364
+
365
+ /**
366
+ * Start a gesture: update the workspace to indicate that a gesture is in
367
+ * progress and bind pointermove and pointerup handlers.
368
+ *
369
+ * @param e A pointerdown event.
370
+ * @internal
371
+ */
372
+ doStart(e: PointerEvent) {
373
+ if (!this.startWorkspace_) {
374
+ throw new Error(
375
+ 'Cannot start the touch gesture becauase the start ' +
376
+ 'workspace is undefined',
377
+ );
378
+ }
379
+ this.isPinchZoomEnabled =
380
+ this.startWorkspace_.options.zoomOptions &&
381
+ this.startWorkspace_.options.zoomOptions.pinch;
382
+
383
+ if (browserEvents.isTargetInput(e)) {
384
+ this.cancel();
385
+ return;
386
+ }
387
+
388
+ this.gestureHasStarted = true;
389
+
390
+ blockAnimations.disconnectUiStop();
391
+
392
+ this.startWorkspace_.updateScreenCalculationsIfScrolled();
393
+ if (this.startWorkspace_.isMutator) {
394
+ // Mutator's coordinate system could be out of date because the bubble was
395
+ // dragged, the block was moved, the parent workspace zoomed, etc.
396
+ this.startWorkspace_.resize();
397
+ }
398
+
399
+ // Keep track of which field owns the dropdown before we close it.
400
+ this.currentDropdownOwner = dropDownDiv.getOwner();
401
+ // Hide chaff also hides the flyout, so don't do it if the click is in a
402
+ // flyout.
403
+ this.startWorkspace_.hideChaff(!!this.flyout);
404
+
405
+ this.startWorkspace_.markFocused();
406
+ this.mostRecentEvent = e;
407
+
408
+ Tooltip.block();
409
+
410
+ if (browserEvents.isRightButton(e)) {
411
+ this.handleRightClick(e);
412
+ return;
413
+ }
414
+
415
+ if (e.type.toLowerCase() === 'pointerdown' && e.pointerType !== 'mouse') {
416
+ Touch.longStart(e, this);
417
+ }
418
+
419
+ this.mouseDownXY = new Coordinate(e.clientX, e.clientY);
420
+
421
+ this.bindMouseEvents(e);
422
+
423
+ if (!this.isEnding_) {
424
+ this.handleTouchStart(e);
425
+ }
426
+ }
427
+
428
+ /**
429
+ * Bind gesture events.
430
+ *
431
+ * @param e A pointerdown event.
432
+ * @internal
433
+ */
434
+ bindMouseEvents(e: PointerEvent) {
435
+ this.boundEvents.push(
436
+ browserEvents.conditionalBind(
437
+ document,
438
+ 'pointerdown',
439
+ null,
440
+ this.handleStart.bind(this),
441
+ /* opt_noCaptureIdentifier */ true,
442
+ ),
443
+ );
444
+ this.boundEvents.push(
445
+ browserEvents.conditionalBind(
446
+ document,
447
+ 'pointermove',
448
+ null,
449
+ this.handleMove.bind(this),
450
+ /* opt_noCaptureIdentifier */ true,
451
+ ),
452
+ );
453
+ this.boundEvents.push(
454
+ browserEvents.conditionalBind(
455
+ document,
456
+ 'pointerup',
457
+ null,
458
+ this.handleUp.bind(this),
459
+ /* opt_noCaptureIdentifier */ true,
460
+ ),
461
+ );
462
+ this.boundEvents.push(
463
+ browserEvents.conditionalBind(
464
+ document,
465
+ 'pointercancel',
466
+ null,
467
+ this.handleUp.bind(this),
468
+ /* opt_noCaptureIdentifier */ true,
469
+ ),
470
+ );
471
+
472
+ e.preventDefault();
473
+ e.stopPropagation();
474
+ }
475
+
476
+ /**
477
+ * Handle a pointerdown event.
478
+ *
479
+ * @param e A pointerdown event.
480
+ * @internal
481
+ */
482
+ handleStart(e: PointerEvent) {
483
+ if (this.isDragging()) {
484
+ // A drag has already started, so this can no longer be a pinch-zoom.
485
+ return;
486
+ }
487
+ this.handleTouchStart(e);
488
+
489
+ if (this.isMultiTouch()) {
490
+ Touch.longStop();
491
+ }
492
+ }
493
+
494
+ /**
495
+ * Handle a pointermove event.
496
+ *
497
+ * @param e A pointermove event.
498
+ * @internal
499
+ */
500
+ handleMove(e: PointerEvent) {
501
+ if (
502
+ (this.isDragging() && Touch.shouldHandleEvent(e)) ||
503
+ !this.isMultiTouch()
504
+ ) {
505
+ this.updateFromEvent(e);
506
+ if (this.workspaceDragger) {
507
+ this.workspaceDragger.drag(this.currentDragDeltaXY);
508
+ } else if (this.dragger) {
509
+ this.dragger.onDrag(this.mostRecentEvent, this.currentDragDeltaXY);
510
+ }
511
+ e.preventDefault();
512
+ e.stopPropagation();
513
+ } else if (this.isMultiTouch()) {
514
+ this.handleTouchMove(e);
515
+ Touch.longStop();
516
+ }
517
+ }
518
+
519
+ /**
520
+ * Handle a pointerup event.
521
+ *
522
+ * @param e A pointerup event.
523
+ * @internal
524
+ */
525
+ handleUp(e: PointerEvent) {
526
+ if (!this.isDragging()) {
527
+ this.handleTouchEnd(e);
528
+ }
529
+ if (!this.isMultiTouch() || this.isDragging()) {
530
+ if (!Touch.shouldHandleEvent(e)) {
531
+ return;
532
+ }
533
+ this.updateFromEvent(e);
534
+ Touch.longStop();
535
+
536
+ if (this.isEnding_) {
537
+ console.log('Trying to end a gesture recursively.');
538
+ return;
539
+ }
540
+ this.isEnding_ = true;
541
+ // The ordering of these checks is important: drags have higher priority
542
+ // than clicks. Fields and icons have higher priority than blocks; blocks
543
+ // have higher priority than workspaces. The ordering within drags does
544
+ // not matter, because the three types of dragging are exclusive.
545
+ if (this.dragger) {
546
+ keyboardNavigationController.setIsActive(false);
547
+ this.dragger.onDragEnd(e, this.currentDragDeltaXY);
548
+ } else if (this.workspaceDragger) {
549
+ keyboardNavigationController.setIsActive(false);
550
+ this.workspaceDragger.endDrag(this.currentDragDeltaXY);
551
+ } else if (this.isBubbleClick()) {
552
+ // Do nothing, bubbles don't currently respond to clicks.
553
+ } else if (this.isCommentClick()) {
554
+ // Do nothing, comments don't currently respond to clicks.
555
+ } else if (this.isFieldClick()) {
556
+ this.doFieldClick();
557
+ } else if (this.isIconClick()) {
558
+ this.doIconClick();
559
+ } else if (this.isBlockClick()) {
560
+ this.doBlockClick();
561
+ } else if (this.isWorkspaceClick()) {
562
+ this.doWorkspaceClick(e);
563
+ }
564
+
565
+ e.preventDefault();
566
+ e.stopPropagation();
567
+
568
+ this.dispose();
569
+ } else {
570
+ e.preventDefault();
571
+ e.stopPropagation();
572
+
573
+ this.dispose();
574
+ }
575
+ }
576
+
577
+ /**
578
+ * Handle a pointerdown event and keep track of current
579
+ * pointers.
580
+ *
581
+ * @param e A pointerdown event.
582
+ * @internal
583
+ */
584
+ handleTouchStart(e: PointerEvent) {
585
+ const pointerId = Touch.getTouchIdentifierFromEvent(e);
586
+ // store the pointerId in the current list of pointers
587
+ this.cachedPoints.set(pointerId, this.getTouchPoint(e));
588
+ const pointers = Array.from(this.cachedPoints.keys());
589
+ // If two pointers are down, store info
590
+ if (pointers.length === 2) {
591
+ const point0 = this.cachedPoints.get(pointers[0])!;
592
+ const point1 = this.cachedPoints.get(pointers[1])!;
593
+ this.startDistance = Coordinate.distance(point0, point1);
594
+ this.multiTouch = true;
595
+ e.preventDefault();
596
+ }
597
+ }
598
+
599
+ /**
600
+ * Handle a pointermove event and zoom in/out if two pointers
601
+ * are on the screen.
602
+ *
603
+ * @param e A pointermove event.
604
+ * @internal
605
+ */
606
+ handleTouchMove(e: PointerEvent) {
607
+ const pointerId = Touch.getTouchIdentifierFromEvent(e);
608
+ this.cachedPoints.set(pointerId, this.getTouchPoint(e));
609
+
610
+ if (this.isPinchZoomEnabled && this.cachedPoints.size === 2) {
611
+ this.handlePinch(e);
612
+ } else {
613
+ // Handle the move directly instead of calling handleMove
614
+ this.updateFromEvent(e);
615
+ if (this.workspaceDragger) {
616
+ this.workspaceDragger.drag(this.currentDragDeltaXY);
617
+ } else if (this.dragger) {
618
+ this.dragger.onDrag(this.mostRecentEvent, this.currentDragDeltaXY);
619
+ }
620
+ e.preventDefault();
621
+ e.stopPropagation();
622
+ }
623
+ }
624
+
625
+ /**
626
+ * Handle pinch zoom gesture.
627
+ *
628
+ * @param e A pointermove event.
629
+ */
630
+ private handlePinch(e: PointerEvent) {
631
+ const pointers = Array.from(this.cachedPoints.keys());
632
+ // Calculate the distance between the two pointers
633
+ const point0 = this.cachedPoints.get(pointers[0])!;
634
+ const point1 = this.cachedPoints.get(pointers[1])!;
635
+ const moveDistance = Coordinate.distance(point0, point1);
636
+ const scale = moveDistance / this.startDistance;
637
+
638
+ if (this.previousScale > 0 && this.previousScale < Infinity) {
639
+ const gestureScale = scale - this.previousScale;
640
+ const delta =
641
+ gestureScale > 0
642
+ ? gestureScale * ZOOM_IN_MULTIPLIER
643
+ : gestureScale * ZOOM_OUT_MULTIPLIER;
644
+ if (!this.startWorkspace_) {
645
+ throw new Error(
646
+ 'Cannot handle a pinch because the start workspace ' + 'is undefined',
647
+ );
648
+ }
649
+ const workspace = this.startWorkspace_;
650
+ const position = browserEvents.mouseToSvg(
651
+ e,
652
+ workspace.getParentSvg(),
653
+ workspace.getInverseScreenCTM(),
654
+ );
655
+ workspace.zoom(position.x, position.y, delta);
656
+ }
657
+ this.previousScale = scale;
658
+ e.preventDefault();
659
+ }
660
+
661
+ /**
662
+ * Handle a pointerup event and end the gesture.
663
+ *
664
+ * @param e A pointerup event.
665
+ * @internal
666
+ */
667
+ handleTouchEnd(e: PointerEvent) {
668
+ const pointerId = Touch.getTouchIdentifierFromEvent(e);
669
+ if (this.cachedPoints.has(pointerId)) {
670
+ this.cachedPoints.delete(pointerId);
671
+ }
672
+ if (this.cachedPoints.size < 2) {
673
+ this.cachedPoints.clear();
674
+ this.previousScale = 0;
675
+ }
676
+ }
677
+
678
+ /**
679
+ * Helper function returning the current touch point coordinate.
680
+ *
681
+ * @param e A pointer event.
682
+ * @returns The current touch point coordinate
683
+ * @internal
684
+ */
685
+ getTouchPoint(e: PointerEvent): Coordinate | null {
686
+ if (!this.startWorkspace_) {
687
+ return null;
688
+ }
689
+ return new Coordinate(e.pageX, e.pageY);
690
+ }
691
+
692
+ /**
693
+ * Whether this gesture is part of a multi-touch gesture.
694
+ *
695
+ * @returns Whether this gesture is part of a multi-touch gesture.
696
+ * @internal
697
+ */
698
+ isMultiTouch(): boolean {
699
+ return this.multiTouch;
700
+ }
701
+
702
+ /**
703
+ * Cancel an in-progress gesture. If a workspace or block drag is in
704
+ * progress, end the drag at the most recent location.
705
+ *
706
+ * @internal
707
+ */
708
+ cancel() {
709
+ // Disposing of a block cancels in-progress drags, but dragging to a delete
710
+ // area disposes of a block and leads to recursive disposal. Break that
711
+ // cycle.
712
+ if (this.isEnding_) {
713
+ return;
714
+ }
715
+ Touch.longStop();
716
+ if (this.dragger) {
717
+ this.dragger.onDragEnd(this.mostRecentEvent, this.currentDragDeltaXY);
718
+ } else if (this.workspaceDragger) {
719
+ this.workspaceDragger.endDrag(this.currentDragDeltaXY);
720
+ }
721
+ this.dispose();
722
+ }
723
+
724
+ /**
725
+ * Handle a real or faked right-click event by showing a context menu.
726
+ *
727
+ * @param e A pointerdown event.
728
+ * @internal
729
+ */
730
+ handleRightClick(e: PointerEvent) {
731
+ const selection = getFocusManager().getFocusedNode();
732
+ if (hasContextMenu(selection)) {
733
+ this.startWorkspace_?.hideChaff(!!this.flyout);
734
+ selection.showContextMenu(e);
735
+ }
736
+
737
+ e.preventDefault();
738
+ e.stopPropagation();
739
+
740
+ keyboardNavigationController.setIsActive(false);
741
+
742
+ this.dispose();
743
+ }
744
+
745
+ /**
746
+ * Handle a pointerdown event on a workspace.
747
+ *
748
+ * @param e A pointerdown event.
749
+ * @param ws The workspace the event hit.
750
+ * @internal
751
+ */
752
+ handleWsStart(e: PointerEvent, ws: WorkspaceSvg) {
753
+ if (this.gestureHasStarted) {
754
+ throw Error(
755
+ 'Tried to call gesture.handleWsStart, ' +
756
+ 'but the gesture had already been started.',
757
+ );
758
+ }
759
+ this.setStartWorkspace(ws);
760
+ this.mostRecentEvent = e;
761
+
762
+ if (
763
+ !this.targetBlock &&
764
+ !this.startBubble &&
765
+ !this.startComment &&
766
+ !this.startIcon
767
+ ) {
768
+ // Ensure the workspace is selected if nothing else should be. Note that
769
+ // this is focusNode() instead of focusTree() because if any active node
770
+ // is focused in the workspace it should be defocused.
771
+ getFocusManager().focusNode(ws);
772
+ }
773
+
774
+ this.doStart(e);
775
+ }
776
+
777
+ /**
778
+ * Fires a workspace click event.
779
+ *
780
+ * @param ws The workspace that a user clicks on.
781
+ */
782
+ private fireWorkspaceClick(ws: WorkspaceSvg) {
783
+ eventUtils.fire(
784
+ new (eventUtils.get(EventType.CLICK))(null, ws.id, 'workspace'),
785
+ );
786
+ }
787
+
788
+ /**
789
+ * Handle a pointerdown event on a flyout.
790
+ *
791
+ * @param e A pointerdown event.
792
+ * @param flyout The flyout the event hit.
793
+ * @internal
794
+ */
795
+ handleFlyoutStart(e: PointerEvent, flyout: IFlyout) {
796
+ if (this.gestureHasStarted) {
797
+ throw Error(
798
+ 'Tried to call gesture.handleFlyoutStart, ' +
799
+ 'but the gesture had already been started.',
800
+ );
801
+ }
802
+ this.setStartFlyout(flyout);
803
+ this.handleWsStart(e, flyout.getWorkspace());
804
+ }
805
+
806
+ /**
807
+ * Handle a pointerdown event on a block.
808
+ *
809
+ * @param e A pointerdown event.
810
+ * @param block The block the event hit.
811
+ * @internal
812
+ */
813
+ handleBlockStart(e: PointerEvent, block: BlockSvg) {
814
+ if (this.gestureHasStarted) {
815
+ throw Error(
816
+ 'Tried to call gesture.handleBlockStart, ' +
817
+ 'but the gesture had already been started.',
818
+ );
819
+ }
820
+ this.setStartBlock(block);
821
+ this.mostRecentEvent = e;
822
+ }
823
+
824
+ /**
825
+ * Handle a pointerdown event on a bubble.
826
+ *
827
+ * @param e A pointerdown event.
828
+ * @param bubble The bubble the event hit.
829
+ * @internal
830
+ */
831
+ handleBubbleStart(e: PointerEvent, bubble: IBubble) {
832
+ if (this.gestureHasStarted) {
833
+ throw Error(
834
+ 'Tried to call gesture.handleBubbleStart, ' +
835
+ 'but the gesture had already been started.',
836
+ );
837
+ }
838
+ this.setStartBubble(bubble);
839
+ this.mostRecentEvent = e;
840
+ }
841
+
842
+ /**
843
+ * Handle a pointerdown event on a workspace comment.
844
+ *
845
+ * @param e A pointerdown event.
846
+ * @param comment The comment the event hit.
847
+ * @internal
848
+ */
849
+ handleCommentStart(e: PointerEvent, comment: RenderedWorkspaceComment) {
850
+ if (this.gestureHasStarted) {
851
+ throw Error(
852
+ 'Tried to call gesture.handleCommentStart, ' +
853
+ 'but the gesture had already been started.',
854
+ );
855
+ }
856
+ this.setStartComment(comment);
857
+ this.mostRecentEvent = e;
858
+ }
859
+
860
+ /* Begin functions defining what actions to take to execute clicks on each
861
+ * type of target. Any developer wanting to add behaviour on clicks should
862
+ * modify only this code. */
863
+
864
+ /** Execute a field click. */
865
+ private doFieldClick() {
866
+ if (!this.startField) {
867
+ throw new Error(
868
+ 'Cannot do a field click because the start field is undefined',
869
+ );
870
+ }
871
+
872
+ // Only show the editor if the field's editor wasn't already open
873
+ // right before this gesture started.
874
+ const dropdownAlreadyOpen = this.currentDropdownOwner === this.startField;
875
+ if (!dropdownAlreadyOpen) {
876
+ this.startField.showEditor(this.mostRecentEvent);
877
+ }
878
+ }
879
+
880
+ /** Execute an icon click. */
881
+ private doIconClick() {
882
+ if (!this.startIcon) {
883
+ throw new Error(
884
+ 'Cannot do an icon click because the start icon is undefined',
885
+ );
886
+ }
887
+ this.startIcon.onClick();
888
+ }
889
+
890
+ /** Execute a block click. */
891
+ private doBlockClick() {
892
+ // Block click in an autoclosing flyout.
893
+ if (this.flyout && this.flyout.autoClose) {
894
+ if (!this.targetBlock) {
895
+ throw new Error(
896
+ 'Cannot do a block click because the target block is ' + 'undefined',
897
+ );
898
+ }
899
+ if (this.flyout.isBlockCreatable(this.targetBlock)) {
900
+ if (!eventUtils.getGroup()) {
901
+ eventUtils.setGroup(true);
902
+ }
903
+ const newBlock = this.flyout.createBlock(this.targetBlock);
904
+ newBlock.snapToGrid();
905
+ newBlock.bumpNeighbours();
906
+
907
+ // If a new block was added, make sure that it's correctly focused.
908
+ getFocusManager().focusNode(newBlock);
909
+ }
910
+ } else {
911
+ if (!this.startWorkspace_) {
912
+ throw new Error(
913
+ 'Cannot do a block click because the start workspace ' +
914
+ 'is undefined',
915
+ );
916
+ }
917
+ // Clicks events are on the start block, even if it was a shadow.
918
+ const event = new (eventUtils.get(EventType.CLICK))(
919
+ this.startBlock,
920
+ this.startWorkspace_.id,
921
+ 'block',
922
+ );
923
+ eventUtils.fire(event);
924
+ }
925
+ eventUtils.setGroup(false);
926
+ }
927
+
928
+ /**
929
+ * Execute a workspace click. When in accessibility mode shift clicking will
930
+ * move the cursor.
931
+ *
932
+ * @param _e A pointerup event.
933
+ */
934
+ private doWorkspaceClick(_e: PointerEvent) {
935
+ this.fireWorkspaceClick(this.startWorkspace_ || this.creatorWorkspace);
936
+ }
937
+
938
+ /* End functions defining what actions to take to execute clicks on each type
939
+ * of target. */
940
+
941
+ // TODO (fenichel): Move bubbles to the front.
942
+
943
+ /* Begin functions for populating a gesture at pointerdown. */
944
+
945
+ /**
946
+ * Record the field that a gesture started on.
947
+ *
948
+ * @param field The field the gesture started on.
949
+ * @internal
950
+ */
951
+ setStartField<T>(field: Field<T>) {
952
+ if (this.gestureHasStarted) {
953
+ throw Error(
954
+ 'Tried to call gesture.setStartField, ' +
955
+ 'but the gesture had already been started.',
956
+ );
957
+ }
958
+ if (!this.startField) {
959
+ this.startField = field as Field;
960
+ }
961
+ }
962
+
963
+ /**
964
+ * Record the icon that a gesture started on.
965
+ *
966
+ * @param icon The icon the gesture started on.
967
+ * @internal
968
+ */
969
+ setStartIcon(icon: IIcon) {
970
+ if (this.gestureHasStarted) {
971
+ throw Error(
972
+ 'Tried to call gesture.setStartIcon, ' +
973
+ 'but the gesture had already been started.',
974
+ );
975
+ }
976
+
977
+ if (!this.startIcon) this.startIcon = icon;
978
+ }
979
+
980
+ /**
981
+ * Record the bubble that a gesture started on
982
+ *
983
+ * @param bubble The bubble the gesture started on.
984
+ * @internal
985
+ */
986
+ setStartBubble(bubble: IBubble) {
987
+ if (!this.startBubble) {
988
+ this.startBubble = bubble;
989
+ }
990
+ }
991
+
992
+ /**
993
+ * Record the comment that a gesture started on
994
+ *
995
+ * @param comment The comment the gesture started on.
996
+ * @internal
997
+ */
998
+ setStartComment(comment: RenderedWorkspaceComment) {
999
+ if (!this.startComment) {
1000
+ this.startComment = comment;
1001
+ }
1002
+ }
1003
+
1004
+ /**
1005
+ * Record the block that a gesture started on, and set the target block
1006
+ * appropriately.
1007
+ *
1008
+ * @param block The block the gesture started on.
1009
+ * @internal
1010
+ */
1011
+ setStartBlock(block: BlockSvg) {
1012
+ // If the gesture already went through a block child, don't set the start
1013
+ // block.
1014
+ if (!this.startBlock && !this.startBubble && !this.startIcon) {
1015
+ this.startBlock = block;
1016
+ if (block.isInFlyout && block !== block.getRootBlock()) {
1017
+ this.setTargetBlock(block.getRootBlock());
1018
+ } else {
1019
+ this.setTargetBlock(block);
1020
+ }
1021
+ }
1022
+ }
1023
+
1024
+ /**
1025
+ * Record the block that a gesture targets, meaning the block that will be
1026
+ * dragged if this turns into a drag. If this block is a shadow, that will be
1027
+ * its first non-shadow parent.
1028
+ *
1029
+ * @param block The block the gesture targets.
1030
+ */
1031
+ private setTargetBlock(block: BlockSvg) {
1032
+ if (block.isShadow()) {
1033
+ // Non-null assertion is fine b/c it is an invariant that shadows always
1034
+ // have parents.
1035
+ this.setTargetBlock(block.getParent()!);
1036
+ } else {
1037
+ this.targetBlock = block;
1038
+ getFocusManager().focusNode(this.targetBlock);
1039
+ this.targetBlock.bringToFront();
1040
+ }
1041
+ }
1042
+
1043
+ /**
1044
+ * Record the workspace that a gesture started on.
1045
+ *
1046
+ * @param ws The workspace the gesture started on.
1047
+ */
1048
+ private setStartWorkspace(ws: WorkspaceSvg) {
1049
+ if (!this.startWorkspace_) {
1050
+ this.startWorkspace_ = ws;
1051
+ }
1052
+ }
1053
+
1054
+ /**
1055
+ * Record the flyout that a gesture started on.
1056
+ *
1057
+ * @param flyout The flyout the gesture started on.
1058
+ */
1059
+ private setStartFlyout(flyout: IFlyout) {
1060
+ if (!this.flyout) {
1061
+ this.flyout = flyout;
1062
+ }
1063
+ }
1064
+
1065
+ /* End functions for populating a gesture at pointerdown. */
1066
+
1067
+ /* Begin helper functions defining types of clicks. Any developer wanting
1068
+ * to change the definition of a click should modify only this code. */
1069
+
1070
+ /**
1071
+ * Whether this gesture is a click on a bubble. This should only be called
1072
+ * when ending a gesture (pointerup).
1073
+ *
1074
+ * @returns Whether this gesture was a click on a bubble.
1075
+ */
1076
+ private isBubbleClick(): boolean {
1077
+ // A bubble click starts on a bubble and never escapes the drag radius.
1078
+ const hasStartBubble = !!this.startBubble;
1079
+ return hasStartBubble && !this.hasExceededDragRadius;
1080
+ }
1081
+
1082
+ private isCommentClick(): boolean {
1083
+ return !!this.startComment && !this.hasExceededDragRadius;
1084
+ }
1085
+
1086
+ /**
1087
+ * Whether this gesture is a click on a block. This should only be called
1088
+ * when ending a gesture (pointerup).
1089
+ *
1090
+ * @returns Whether this gesture was a click on a block.
1091
+ */
1092
+ private isBlockClick(): boolean {
1093
+ // A block click starts on a block, never escapes the drag radius, and is
1094
+ // not a field click.
1095
+ const hasStartBlock = !!this.startBlock;
1096
+ return (
1097
+ hasStartBlock &&
1098
+ !this.hasExceededDragRadius &&
1099
+ !this.isFieldClick() &&
1100
+ !this.isIconClick()
1101
+ );
1102
+ }
1103
+
1104
+ /**
1105
+ * Whether this gesture is a click on a field that should be handled. This should only be called
1106
+ * when ending a gesture (pointerup).
1107
+ *
1108
+ * @returns Whether this gesture was a click on a field.
1109
+ */
1110
+ private isFieldClick(): boolean {
1111
+ if (!this.startField) return false;
1112
+ return (
1113
+ this.startField.isClickable() &&
1114
+ !this.hasExceededDragRadius &&
1115
+ (!this.flyout ||
1116
+ this.startField.isClickableInFlyout(this.flyout.autoClose))
1117
+ );
1118
+ }
1119
+
1120
+ /** @returns Whether this gesture is a click on an icon that should be handled. */
1121
+ private isIconClick(): boolean {
1122
+ if (!this.startIcon) return false;
1123
+ const handleInFlyout =
1124
+ !this.flyout ||
1125
+ !this.startIcon.isClickableInFlyout ||
1126
+ this.startIcon.isClickableInFlyout(this.flyout.autoClose);
1127
+ return !this.hasExceededDragRadius && handleInFlyout;
1128
+ }
1129
+
1130
+ /**
1131
+ * Whether this gesture is a click on a workspace. This should only be called
1132
+ * when ending a gesture (pointerup).
1133
+ *
1134
+ * @returns Whether this gesture was a click on a workspace.
1135
+ */
1136
+ private isWorkspaceClick(): boolean {
1137
+ const onlyTouchedWorkspace =
1138
+ !this.startBlock && !this.startBubble && !this.startField;
1139
+ return onlyTouchedWorkspace && !this.hasExceededDragRadius;
1140
+ }
1141
+
1142
+ /* End helper functions defining types of clicks. */
1143
+
1144
+ /** Returns the current dragger if the gesture is a drag. */
1145
+ getCurrentDragger(): WorkspaceDragger | IDragger | null {
1146
+ return this.workspaceDragger ?? this.dragger ?? null;
1147
+ }
1148
+
1149
+ /**
1150
+ * Whether this gesture is a drag of either a workspace or block.
1151
+ * This function is called externally to block actions that cannot be taken
1152
+ * mid-drag (e.g. using the keyboard to delete the selected blocks).
1153
+ *
1154
+ * @returns True if this gesture is a drag of a workspace or block.
1155
+ * @internal
1156
+ */
1157
+ isDragging(): boolean {
1158
+ return this.dragging;
1159
+ }
1160
+
1161
+ /**
1162
+ * Whether this gesture has already been started. In theory every pointerdown
1163
+ * has a corresponding pointerup, but in reality it is possible to lose a
1164
+ * pointerup, leaving an in-process gesture hanging.
1165
+ *
1166
+ * @returns Whether this gesture was a click on a workspace.
1167
+ * @internal
1168
+ */
1169
+ hasStarted(): boolean {
1170
+ return this.gestureHasStarted;
1171
+ }
1172
+
1173
+ /**
1174
+ * Is a drag or other gesture currently in progress on any workspace?
1175
+ *
1176
+ * @returns True if gesture is occurring.
1177
+ */
1178
+ static inProgress(): boolean {
1179
+ const workspaces = common.getAllWorkspaces();
1180
+ for (let i = 0, workspace; (workspace = workspaces[i]); i++) {
1181
+ // Not actually necessarily a WorkspaceSvg, but it doesn't matter b/c
1182
+ // we're just checking if the property exists. Theoretically we would
1183
+ // want to use instanceof, but that causes a circular dependency.
1184
+ if ((workspace as WorkspaceSvg).currentGesture_) {
1185
+ return true;
1186
+ }
1187
+ }
1188
+ return false;
1189
+ }
1190
+ }