blockly 8.0.5 → 9.0.0-beta.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 (736) hide show
  1. package/blockly.min.js +2002 -2269
  2. package/blockly_compressed.js +1499 -1994
  3. package/blockly_compressed.js.map +1 -1
  4. package/blocks/blocks.js +3 -2
  5. package/blocks/colour.js +3 -1
  6. package/blocks/lists.js +94 -22
  7. package/blocks/logic.js +14 -6
  8. package/blocks/loops.js +5 -3
  9. package/blocks/math.js +3 -1
  10. package/blocks/procedures.js +3 -1
  11. package/blocks/text.js +14 -6
  12. package/blocks/variables.js +3 -1
  13. package/blocks/variables_dynamic.js +3 -1
  14. package/blocks.d.ts +0 -2
  15. package/blocks_compressed.js +189 -171
  16. package/blocks_compressed.js.map +1 -1
  17. package/closure/goog/base.d.ts +1 -0
  18. package/closure/goog/base_minimal.d.ts +18 -0
  19. package/closure/goog/goog.d.ts +25 -0
  20. package/core/any_aliases.d.ts +1 -0
  21. package/core/any_aliases.ts +1 -0
  22. package/core/block.d.ts +779 -0
  23. package/core/{block.js → block.ts} +610 -719
  24. package/core/block_animations.d.ts +33 -0
  25. package/core/{block_animations.js → block_animations.ts} +75 -79
  26. package/core/block_drag_surface.d.ts +111 -0
  27. package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
  28. package/core/block_dragger.d.ts +143 -0
  29. package/core/{block_dragger.js → block_dragger.ts} +139 -176
  30. package/core/block_svg.d.ts +588 -0
  31. package/core/{block_svg.js → block_svg.ts} +494 -630
  32. package/core/blockly.d.ts +562 -0
  33. package/core/blockly.js +1 -1
  34. package/core/blockly.ts +749 -0
  35. package/core/blockly_options.d.ts +69 -0
  36. package/core/blockly_options.ts +81 -0
  37. package/core/blocks.d.ts +17 -0
  38. package/core/{blocks.js → blocks.ts} +4 -8
  39. package/core/browser_events.d.ts +85 -0
  40. package/core/{browser_events.js → browser_events.ts} +98 -93
  41. package/core/bubble.d.ts +279 -0
  42. package/core/{bubble.js → bubble.ts} +277 -370
  43. package/core/bubble_dragger.d.ts +73 -0
  44. package/core/bubble_dragger.ts +229 -0
  45. package/core/bump_objects.d.ts +34 -0
  46. package/core/{bump_objects.js → bump_objects.ts} +54 -52
  47. package/core/clipboard.d.ts +42 -0
  48. package/core/clipboard.ts +91 -0
  49. package/core/comment.d.ts +113 -0
  50. package/core/{comment.js → comment.ts} +135 -185
  51. package/core/common.d.ts +129 -0
  52. package/core/{common.js → common.ts} +105 -82
  53. package/core/component_manager.d.ts +91 -0
  54. package/core/component_manager.ts +211 -0
  55. package/core/config.d.ts +23 -0
  56. package/core/{config.js → config.ts} +12 -19
  57. package/core/connection.d.ts +232 -0
  58. package/core/{connection.js → connection.ts} +187 -237
  59. package/core/connection_checker.d.ts +78 -0
  60. package/core/{connection_checker.js → connection_checker.ts} +66 -77
  61. package/core/connection_db.d.ts +91 -0
  62. package/core/{connection_db.js → connection_db.ts} +62 -87
  63. package/core/connection_type.d.ts +15 -0
  64. package/core/{connection_type.js → connection_type.ts} +8 -12
  65. package/core/constants.d.ts +15 -0
  66. package/core/{constants.js → constants.ts} +4 -8
  67. package/core/contextmenu.d.ts +80 -0
  68. package/core/{contextmenu.js → contextmenu.ts} +118 -153
  69. package/core/contextmenu_items.d.ts +77 -0
  70. package/core/contextmenu_items.ts +576 -0
  71. package/core/contextmenu_registry.d.ts +105 -0
  72. package/core/contextmenu_registry.ts +179 -0
  73. package/core/css.d.ts +24 -0
  74. package/core/{css.js → css.ts} +16 -24
  75. package/core/delete_area.d.ts +47 -0
  76. package/core/delete_area.ts +82 -0
  77. package/core/dialog.d.ts +61 -0
  78. package/core/dialog.ts +127 -0
  79. package/core/drag_target.d.ts +63 -0
  80. package/core/drag_target.ts +94 -0
  81. package/core/dropdowndiv.d.ts +155 -0
  82. package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
  83. package/core/events/events.d.ts +102 -0
  84. package/core/events/events.ts +123 -0
  85. package/core/events/events_abstract.d.ts +51 -0
  86. package/core/events/events_abstract.ts +112 -0
  87. package/core/events/events_block_base.d.ts +31 -0
  88. package/core/events/events_block_base.ts +65 -0
  89. package/core/events/events_block_change.d.ts +55 -0
  90. package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
  91. package/core/events/events_block_create.d.ts +35 -0
  92. package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
  93. package/core/events/events_block_delete.d.ts +36 -0
  94. package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
  95. package/core/events/events_block_drag.d.ts +36 -0
  96. package/core/events/events_block_drag.ts +82 -0
  97. package/core/events/events_block_move.d.ts +51 -0
  98. package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
  99. package/core/events/events_bubble_open.d.ts +35 -0
  100. package/core/events/events_bubble_open.ts +82 -0
  101. package/core/events/events_click.d.ts +36 -0
  102. package/core/events/{events_click.js → events_click.ts} +27 -30
  103. package/core/events/events_comment_base.d.ts +39 -0
  104. package/core/events/events_comment_base.ts +107 -0
  105. package/core/events/events_comment_change.d.ts +43 -0
  106. package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
  107. package/core/events/events_comment_create.d.ts +35 -0
  108. package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
  109. package/core/events/events_comment_delete.d.ts +35 -0
  110. package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
  111. package/core/events/events_comment_move.d.ts +55 -0
  112. package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
  113. package/core/events/events_marker_move.d.ts +40 -0
  114. package/core/events/events_marker_move.ts +99 -0
  115. package/core/events/events_selected.d.ts +34 -0
  116. package/core/events/events_selected.ts +78 -0
  117. package/core/events/events_theme_change.d.ts +30 -0
  118. package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
  119. package/core/events/events_toolbox_item_select.d.ts +34 -0
  120. package/core/events/events_toolbox_item_select.ts +79 -0
  121. package/core/events/events_trashcan_open.d.ts +31 -0
  122. package/core/events/events_trashcan_open.ts +68 -0
  123. package/core/events/events_ui.d.ts +37 -0
  124. package/core/events/{events_ui.js → events_ui.ts} +27 -26
  125. package/core/events/events_ui_base.d.ts +26 -0
  126. package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
  127. package/core/events/events_var_base.d.ts +31 -0
  128. package/core/events/events_var_base.ts +65 -0
  129. package/core/events/events_var_create.d.ts +35 -0
  130. package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
  131. package/core/events/events_var_delete.d.ts +35 -0
  132. package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
  133. package/core/events/events_var_rename.d.ts +36 -0
  134. package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
  135. package/core/events/events_viewport.d.ts +39 -0
  136. package/core/events/events_viewport.ts +100 -0
  137. package/core/events/utils.d.ts +272 -0
  138. package/core/events/{utils.js → utils.ts} +148 -219
  139. package/core/events/workspace_events.d.ts +36 -0
  140. package/core/events/workspace_events.ts +86 -0
  141. package/core/extensions.d.ts +107 -0
  142. package/core/{extensions.js → extensions.ts} +153 -172
  143. package/core/field.d.ts +534 -0
  144. package/core/{field.js → field.ts} +413 -489
  145. package/core/field_angle.d.ts +176 -0
  146. package/core/field_angle.ts +563 -0
  147. package/core/field_checkbox.d.ts +124 -0
  148. package/core/field_checkbox.ts +243 -0
  149. package/core/field_colour.d.ts +200 -0
  150. package/core/field_colour.ts +632 -0
  151. package/core/field_dropdown.d.ts +222 -0
  152. package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
  153. package/core/field_image.d.ts +134 -0
  154. package/core/field_image.ts +282 -0
  155. package/core/field_label.d.ts +71 -0
  156. package/core/field_label.ts +152 -0
  157. package/core/field_label_serializable.d.ts +42 -0
  158. package/core/field_label_serializable.ts +76 -0
  159. package/core/field_multilineinput.d.ts +146 -0
  160. package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
  161. package/core/field_number.d.ts +156 -0
  162. package/core/{field_number.js → field_number.ts} +110 -123
  163. package/core/field_registry.d.ts +45 -0
  164. package/core/{field_registry.js → field_registry.ts} +37 -30
  165. package/core/field_textinput.d.ts +219 -0
  166. package/core/field_textinput.ts +591 -0
  167. package/core/field_variable.d.ts +217 -0
  168. package/core/{field_variable.js → field_variable.ts} +174 -187
  169. package/core/flyout_base.d.ts +459 -0
  170. package/core/{flyout_base.js → flyout_base.ts} +429 -518
  171. package/core/flyout_button.d.ts +81 -0
  172. package/core/flyout_button.ts +292 -0
  173. package/core/flyout_horizontal.d.ts +82 -0
  174. package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
  175. package/core/flyout_metrics_manager.d.ts +40 -0
  176. package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
  177. package/core/flyout_vertical.d.ts +83 -0
  178. package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
  179. package/core/generator.d.ts +205 -0
  180. package/core/{generator.js → generator.ts} +168 -193
  181. package/core/gesture.d.ts +357 -0
  182. package/core/{gesture.js → gesture.ts} +289 -369
  183. package/core/grid.d.ts +83 -0
  184. package/core/grid.ts +192 -0
  185. package/core/icon.d.ts +78 -0
  186. package/core/icon.ts +189 -0
  187. package/core/inject.d.ts +15 -0
  188. package/core/{inject.js → inject.ts} +101 -100
  189. package/core/input.d.ts +128 -0
  190. package/core/input.ts +309 -0
  191. package/core/input_types.d.ts +14 -0
  192. package/core/{input_types.js → input_types.ts} +8 -12
  193. package/core/insertion_marker_manager.d.ts +212 -0
  194. package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
  195. package/core/interfaces/i_ast_node_location.d.ts +11 -0
  196. package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
  197. package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
  198. package/core/interfaces/i_ast_node_location_svg.ts +37 -0
  199. package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
  200. package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
  201. package/core/interfaces/i_autohideable.d.ts +18 -0
  202. package/core/interfaces/i_autohideable.ts +34 -0
  203. package/core/interfaces/i_block_dragger.d.ts +43 -0
  204. package/core/interfaces/i_block_dragger.ts +67 -0
  205. package/core/interfaces/i_bounded_element.d.ts +24 -0
  206. package/core/interfaces/i_bounded_element.ts +42 -0
  207. package/core/interfaces/i_bubble.d.ts +59 -0
  208. package/core/interfaces/i_bubble.ts +88 -0
  209. package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
  210. package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
  211. package/core/interfaces/i_component.d.ts +17 -0
  212. package/core/interfaces/{i_component.js → i_component.ts} +9 -14
  213. package/core/interfaces/i_connection_checker.d.ts +69 -0
  214. package/core/interfaces/i_connection_checker.ts +102 -0
  215. package/core/interfaces/i_contextmenu.d.ts +13 -0
  216. package/core/interfaces/i_contextmenu.ts +26 -0
  217. package/core/interfaces/i_copyable.d.ts +24 -0
  218. package/core/interfaces/i_copyable.ts +40 -0
  219. package/core/interfaces/i_deletable.d.ts +16 -0
  220. package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
  221. package/core/interfaces/i_delete_area.d.ts +25 -0
  222. package/core/interfaces/i_delete_area.ts +46 -0
  223. package/core/interfaces/i_drag_target.d.ts +53 -0
  224. package/core/interfaces/i_drag_target.ts +84 -0
  225. package/core/interfaces/i_draggable.d.ts +12 -0
  226. package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
  227. package/core/interfaces/i_flyout.d.ts +134 -0
  228. package/core/interfaces/i_flyout.ts +186 -0
  229. package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
  230. package/core/interfaces/i_keyboard_accessible.ts +35 -0
  231. package/core/interfaces/i_metrics_manager.d.ts +117 -0
  232. package/core/interfaces/i_metrics_manager.ts +151 -0
  233. package/core/interfaces/i_movable.d.ts +16 -0
  234. package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
  235. package/core/interfaces/i_positionable.d.ts +27 -0
  236. package/core/interfaces/i_positionable.ts +50 -0
  237. package/core/interfaces/i_registrable.d.ts +11 -0
  238. package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
  239. package/core/interfaces/i_registrable_field.d.ts +17 -0
  240. package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
  241. package/core/interfaces/i_selectable.d.ts +18 -0
  242. package/core/interfaces/i_selectable.ts +34 -0
  243. package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
  244. package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
  245. package/core/interfaces/i_serializer.d.ts +42 -0
  246. package/core/interfaces/i_serializer.ts +65 -0
  247. package/core/interfaces/i_styleable.d.ts +21 -0
  248. package/core/interfaces/i_styleable.ts +35 -0
  249. package/core/interfaces/i_toolbox.d.ts +85 -0
  250. package/core/interfaces/i_toolbox.ts +127 -0
  251. package/core/interfaces/i_toolbox_item.d.ts +62 -0
  252. package/core/interfaces/i_toolbox_item.ts +84 -0
  253. package/core/internal_constants.d.ts +40 -0
  254. package/core/{internal_constants.js → internal_constants.ts} +13 -18
  255. package/core/keyboard_nav/ast_node.d.ts +239 -0
  256. package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
  257. package/core/keyboard_nav/basic_cursor.d.ts +88 -0
  258. package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
  259. package/core/keyboard_nav/cursor.d.ts +41 -0
  260. package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
  261. package/core/keyboard_nav/marker.d.ts +58 -0
  262. package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
  263. package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
  264. package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
  265. package/core/main.d.ts +11 -0
  266. package/core/main.js +303 -0
  267. package/core/marker_manager.d.ts +85 -0
  268. package/core/marker_manager.ts +181 -0
  269. package/core/menu.d.ts +149 -0
  270. package/core/{menu.js → menu.ts} +141 -174
  271. package/core/menuitem.d.ts +118 -0
  272. package/core/menuitem.ts +240 -0
  273. package/core/metrics_manager.d.ts +201 -0
  274. package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
  275. package/core/msg.d.ts +9 -0
  276. package/core/{msg.js → msg.ts} +4 -8
  277. package/core/mutator.d.ts +128 -0
  278. package/core/{mutator.js → mutator.ts} +196 -211
  279. package/core/names.d.ts +124 -0
  280. package/core/names.ts +267 -0
  281. package/core/options.d.ts +137 -0
  282. package/core/{options.js → options.ts} +147 -173
  283. package/core/positionable_helpers.d.ts +88 -0
  284. package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
  285. package/core/procedures.d.ts +108 -0
  286. package/core/{procedures.js → procedures.ts} +143 -152
  287. package/core/registry.d.ts +137 -0
  288. package/core/registry.ts +339 -0
  289. package/core/rendered_connection.d.ts +191 -0
  290. package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
  291. package/core/renderers/common/block_rendering.d.ts +114 -0
  292. package/core/renderers/common/block_rendering.ts +164 -0
  293. package/core/renderers/common/constants.d.ts +458 -0
  294. package/core/renderers/common/constants.ts +1124 -0
  295. package/core/renderers/common/debug.d.ts +28 -0
  296. package/core/renderers/common/{debug.js → debug.ts} +14 -20
  297. package/core/renderers/common/debugger.d.ts +120 -0
  298. package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
  299. package/core/renderers/common/drawer.d.ts +132 -0
  300. package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
  301. package/core/renderers/common/i_path_object.d.ts +117 -0
  302. package/core/renderers/common/i_path_object.ts +161 -0
  303. package/core/renderers/common/info.d.ts +194 -0
  304. package/core/renderers/common/{info.js → info.ts} +165 -222
  305. package/core/renderers/common/marker_svg.d.ts +220 -0
  306. package/core/renderers/common/marker_svg.ts +680 -0
  307. package/core/renderers/common/path_object.d.ts +146 -0
  308. package/core/renderers/common/path_object.ts +272 -0
  309. package/core/renderers/common/renderer.d.ts +157 -0
  310. package/core/renderers/common/renderer.ts +271 -0
  311. package/core/renderers/geras/constants.d.ts +23 -0
  312. package/core/renderers/geras/constants.ts +61 -0
  313. package/core/renderers/geras/drawer.d.ts +43 -0
  314. package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
  315. package/core/renderers/geras/geras.d.ts +11 -0
  316. package/core/renderers/geras/geras.ts +37 -0
  317. package/core/renderers/geras/highlight_constants.d.ts +108 -0
  318. package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
  319. package/core/renderers/geras/highlighter.d.ts +98 -0
  320. package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
  321. package/core/renderers/geras/info.d.ts +45 -0
  322. package/core/renderers/geras/{info.js → info.ts} +61 -99
  323. package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
  324. package/core/renderers/geras/measurables/inline_input.ts +51 -0
  325. package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
  326. package/core/renderers/geras/measurables/statement_input.ts +50 -0
  327. package/core/renderers/geras/path_object.d.ts +47 -0
  328. package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
  329. package/core/renderers/geras/renderer.d.ts +69 -0
  330. package/core/renderers/geras/renderer.ts +126 -0
  331. package/core/renderers/measurables/base.d.ts +27 -0
  332. package/core/renderers/measurables/base.ts +53 -0
  333. package/core/renderers/measurables/bottom_row.d.ts +61 -0
  334. package/core/renderers/measurables/bottom_row.ts +120 -0
  335. package/core/renderers/measurables/connection.d.ts +25 -0
  336. package/core/renderers/measurables/connection.ts +52 -0
  337. package/core/renderers/measurables/external_value_input.d.ts +27 -0
  338. package/core/renderers/measurables/external_value_input.ts +65 -0
  339. package/core/renderers/measurables/field.d.ts +30 -0
  340. package/core/renderers/measurables/field.ts +63 -0
  341. package/core/renderers/measurables/hat.d.ts +21 -0
  342. package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
  343. package/core/renderers/measurables/icon.d.ts +26 -0
  344. package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
  345. package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
  346. package/core/renderers/measurables/in_row_spacer.ts +44 -0
  347. package/core/renderers/measurables/inline_input.d.ts +24 -0
  348. package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
  349. package/core/renderers/measurables/input_connection.d.ts +29 -0
  350. package/core/renderers/measurables/input_connection.ts +66 -0
  351. package/core/renderers/measurables/input_row.d.ts +30 -0
  352. package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
  353. package/core/renderers/measurables/jagged_edge.d.ts +20 -0
  354. package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
  355. package/core/renderers/measurables/next_connection.d.ts +23 -0
  356. package/core/renderers/measurables/next_connection.ts +47 -0
  357. package/core/renderers/measurables/output_connection.d.ts +26 -0
  358. package/core/renderers/measurables/output_connection.ts +56 -0
  359. package/core/renderers/measurables/previous_connection.d.ts +23 -0
  360. package/core/renderers/measurables/previous_connection.ts +47 -0
  361. package/core/renderers/measurables/round_corner.d.ts +21 -0
  362. package/core/renderers/measurables/round_corner.ts +49 -0
  363. package/core/renderers/measurables/row.d.ts +141 -0
  364. package/core/renderers/measurables/row.ts +225 -0
  365. package/core/renderers/measurables/spacer_row.d.ts +29 -0
  366. package/core/renderers/measurables/spacer_row.ts +55 -0
  367. package/core/renderers/measurables/square_corner.d.ts +21 -0
  368. package/core/renderers/measurables/square_corner.ts +47 -0
  369. package/core/renderers/measurables/statement_input.d.ts +22 -0
  370. package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
  371. package/core/renderers/measurables/top_row.d.ts +56 -0
  372. package/core/renderers/measurables/top_row.ts +122 -0
  373. package/core/renderers/measurables/types.d.ts +235 -0
  374. package/core/renderers/measurables/types.ts +332 -0
  375. package/core/renderers/minimalist/constants.d.ts +14 -0
  376. package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
  377. package/core/renderers/minimalist/drawer.d.ts +21 -0
  378. package/core/renderers/minimalist/drawer.ts +38 -0
  379. package/core/renderers/minimalist/info.d.ts +30 -0
  380. package/core/renderers/minimalist/info.ts +52 -0
  381. package/core/renderers/minimalist/minimalist.d.ts +6 -0
  382. package/core/renderers/minimalist/minimalist.ts +22 -0
  383. package/core/renderers/minimalist/renderer.d.ts +41 -0
  384. package/core/renderers/minimalist/renderer.ts +71 -0
  385. package/core/renderers/thrasos/info.d.ts +40 -0
  386. package/core/renderers/thrasos/{info.js → info.ts} +66 -67
  387. package/core/renderers/thrasos/renderer.d.ts +25 -0
  388. package/core/renderers/thrasos/renderer.ts +48 -0
  389. package/core/renderers/thrasos/thrasos.d.ts +4 -0
  390. package/core/renderers/thrasos/thrasos.ts +20 -0
  391. package/core/renderers/zelos/constants.d.ts +186 -0
  392. package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
  393. package/core/renderers/zelos/drawer.d.ts +47 -0
  394. package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
  395. package/core/renderers/zelos/info.d.ts +88 -0
  396. package/core/renderers/zelos/{info.js → info.ts} +111 -142
  397. package/core/renderers/zelos/marker_svg.d.ts +46 -0
  398. package/core/renderers/zelos/marker_svg.ts +151 -0
  399. package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
  400. package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
  401. package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
  402. package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
  403. package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
  404. package/core/renderers/zelos/measurables/row_elements.ts +45 -0
  405. package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
  406. package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
  407. package/core/renderers/zelos/path_object.d.ts +77 -0
  408. package/core/renderers/zelos/path_object.ts +215 -0
  409. package/core/renderers/zelos/renderer.d.ts +74 -0
  410. package/core/renderers/zelos/renderer.ts +142 -0
  411. package/core/renderers/zelos/zelos.d.ts +12 -0
  412. package/core/renderers/zelos/zelos.ts +39 -0
  413. package/core/scrollbar.d.ts +277 -0
  414. package/core/{scrollbar.js → scrollbar.ts} +307 -328
  415. package/core/scrollbar_pair.d.ts +105 -0
  416. package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
  417. package/core/serialization/blocks.d.ts +98 -0
  418. package/core/serialization/{blocks.js → blocks.ts} +229 -228
  419. package/core/serialization/exceptions.d.ts +73 -0
  420. package/core/serialization/exceptions.ts +98 -0
  421. package/core/serialization/priorities.d.ts +15 -0
  422. package/core/serialization/{priorities.js → priorities.ts} +4 -10
  423. package/core/serialization/registry.d.ts +20 -0
  424. package/core/serialization/{registry.js → registry.ts} +11 -13
  425. package/core/serialization/variables.d.ts +14 -0
  426. package/core/serialization/{variables.js → variables.ts} +30 -32
  427. package/core/serialization/workspaces.d.ts +28 -0
  428. package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
  429. package/core/shortcut_items.d.ts +61 -0
  430. package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
  431. package/core/shortcut_registry.d.ts +151 -0
  432. package/core/shortcut_registry.ts +355 -0
  433. package/core/sprites.d.ts +19 -0
  434. package/core/{sprites.js → sprites.ts} +4 -6
  435. package/core/theme/classic.d.ts +12 -0
  436. package/core/theme/{classic.js → classic.ts} +5 -7
  437. package/core/theme/themes.d.ts +8 -0
  438. package/core/theme/themes.ts +22 -0
  439. package/core/theme/zelos.d.ts +11 -0
  440. package/core/theme/{zelos.js → zelos.ts} +4 -7
  441. package/core/theme.d.ts +142 -0
  442. package/core/theme.ts +221 -0
  443. package/core/theme_manager.d.ts +81 -0
  444. package/core/theme_manager.ts +186 -0
  445. package/core/toolbox/category.d.ts +239 -0
  446. package/core/toolbox/category.ts +679 -0
  447. package/core/toolbox/collapsible_category.d.ts +91 -0
  448. package/core/toolbox/collapsible_category.ts +273 -0
  449. package/core/toolbox/separator.d.ts +39 -0
  450. package/core/toolbox/separator.ts +105 -0
  451. package/core/toolbox/toolbox.d.ts +352 -0
  452. package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
  453. package/core/toolbox/toolbox_item.d.ts +85 -0
  454. package/core/toolbox/toolbox_item.ts +147 -0
  455. package/core/tooltip.d.ts +126 -0
  456. package/core/{tooltip.js → tooltip.ts} +136 -214
  457. package/core/touch.d.ts +121 -0
  458. package/core/touch.ts +306 -0
  459. package/core/touch_gesture.d.ts +115 -0
  460. package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
  461. package/core/trashcan.d.ts +195 -0
  462. package/core/{trashcan.js → trashcan.ts} +226 -312
  463. package/core/utils/aria.d.ts +67 -0
  464. package/core/utils/{aria.js → aria.ts} +47 -61
  465. package/core/utils/array.d.ts +14 -0
  466. package/core/utils/{array.js → array.ts} +10 -12
  467. package/core/utils/colour.d.ts +103 -0
  468. package/core/utils/{colour.js → colour.ts} +60 -72
  469. package/core/utils/coordinate.d.ts +72 -0
  470. package/core/utils/coordinate.ts +124 -0
  471. package/core/utils/deprecation.d.ts +17 -0
  472. package/core/utils/{deprecation.js → deprecation.ts} +11 -11
  473. package/core/utils/dom.d.ts +165 -0
  474. package/core/utils/{dom.js → dom.ts} +125 -147
  475. package/core/utils/idgenerator.d.ts +25 -0
  476. package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
  477. package/core/utils/keycodes.d.ts +137 -0
  478. package/core/utils/keycodes.ts +169 -0
  479. package/core/utils/math.d.ts +30 -0
  480. package/core/utils/{math.js → math.ts} +17 -19
  481. package/core/utils/metrics.d.ts +64 -0
  482. package/core/utils/metrics.ts +97 -0
  483. package/core/utils/object.d.ts +35 -0
  484. package/core/utils/{object.js → object.ts} +30 -26
  485. package/core/utils/parsing.d.ts +50 -0
  486. package/core/utils/{parsing.js → parsing.ts} +50 -50
  487. package/core/utils/rect.d.ts +38 -0
  488. package/core/utils/{rect.js → rect.ts} +18 -31
  489. package/core/utils/sentinel.d.ts +11 -0
  490. package/core/utils/{sentinel.js → sentinel.ts} +3 -5
  491. package/core/utils/size.d.ts +27 -0
  492. package/core/utils/{size.js → size.ts} +12 -26
  493. package/core/utils/string.d.ts +55 -0
  494. package/core/utils/{string.js → string.ts} +64 -61
  495. package/core/utils/style.d.ts +127 -0
  496. package/core/utils/{style.js → style.ts} +102 -92
  497. package/core/utils/svg.d.ts +68 -0
  498. package/core/utils/svg.ts +88 -0
  499. package/core/utils/svg_math.d.ts +70 -0
  500. package/core/utils/{svg_math.js → svg_math.ts} +72 -71
  501. package/core/utils/svg_paths.d.ts +101 -0
  502. package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
  503. package/core/utils/toolbox.d.ts +193 -0
  504. package/core/utils/toolbox.ts +433 -0
  505. package/core/utils/useragent.d.ts +33 -0
  506. package/core/utils/useragent.ts +135 -0
  507. package/core/utils/xml.d.ts +52 -0
  508. package/core/utils/{xml.js → xml.ts} +26 -36
  509. package/core/utils.d.ts +217 -0
  510. package/core/utils.ts +428 -0
  511. package/core/variable_map.d.ts +141 -0
  512. package/core/{variable_map.js → variable_map.ts} +131 -149
  513. package/core/variable_model.d.ts +40 -0
  514. package/core/variable_model.ts +82 -0
  515. package/core/variables.d.ts +181 -0
  516. package/core/{variables.js → variables.ts} +206 -188
  517. package/core/variables_dynamic.d.ts +38 -0
  518. package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
  519. package/core/warning.d.ts +50 -0
  520. package/core/{warning.js → warning.ts} +52 -66
  521. package/core/widgetdiv.d.ts +69 -0
  522. package/core/widgetdiv.ts +257 -0
  523. package/core/workspace.d.ts +386 -0
  524. package/core/workspace.ts +801 -0
  525. package/core/workspace_audio.d.ts +47 -0
  526. package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
  527. package/core/workspace_comment.d.ts +170 -0
  528. package/core/workspace_comment.ts +398 -0
  529. package/core/workspace_comment_svg.d.ts +329 -0
  530. package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
  531. package/core/workspace_drag_surface_svg.d.ts +68 -0
  532. package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
  533. package/core/workspace_dragger.d.ts +48 -0
  534. package/core/workspace_dragger.ts +104 -0
  535. package/core/workspace_svg.d.ts +920 -0
  536. package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
  537. package/core/xml.d.ts +117 -0
  538. package/core/{xml.js → xml.ts} +306 -326
  539. package/core/zoom_controls.d.ts +130 -0
  540. package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
  541. package/core.d.ts +1 -3
  542. package/core.js +1 -2
  543. package/dart.d.ts +0 -3
  544. package/dart_compressed.js +387 -99
  545. package/dart_compressed.js.map +1 -1
  546. package/generators/dart/all.js +2 -0
  547. package/generators/dart/colour.js +1 -1
  548. package/generators/dart/lists.js +1 -1
  549. package/generators/dart/logic.js +1 -1
  550. package/generators/dart/loops.js +1 -1
  551. package/generators/dart/math.js +1 -1
  552. package/generators/dart/procedures.js +1 -1
  553. package/generators/dart/text.js +1 -1
  554. package/generators/dart/variables.js +1 -1
  555. package/generators/dart/variables_dynamic.js +1 -1
  556. package/generators/dart.js +1 -2
  557. package/generators/javascript/all.js +2 -0
  558. package/generators/javascript/colour.js +1 -1
  559. package/generators/javascript/lists.js +1 -1
  560. package/generators/javascript/logic.js +1 -1
  561. package/generators/javascript/loops.js +1 -1
  562. package/generators/javascript/math.js +4 -4
  563. package/generators/javascript/procedures.js +1 -1
  564. package/generators/javascript/text.js +2 -2
  565. package/generators/javascript/variables.js +1 -1
  566. package/generators/javascript/variables_dynamic.js +1 -1
  567. package/generators/javascript.js +1 -3
  568. package/generators/lua/all.js +2 -0
  569. package/generators/lua/colour.js +1 -1
  570. package/generators/lua/lists.js +1 -1
  571. package/generators/lua/logic.js +1 -1
  572. package/generators/lua/loops.js +1 -1
  573. package/generators/lua/math.js +1 -1
  574. package/generators/lua/procedures.js +1 -1
  575. package/generators/lua/text.js +1 -1
  576. package/generators/lua/variables.js +1 -1
  577. package/generators/lua/variables_dynamic.js +1 -1
  578. package/generators/lua.js +1 -2
  579. package/generators/php/all.js +2 -0
  580. package/generators/php/colour.js +1 -1
  581. package/generators/php/lists.js +1 -2
  582. package/generators/php/logic.js +1 -1
  583. package/generators/php/loops.js +1 -1
  584. package/generators/php/math.js +1 -1
  585. package/generators/php/procedures.js +1 -1
  586. package/generators/php/text.js +1 -1
  587. package/generators/php/variables.js +1 -1
  588. package/generators/php/variables_dynamic.js +1 -1
  589. package/generators/php.js +1 -2
  590. package/generators/python/all.js +2 -0
  591. package/generators/python/colour.js +3 -3
  592. package/generators/python/lists.js +1 -1
  593. package/generators/python/logic.js +1 -1
  594. package/generators/python/loops.js +4 -7
  595. package/generators/python/math.js +1 -1
  596. package/generators/python/procedures.js +1 -1
  597. package/generators/python/text.js +1 -1
  598. package/generators/python/variables.js +1 -1
  599. package/generators/python/variables_dynamic.js +1 -1
  600. package/generators/python.js +1 -2
  601. package/index.d.ts +2 -8
  602. package/javascript.d.ts +0 -3
  603. package/javascript_compressed.js +314 -104
  604. package/javascript_compressed.js.map +1 -1
  605. package/lua.d.ts +0 -3
  606. package/lua_compressed.js +399 -81
  607. package/lua_compressed.js.map +1 -1
  608. package/package.json +5 -5
  609. package/php.d.ts +0 -3
  610. package/php_compressed.js +322 -93
  611. package/php_compressed.js.map +1 -1
  612. package/python.d.ts +0 -3
  613. package/python_compressed.js +237 -90
  614. package/python_compressed.js.map +1 -1
  615. package/blockly.d.ts +0 -26127
  616. package/core/blockly_options.js +0 -28
  617. package/core/bubble_dragger.js +0 -298
  618. package/core/clipboard.js +0 -80
  619. package/core/component_manager.js +0 -263
  620. package/core/contextmenu_items.js +0 -651
  621. package/core/contextmenu_registry.js +0 -178
  622. package/core/delete_area.js +0 -87
  623. package/core/dialog.js +0 -107
  624. package/core/drag_target.js +0 -98
  625. package/core/events/events.js +0 -147
  626. package/core/events/events_abstract.js +0 -133
  627. package/core/events/events_block_base.js +0 -70
  628. package/core/events/events_block_drag.js +0 -89
  629. package/core/events/events_bubble_open.js +0 -90
  630. package/core/events/events_comment_base.js +0 -121
  631. package/core/events/events_marker_move.js +0 -110
  632. package/core/events/events_selected.js +0 -83
  633. package/core/events/events_toolbox_item_select.js +0 -84
  634. package/core/events/events_trashcan_open.js +0 -73
  635. package/core/events/events_var_base.js +0 -70
  636. package/core/events/events_viewport.js +0 -107
  637. package/core/events/workspace_events.js +0 -93
  638. package/core/field_angle.js +0 -591
  639. package/core/field_checkbox.js +0 -255
  640. package/core/field_colour.js +0 -717
  641. package/core/field_image.js +0 -304
  642. package/core/field_label.js +0 -149
  643. package/core/field_label_serializable.js +0 -80
  644. package/core/field_textinput.js +0 -619
  645. package/core/flyout_button.js +0 -356
  646. package/core/grid.js +0 -226
  647. package/core/icon.js +0 -225
  648. package/core/input.js +0 -335
  649. package/core/interfaces/i_ast_node_location_svg.js +0 -45
  650. package/core/interfaces/i_ast_node_location_with_block.js +0 -41
  651. package/core/interfaces/i_autohideable.js +0 -40
  652. package/core/interfaces/i_block_dragger.js +0 -66
  653. package/core/interfaces/i_bounded_element.js +0 -45
  654. package/core/interfaces/i_bubble.js +0 -95
  655. package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
  656. package/core/interfaces/i_connection_checker.js +0 -104
  657. package/core/interfaces/i_contextmenu.js +0 -32
  658. package/core/interfaces/i_copyable.js +0 -49
  659. package/core/interfaces/i_delete_area.js +0 -50
  660. package/core/interfaces/i_drag_target.js +0 -88
  661. package/core/interfaces/i_flyout.js +0 -201
  662. package/core/interfaces/i_keyboard_accessible.js +0 -38
  663. package/core/interfaces/i_metrics_manager.js +0 -154
  664. package/core/interfaces/i_positionable.js +0 -51
  665. package/core/interfaces/i_selectable.js +0 -51
  666. package/core/interfaces/i_selectable_toolbox_item.js +0 -73
  667. package/core/interfaces/i_serializer.js +0 -77
  668. package/core/interfaces/i_styleable.js +0 -39
  669. package/core/interfaces/i_toolbox.js +0 -142
  670. package/core/interfaces/i_toolbox_item.js +0 -85
  671. package/core/marker_manager.js +0 -213
  672. package/core/menuitem.js +0 -292
  673. package/core/names.js +0 -293
  674. package/core/registry.js +0 -384
  675. package/core/renderers/common/block_rendering.js +0 -170
  676. package/core/renderers/common/constants.js +0 -1250
  677. package/core/renderers/common/i_path_object.js +0 -162
  678. package/core/renderers/common/marker_svg.js +0 -721
  679. package/core/renderers/common/path_object.js +0 -283
  680. package/core/renderers/common/renderer.js +0 -305
  681. package/core/renderers/geras/constants.js +0 -73
  682. package/core/renderers/geras/geras.js +0 -36
  683. package/core/renderers/geras/measurables/inline_input.js +0 -58
  684. package/core/renderers/geras/measurables/statement_input.js +0 -57
  685. package/core/renderers/geras/renderer.js +0 -149
  686. package/core/renderers/measurables/base.js +0 -64
  687. package/core/renderers/measurables/bottom_row.js +0 -138
  688. package/core/renderers/measurables/connection.js +0 -56
  689. package/core/renderers/measurables/external_value_input.js +0 -70
  690. package/core/renderers/measurables/field.js +0 -71
  691. package/core/renderers/measurables/in_row_spacer.js +0 -47
  692. package/core/renderers/measurables/input_connection.js +0 -75
  693. package/core/renderers/measurables/next_connection.js +0 -50
  694. package/core/renderers/measurables/output_connection.js +0 -61
  695. package/core/renderers/measurables/previous_connection.js +0 -50
  696. package/core/renderers/measurables/round_corner.js +0 -52
  697. package/core/renderers/measurables/row.js +0 -247
  698. package/core/renderers/measurables/spacer_row.js +0 -69
  699. package/core/renderers/measurables/square_corner.js +0 -50
  700. package/core/renderers/measurables/top_row.js +0 -143
  701. package/core/renderers/measurables/types.js +0 -353
  702. package/core/renderers/minimalist/drawer.js +0 -42
  703. package/core/renderers/minimalist/info.js +0 -54
  704. package/core/renderers/minimalist/minimalist.js +0 -26
  705. package/core/renderers/minimalist/renderer.js +0 -80
  706. package/core/renderers/thrasos/renderer.js +0 -53
  707. package/core/renderers/thrasos/thrasos.js +0 -22
  708. package/core/renderers/zelos/marker_svg.js +0 -179
  709. package/core/renderers/zelos/measurables/bottom_row.js +0 -66
  710. package/core/renderers/zelos/measurables/row_elements.js +0 -46
  711. package/core/renderers/zelos/path_object.js +0 -247
  712. package/core/renderers/zelos/renderer.js +0 -147
  713. package/core/renderers/zelos/zelos.js +0 -38
  714. package/core/serialization/exceptions.js +0 -144
  715. package/core/shortcut_registry.js +0 -366
  716. package/core/theme/themes.js +0 -23
  717. package/core/theme.js +0 -228
  718. package/core/theme_manager.js +0 -211
  719. package/core/toolbox/category.js +0 -751
  720. package/core/toolbox/collapsible_category.js +0 -311
  721. package/core/toolbox/separator.js +0 -133
  722. package/core/toolbox/toolbox_item.js +0 -173
  723. package/core/touch.js +0 -285
  724. package/core/utils/coordinate.js +0 -138
  725. package/core/utils/global.js +0 -41
  726. package/core/utils/keycodes.js +0 -172
  727. package/core/utils/metrics.js +0 -154
  728. package/core/utils/svg.js +0 -186
  729. package/core/utils/toolbox.js +0 -459
  730. package/core/utils/useragent.js +0 -197
  731. package/core/utils.js +0 -383
  732. package/core/variable_model.js +0 -96
  733. package/core/widgetdiv.js +0 -290
  734. package/core/workspace.js +0 -836
  735. package/core/workspace_comment.js +0 -400
  736. package/core/workspace_dragger.js +0 -115
@@ -0,0 +1,134 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2012 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FieldConfig, Field } from './field.js';
7
+ import type { Sentinel } from './utils/sentinel.js';
8
+ import { Size } from './utils/size.js';
9
+ /**
10
+ * Class for an image on a block.
11
+ * @alias Blockly.FieldImage
12
+ */
13
+ export declare class FieldImage extends Field {
14
+ /**
15
+ * Vertical padding below the image, which is included in the reported height
16
+ * of the field.
17
+ */
18
+ private static readonly Y_PADDING;
19
+ protected size_: Size;
20
+ private readonly imageHeight_;
21
+ /** The function to be called when this field is clicked. */
22
+ private clickHandler_;
23
+ /** The rendered field's image element. */
24
+ private imageElement_;
25
+ /**
26
+ * Editable fields usually show some sort of UI indicating they are
27
+ * editable. This field should not.
28
+ */
29
+ readonly EDITABLE = false;
30
+ /**
31
+ * Used to tell if the field needs to be rendered the next time the block is
32
+ * rendered. Image fields are statically sized, and only need to be
33
+ * rendered at initialization.
34
+ */
35
+ protected isDirty_: boolean;
36
+ /** Whether to flip this image in RTL. */
37
+ private flipRtl_;
38
+ /** Alt text of this image. */
39
+ private altText_;
40
+ value_: any;
41
+ /**
42
+ * @param src The URL of the image.
43
+ * Also accepts Field.SKIP_SETUP if you wish to skip setup (only used by
44
+ * subclasses that want to handle configuration and setting the field value
45
+ * after their own constructors have run).
46
+ * @param width Width of the image.
47
+ * @param height Height of the image.
48
+ * @param opt_alt Optional alt text for when block is collapsed.
49
+ * @param opt_onClick Optional function to be called when the image is
50
+ * clicked. If opt_onClick is defined, opt_alt must also be defined.
51
+ * @param opt_flipRtl Whether to flip the icon in RTL.
52
+ * @param opt_config A map of options used to configure the field.
53
+ * See the [field creation documentation]{@link
54
+ * https://developers.google.com/blockly/guides/create-custom-blocks/fields/built-in-fields/image#creation}
55
+ * for a list of properties this parameter supports.
56
+ */
57
+ constructor(src: string | Sentinel, width: string | number, height: string | number, opt_alt?: string, opt_onClick?: (p1: FieldImage) => any, opt_flipRtl?: boolean, opt_config?: FieldImageConfig);
58
+ /**
59
+ * Configure the field based on the given map of options.
60
+ * @param config A map of options to configure the field based on.
61
+ */
62
+ protected configure_(config: FieldImageConfig): void;
63
+ /**
64
+ * Create the block UI for this image.
65
+ * @internal
66
+ */
67
+ initView(): void;
68
+ updateSize_(): void;
69
+ /**
70
+ * Ensure that the input value (the source URL) is a string.
71
+ * @param opt_newValue The input value.
72
+ * @return A string, or null if invalid.
73
+ */
74
+ protected doClassValidation_(opt_newValue?: any): string | null;
75
+ /**
76
+ * Update the value of this image field, and update the displayed image.
77
+ * @param newValue The value to be saved. The default validator guarantees
78
+ * that this is a string.
79
+ */
80
+ protected doValueUpdate_(newValue: any): void;
81
+ /**
82
+ * Get whether to flip this image in RTL
83
+ * @return True if we should flip in RTL.
84
+ */
85
+ getFlipRtl(): boolean;
86
+ /**
87
+ * Set the alt text of this image.
88
+ * @param alt New alt text.
89
+ */
90
+ setAlt(alt: string | null): void;
91
+ /**
92
+ * If field click is called, and click handler defined,
93
+ * call the handler.
94
+ */
95
+ protected showEditor_(): void;
96
+ /**
97
+ * Set the function that is called when this image is clicked.
98
+ * @param func The function that is called when the image is clicked, or null
99
+ * to remove.
100
+ */
101
+ setOnClickHandler(func: ((p1: FieldImage) => any) | null): void;
102
+ /**
103
+ * Use the `getText_` developer hook to override the field's text
104
+ * representation.
105
+ * Return the image alt text instead.
106
+ * @return The image alt text.
107
+ */
108
+ protected getText_(): string | null;
109
+ /**
110
+ * Construct a FieldImage from a JSON arg object,
111
+ * dereferencing any string table references.
112
+ * @param options A JSON object with options (src, width, height, alt, and
113
+ * flipRtl).
114
+ * @return The new field instance.
115
+ * @nocollapse
116
+ * @internal
117
+ */
118
+ static fromJson(options: FieldImageFromJsonConfig): FieldImage;
119
+ }
120
+ /**
121
+ * Config options for the image field.
122
+ */
123
+ export interface FieldImageConfig extends FieldConfig {
124
+ flipRtl?: boolean;
125
+ alt?: string;
126
+ }
127
+ /**
128
+ * fromJson config options for the colour field.
129
+ */
130
+ export interface FieldImageFromJsonConfig extends FieldImageConfig {
131
+ src?: string;
132
+ width?: number;
133
+ height?: number;
134
+ }
@@ -0,0 +1,282 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2012 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Image field. Used for pictures, icons, etc.
9
+ */
10
+
11
+ /**
12
+ * Image field. Used for pictures, icons, etc.
13
+ * @class
14
+ */
15
+ import * as goog from '../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.FieldImage');
17
+
18
+ import {FieldConfig, Field} from './field.js';
19
+ import * as fieldRegistry from './field_registry.js';
20
+ import * as dom from './utils/dom.js';
21
+ import * as parsing from './utils/parsing.js';
22
+ import type {Sentinel} from './utils/sentinel.js';
23
+ import {Size} from './utils/size.js';
24
+ import {Svg} from './utils/svg.js';
25
+
26
+
27
+ /**
28
+ * Class for an image on a block.
29
+ * @alias Blockly.FieldImage
30
+ */
31
+ export class FieldImage extends Field {
32
+ /**
33
+ * Vertical padding below the image, which is included in the reported height
34
+ * of the field.
35
+ */
36
+ private static readonly Y_PADDING = 1;
37
+ protected override size_: Size;
38
+ private readonly imageHeight_: number;
39
+
40
+ /** The function to be called when this field is clicked. */
41
+ private clickHandler_: ((p1: FieldImage) => AnyDuringMigration)|null = null;
42
+
43
+ /** The rendered field's image element. */
44
+ // AnyDuringMigration because: Type 'null' is not assignable to type
45
+ // 'SVGImageElement'.
46
+ private imageElement_: SVGImageElement = null as AnyDuringMigration;
47
+
48
+ /**
49
+ * Editable fields usually show some sort of UI indicating they are
50
+ * editable. This field should not.
51
+ */
52
+ override readonly EDITABLE = false;
53
+
54
+ /**
55
+ * Used to tell if the field needs to be rendered the next time the block is
56
+ * rendered. Image fields are statically sized, and only need to be
57
+ * rendered at initialization.
58
+ */
59
+ protected override isDirty_ = false;
60
+
61
+ /** Whether to flip this image in RTL. */
62
+ private flipRtl_ = false;
63
+
64
+ /** Alt text of this image. */
65
+ private altText_ = '';
66
+ override value_: AnyDuringMigration;
67
+
68
+ /**
69
+ * @param src The URL of the image.
70
+ * Also accepts Field.SKIP_SETUP if you wish to skip setup (only used by
71
+ * subclasses that want to handle configuration and setting the field value
72
+ * after their own constructors have run).
73
+ * @param width Width of the image.
74
+ * @param height Height of the image.
75
+ * @param opt_alt Optional alt text for when block is collapsed.
76
+ * @param opt_onClick Optional function to be called when the image is
77
+ * clicked. If opt_onClick is defined, opt_alt must also be defined.
78
+ * @param opt_flipRtl Whether to flip the icon in RTL.
79
+ * @param opt_config A map of options used to configure the field.
80
+ * See the [field creation documentation]{@link
81
+ * https://developers.google.com/blockly/guides/create-custom-blocks/fields/built-in-fields/image#creation}
82
+ * for a list of properties this parameter supports.
83
+ */
84
+ constructor(
85
+ src: string|Sentinel, width: string|number, height: string|number,
86
+ opt_alt?: string, opt_onClick?: (p1: FieldImage) => AnyDuringMigration,
87
+ opt_flipRtl?: boolean, opt_config?: FieldImageConfig) {
88
+ super(Field.SKIP_SETUP);
89
+
90
+ const imageHeight = Number(parsing.replaceMessageReferences(height));
91
+ const imageWidth = Number(parsing.replaceMessageReferences(width));
92
+ if (isNaN(imageHeight) || isNaN(imageWidth)) {
93
+ throw Error(
94
+ 'Height and width values of an image field must cast to' +
95
+ ' numbers.');
96
+ }
97
+ if (imageHeight <= 0 || imageWidth <= 0) {
98
+ throw Error(
99
+ 'Height and width values of an image field must be greater' +
100
+ ' than 0.');
101
+ }
102
+
103
+ /** The size of the area rendered by the field. */
104
+ this.size_ = new Size(imageWidth, imageHeight + FieldImage.Y_PADDING);
105
+
106
+ /**
107
+ * Store the image height, since it is different from the field height.
108
+ */
109
+ this.imageHeight_ = imageHeight;
110
+
111
+ if (typeof opt_onClick === 'function') {
112
+ this.clickHandler_ = opt_onClick;
113
+ }
114
+
115
+ if (src === Field.SKIP_SETUP) {
116
+ return;
117
+ }
118
+
119
+ if (opt_config) {
120
+ this.configure_(opt_config);
121
+ } else {
122
+ this.flipRtl_ = !!opt_flipRtl;
123
+ this.altText_ = parsing.replaceMessageReferences(opt_alt) || '';
124
+ }
125
+ this.setValue(parsing.replaceMessageReferences(src));
126
+ }
127
+
128
+ /**
129
+ * Configure the field based on the given map of options.
130
+ * @param config A map of options to configure the field based on.
131
+ */
132
+ protected override configure_(config: FieldImageConfig) {
133
+ super.configure_(config);
134
+ if (config.flipRtl) this.flipRtl_ = config.flipRtl;
135
+ if (config.alt) {
136
+ this.altText_ = parsing.replaceMessageReferences(config.alt);
137
+ }
138
+ }
139
+
140
+ /**
141
+ * Create the block UI for this image.
142
+ * @internal
143
+ */
144
+ override initView() {
145
+ this.imageElement_ = dom.createSvgElement(
146
+ Svg.IMAGE, {
147
+ 'height': this.imageHeight_ + 'px',
148
+ 'width': this.size_.width + 'px',
149
+ 'alt': this.altText_,
150
+ },
151
+ this.fieldGroup_);
152
+ this.imageElement_.setAttributeNS(
153
+ dom.XLINK_NS, 'xlink:href', this.value_ as string);
154
+
155
+ if (this.clickHandler_) {
156
+ this.imageElement_.style.cursor = 'pointer';
157
+ }
158
+ }
159
+
160
+ override updateSize_() {}
161
+ // NOP
162
+
163
+ /**
164
+ * Ensure that the input value (the source URL) is a string.
165
+ * @param opt_newValue The input value.
166
+ * @return A string, or null if invalid.
167
+ */
168
+ protected override doClassValidation_(opt_newValue?: AnyDuringMigration):
169
+ string|null {
170
+ if (typeof opt_newValue !== 'string') {
171
+ return null;
172
+ }
173
+ return opt_newValue;
174
+ }
175
+
176
+ /**
177
+ * Update the value of this image field, and update the displayed image.
178
+ * @param newValue The value to be saved. The default validator guarantees
179
+ * that this is a string.
180
+ */
181
+ protected override doValueUpdate_(newValue: AnyDuringMigration) {
182
+ this.value_ = newValue;
183
+ if (this.imageElement_) {
184
+ this.imageElement_.setAttributeNS(
185
+ dom.XLINK_NS, 'xlink:href', String(this.value_));
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Get whether to flip this image in RTL
191
+ * @return True if we should flip in RTL.
192
+ */
193
+ override getFlipRtl(): boolean {
194
+ return this.flipRtl_;
195
+ }
196
+
197
+ /**
198
+ * Set the alt text of this image.
199
+ * @param alt New alt text.
200
+ */
201
+ setAlt(alt: string|null) {
202
+ if (alt === this.altText_) {
203
+ return;
204
+ }
205
+ this.altText_ = alt || '';
206
+ if (this.imageElement_) {
207
+ this.imageElement_.setAttribute('alt', this.altText_);
208
+ }
209
+ }
210
+
211
+ /**
212
+ * If field click is called, and click handler defined,
213
+ * call the handler.
214
+ */
215
+ protected override showEditor_() {
216
+ if (this.clickHandler_) {
217
+ this.clickHandler_(this);
218
+ }
219
+ }
220
+
221
+ /**
222
+ * Set the function that is called when this image is clicked.
223
+ * @param func The function that is called when the image is clicked, or null
224
+ * to remove.
225
+ */
226
+ setOnClickHandler(func: ((p1: FieldImage) => AnyDuringMigration)|null) {
227
+ this.clickHandler_ = func;
228
+ }
229
+
230
+ /**
231
+ * Use the `getText_` developer hook to override the field's text
232
+ * representation.
233
+ * Return the image alt text instead.
234
+ * @return The image alt text.
235
+ */
236
+ protected override getText_(): string|null {
237
+ return this.altText_;
238
+ }
239
+
240
+ /**
241
+ * Construct a FieldImage from a JSON arg object,
242
+ * dereferencing any string table references.
243
+ * @param options A JSON object with options (src, width, height, alt, and
244
+ * flipRtl).
245
+ * @return The new field instance.
246
+ * @nocollapse
247
+ * @internal
248
+ */
249
+ static fromJson(options: FieldImageFromJsonConfig): FieldImage {
250
+ if (!options.src || !options.width || !options.height) {
251
+ throw new Error(
252
+ 'src, width, and height values for an image field are' +
253
+ 'required. The width and height must be non-zero.');
254
+ }
255
+ // `this` might be a subclass of FieldImage if that class doesn't override
256
+ // the static fromJson method.
257
+ return new this(
258
+ options.src, options.width, options.height, undefined, undefined,
259
+ undefined, options);
260
+ }
261
+ }
262
+
263
+ fieldRegistry.register('field_image', FieldImage);
264
+
265
+ (FieldImage.prototype as AnyDuringMigration).DEFAULT_VALUE = '';
266
+
267
+ /**
268
+ * Config options for the image field.
269
+ */
270
+ export interface FieldImageConfig extends FieldConfig {
271
+ flipRtl?: boolean;
272
+ alt?: string;
273
+ }
274
+
275
+ /**
276
+ * fromJson config options for the colour field.
277
+ */
278
+ export interface FieldImageFromJsonConfig extends FieldImageConfig {
279
+ src?: string;
280
+ width?: number;
281
+ height?: number;
282
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2012 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FieldConfig, Field } from './field.js';
7
+ import type { Sentinel } from './utils/sentinel.js';
8
+ /**
9
+ * Class for a non-editable, non-serializable text field.
10
+ * @alias Blockly.FieldLabel
11
+ */
12
+ export declare class FieldLabel extends Field {
13
+ /** The html class name to use for this field. */
14
+ private class_;
15
+ /**
16
+ * Editable fields usually show some sort of UI indicating they are
17
+ * editable. This field should not.
18
+ */
19
+ EDITABLE: boolean;
20
+ /**
21
+ * @param opt_value The initial value of the field. Should cast to a string.
22
+ * Defaults to an empty string if null or undefined. Also accepts
23
+ * Field.SKIP_SETUP if you wish to skip setup (only used by subclasses
24
+ * that want to handle configuration and setting the field value after
25
+ * their own constructors have run).
26
+ * @param opt_class Optional CSS class for the field's text.
27
+ * @param opt_config A map of options used to configure the field.
28
+ * See the [field creation documentation]{@link
29
+ * https://developers.google.com/blockly/guides/create-custom-blocks/fields/built-in-fields/label#creation}
30
+ * for a list of properties this parameter supports.
31
+ */
32
+ constructor(opt_value?: string | Sentinel, opt_class?: string, opt_config?: FieldLabelConfig);
33
+ protected configure_(config: FieldLabelConfig): void;
34
+ /**
35
+ * Create block UI for this label.
36
+ * @internal
37
+ */
38
+ initView(): void;
39
+ /**
40
+ * Ensure that the input value casts to a valid string.
41
+ * @param opt_newValue The input value.
42
+ * @return A valid string, or null if invalid.
43
+ */
44
+ protected doClassValidation_(opt_newValue?: any): string | null;
45
+ /**
46
+ * Set the CSS class applied to the field's textElement_.
47
+ * @param cssClass The new CSS class name, or null to remove.
48
+ */
49
+ setClass(cssClass: string | null): void;
50
+ /**
51
+ * Construct a FieldLabel from a JSON arg object,
52
+ * dereferencing any string table references.
53
+ * @param options A JSON object with options (text, and class).
54
+ * @return The new field instance.
55
+ * @nocollapse
56
+ * @internal
57
+ */
58
+ static fromJson(options: FieldLabelFromJsonConfig): FieldLabel;
59
+ }
60
+ /**
61
+ * Config options for the label field.
62
+ */
63
+ export interface FieldLabelConfig extends FieldConfig {
64
+ class?: string;
65
+ }
66
+ /**
67
+ * fromJson config options for the label field.
68
+ */
69
+ export interface FieldLabelFromJsonConfig extends FieldLabelConfig {
70
+ text?: string;
71
+ }
@@ -0,0 +1,152 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2012 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Non-editable, non-serializable text field. Used for titles,
9
+ * labels, etc.
10
+ */
11
+
12
+ /**
13
+ * Non-editable, non-serializable text field. Used for titles,
14
+ * labels, etc.
15
+ * @class
16
+ */
17
+ import * as goog from '../closure/goog/goog.js';
18
+ goog.declareModuleId('Blockly.FieldLabel');
19
+
20
+ import {FieldConfig, Field} from './field.js';
21
+ import * as fieldRegistry from './field_registry.js';
22
+ import * as dom from './utils/dom.js';
23
+ import * as parsing from './utils/parsing.js';
24
+ import type {Sentinel} from './utils/sentinel.js';
25
+
26
+
27
+ /**
28
+ * Class for a non-editable, non-serializable text field.
29
+ * @alias Blockly.FieldLabel
30
+ */
31
+ export class FieldLabel extends Field {
32
+ /** The html class name to use for this field. */
33
+ private class_: string|null = null;
34
+
35
+ /**
36
+ * Editable fields usually show some sort of UI indicating they are
37
+ * editable. This field should not.
38
+ */
39
+ override EDITABLE = false;
40
+
41
+ /**
42
+ * @param opt_value The initial value of the field. Should cast to a string.
43
+ * Defaults to an empty string if null or undefined. Also accepts
44
+ * Field.SKIP_SETUP if you wish to skip setup (only used by subclasses
45
+ * that want to handle configuration and setting the field value after
46
+ * their own constructors have run).
47
+ * @param opt_class Optional CSS class for the field's text.
48
+ * @param opt_config A map of options used to configure the field.
49
+ * See the [field creation documentation]{@link
50
+ * https://developers.google.com/blockly/guides/create-custom-blocks/fields/built-in-fields/label#creation}
51
+ * for a list of properties this parameter supports.
52
+ */
53
+ constructor(
54
+ opt_value?: string|Sentinel, opt_class?: string,
55
+ opt_config?: FieldLabelConfig) {
56
+ super(Field.SKIP_SETUP);
57
+
58
+ if (opt_value === Field.SKIP_SETUP) {
59
+ return;
60
+ }
61
+ if (opt_config) {
62
+ this.configure_(opt_config);
63
+ } else {
64
+ this.class_ = opt_class || null;
65
+ }
66
+ this.setValue(opt_value);
67
+ }
68
+
69
+ protected override configure_(config: FieldLabelConfig) {
70
+ super.configure_(config);
71
+ if (config.class) this.class_ = config.class;
72
+ }
73
+
74
+ /**
75
+ * Create block UI for this label.
76
+ * @internal
77
+ */
78
+ override initView() {
79
+ this.createTextElement_();
80
+ if (this.class_) {
81
+ dom.addClass((this.textElement_), this.class_);
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Ensure that the input value casts to a valid string.
87
+ * @param opt_newValue The input value.
88
+ * @return A valid string, or null if invalid.
89
+ */
90
+ protected override doClassValidation_(opt_newValue?: AnyDuringMigration):
91
+ string|null {
92
+ if (opt_newValue === null || opt_newValue === undefined) {
93
+ return null;
94
+ }
95
+ return String(opt_newValue);
96
+ }
97
+
98
+ /**
99
+ * Set the CSS class applied to the field's textElement_.
100
+ * @param cssClass The new CSS class name, or null to remove.
101
+ */
102
+ setClass(cssClass: string|null) {
103
+ if (this.textElement_) {
104
+ // This check isn't necessary, but it's faster than letting removeClass
105
+ // figure it out.
106
+ if (this.class_) {
107
+ dom.removeClass(this.textElement_, this.class_);
108
+ }
109
+ if (cssClass) {
110
+ dom.addClass(this.textElement_, cssClass);
111
+ }
112
+ }
113
+ this.class_ = cssClass;
114
+ }
115
+
116
+ /**
117
+ * Construct a FieldLabel from a JSON arg object,
118
+ * dereferencing any string table references.
119
+ * @param options A JSON object with options (text, and class).
120
+ * @return The new field instance.
121
+ * @nocollapse
122
+ * @internal
123
+ */
124
+ static fromJson(options: FieldLabelFromJsonConfig): FieldLabel {
125
+ const text = parsing.replaceMessageReferences(options.text);
126
+ // `this` might be a subclass of FieldLabel if that class doesn't override
127
+ // the static fromJson method.
128
+ return new this(text, undefined, options);
129
+ }
130
+ }
131
+
132
+ fieldRegistry.register('field_label', FieldLabel);
133
+
134
+ (FieldLabel.prototype as AnyDuringMigration).DEFAULT_VALUE = '';
135
+
136
+ // clang-format off
137
+ // Clang does not like the 'class' keyword being used as a property.
138
+ /**
139
+ * Config options for the label field.
140
+ */
141
+ export interface FieldLabelConfig extends FieldConfig {
142
+ class?: string;
143
+ }
144
+ // clang-format on
145
+
146
+
147
+ /**
148
+ * fromJson config options for the label field.
149
+ */
150
+ export interface FieldLabelFromJsonConfig extends FieldLabelConfig {
151
+ text?: string;
152
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FieldLabelConfig, FieldLabelFromJsonConfig, FieldLabel } from './field_label.js';
7
+ /**
8
+ * Class for a non-editable, serializable text field.
9
+ * @alias Blockly.FieldLabelSerializable
10
+ */
11
+ export declare class FieldLabelSerializable extends FieldLabel {
12
+ /**
13
+ * Editable fields usually show some sort of UI indicating they are
14
+ * editable. This field should not.
15
+ */
16
+ EDITABLE: boolean;
17
+ /**
18
+ * Serializable fields are saved by the XML renderer, non-serializable
19
+ * fields are not. This field should be serialized, but only edited
20
+ * programmatically.
21
+ */
22
+ SERIALIZABLE: boolean;
23
+ /**
24
+ * @param opt_value The initial value of the field. Should cast to a string.
25
+ * Defaults to an empty string if null or undefined.
26
+ * @param opt_class Optional CSS class for the field's text.
27
+ * @param opt_config A map of options used to configure the field.
28
+ * See the [field creation documentation]{@link
29
+ * https://developers.google.com/blockly/guides/create-custom-blocks/fields/built-in-fields/label-serializable#creation}
30
+ * for a list of properties this parameter supports.
31
+ */
32
+ constructor(opt_value?: string, opt_class?: string, opt_config?: FieldLabelConfig);
33
+ /**
34
+ * Construct a FieldLabelSerializable from a JSON arg object,
35
+ * dereferencing any string table references.
36
+ * @param options A JSON object with options (text, and class).
37
+ * @return The new field instance.
38
+ * @nocollapse
39
+ * @internal
40
+ */
41
+ static fromJson(options: FieldLabelFromJsonConfig): FieldLabelSerializable;
42
+ }