blockly 12.0.0-beta.3 → 12.0.0-beta.5

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 (319) hide show
  1. package/blockly.min.js +565 -503
  2. package/blockly.mjs +10 -0
  3. package/blockly_compressed.js +530 -501
  4. package/blockly_compressed.js.map +1 -1
  5. package/blocks_compressed.js +2 -2
  6. package/blocks_compressed.js.map +1 -1
  7. package/core/block_svg.d.ts +53 -23
  8. package/core/blockly.d.ts +13 -1
  9. package/core/comments/rendered_workspace_comment.d.ts +1 -1
  10. package/core/connection.d.ts +2 -0
  11. package/core/contextmenu.d.ts +6 -2
  12. package/core/contextmenu_registry.d.ts +21 -16
  13. package/core/dialog.d.ts +36 -16
  14. package/core/field.d.ts +29 -31
  15. package/core/field_checkbox.d.ts +9 -0
  16. package/core/field_dropdown.d.ts +19 -2
  17. package/core/field_image.d.ts +9 -0
  18. package/core/field_label.d.ts +9 -0
  19. package/core/field_number.d.ts +9 -0
  20. package/core/field_textinput.d.ts +9 -0
  21. package/core/flyout_base.d.ts +23 -1
  22. package/core/flyout_button.d.ts +30 -7
  23. package/core/flyout_item.d.ts +3 -9
  24. package/core/flyout_separator.d.ts +18 -1
  25. package/core/focus_manager.d.ts +82 -14
  26. package/core/interfaces/i_ast_node_location_svg.d.ts +0 -12
  27. package/core/interfaces/i_autohideable.d.ts +2 -0
  28. package/core/interfaces/i_flyout.d.ts +2 -1
  29. package/core/interfaces/i_focusable_node.d.ts +31 -2
  30. package/core/interfaces/i_focusable_tree.d.ts +67 -0
  31. package/core/interfaces/i_navigable.d.ts +30 -0
  32. package/core/interfaces/i_navigation_policy.d.ts +42 -0
  33. package/core/interfaces/i_toolbox.d.ts +2 -1
  34. package/core/interfaces/i_toolbox_item.d.ts +2 -1
  35. package/core/keyboard_nav/ast_node.d.ts +1 -113
  36. package/core/keyboard_nav/block_navigation_policy.d.ts +56 -0
  37. package/core/keyboard_nav/connection_navigation_policy.d.ts +53 -0
  38. package/core/keyboard_nav/field_navigation_policy.d.ts +42 -0
  39. package/core/keyboard_nav/flyout_button_navigation_policy.d.ts +42 -0
  40. package/core/keyboard_nav/flyout_navigation_policy.d.ts +51 -0
  41. package/core/keyboard_nav/flyout_separator_navigation_policy.d.ts +19 -0
  42. package/core/keyboard_nav/line_cursor.d.ts +60 -96
  43. package/core/keyboard_nav/marker.d.ts +20 -29
  44. package/core/keyboard_nav/workspace_navigation_policy.d.ts +42 -0
  45. package/core/marker_manager.d.ts +0 -26
  46. package/core/menuitem.d.ts +5 -2
  47. package/core/navigator.d.ts +65 -0
  48. package/core/rendered_connection.d.ts +35 -1
  49. package/core/renderers/common/block_rendering.d.ts +1 -2
  50. package/core/renderers/common/drawer.d.ts +1 -1
  51. package/core/renderers/common/i_path_object.d.ts +1 -25
  52. package/core/renderers/common/path_object.d.ts +1 -26
  53. package/core/renderers/common/renderer.d.ts +0 -11
  54. package/core/renderers/zelos/drawer.d.ts +1 -1
  55. package/core/renderers/zelos/renderer.d.ts +0 -11
  56. package/core/renderers/zelos/zelos.d.ts +1 -2
  57. package/core/shortcut_registry.d.ts +7 -2
  58. package/core/toast.d.ts +74 -0
  59. package/core/toolbox/toolbox.d.ts +23 -1
  60. package/core/toolbox/toolbox_item.d.ts +9 -0
  61. package/core/utils/aria.d.ts +5 -2
  62. package/core/variable_map.d.ts +4 -4
  63. package/core/variables.d.ts +3 -1
  64. package/core/workspace.d.ts +10 -9
  65. package/core/workspace_svg.d.ts +105 -48
  66. package/index.mjs +10 -0
  67. package/msg/ab.js +33 -0
  68. package/msg/ab.mjs +33 -0
  69. package/msg/ace.js +33 -0
  70. package/msg/ace.mjs +33 -0
  71. package/msg/af.js +33 -0
  72. package/msg/af.mjs +33 -0
  73. package/msg/am.js +33 -0
  74. package/msg/am.mjs +33 -0
  75. package/msg/ar.js +33 -0
  76. package/msg/ar.mjs +33 -0
  77. package/msg/ast.js +33 -0
  78. package/msg/ast.mjs +33 -0
  79. package/msg/az.js +33 -0
  80. package/msg/az.mjs +33 -0
  81. package/msg/ba.js +33 -0
  82. package/msg/ba.mjs +33 -0
  83. package/msg/bcc.js +33 -0
  84. package/msg/bcc.mjs +33 -0
  85. package/msg/be-tarask.js +33 -0
  86. package/msg/be-tarask.mjs +33 -0
  87. package/msg/be.js +33 -0
  88. package/msg/be.mjs +33 -0
  89. package/msg/bg.js +33 -0
  90. package/msg/bg.mjs +33 -0
  91. package/msg/bn.js +33 -0
  92. package/msg/bn.mjs +33 -0
  93. package/msg/br.js +33 -0
  94. package/msg/br.mjs +33 -0
  95. package/msg/bs.js +33 -0
  96. package/msg/bs.mjs +33 -0
  97. package/msg/ca.js +33 -0
  98. package/msg/ca.mjs +33 -0
  99. package/msg/cdo.js +33 -0
  100. package/msg/cdo.mjs +33 -0
  101. package/msg/ce.js +33 -0
  102. package/msg/ce.mjs +33 -0
  103. package/msg/cs.js +33 -0
  104. package/msg/cs.mjs +33 -0
  105. package/msg/da.js +33 -0
  106. package/msg/da.mjs +33 -0
  107. package/msg/de.js +33 -0
  108. package/msg/de.mjs +33 -0
  109. package/msg/diq.js +33 -0
  110. package/msg/diq.mjs +33 -0
  111. package/msg/dtp.js +33 -0
  112. package/msg/dtp.mjs +33 -0
  113. package/msg/dty.js +33 -0
  114. package/msg/dty.mjs +33 -0
  115. package/msg/ee.js +33 -0
  116. package/msg/ee.mjs +33 -0
  117. package/msg/el.js +33 -0
  118. package/msg/el.mjs +33 -0
  119. package/msg/en-gb.js +33 -0
  120. package/msg/en-gb.mjs +33 -0
  121. package/msg/en.js +33 -0
  122. package/msg/en.mjs +33 -0
  123. package/msg/eo.js +33 -0
  124. package/msg/eo.mjs +33 -0
  125. package/msg/es.js +33 -0
  126. package/msg/es.mjs +33 -0
  127. package/msg/et.js +33 -0
  128. package/msg/et.mjs +33 -0
  129. package/msg/eu.js +33 -0
  130. package/msg/eu.mjs +33 -0
  131. package/msg/fa.js +33 -0
  132. package/msg/fa.mjs +33 -0
  133. package/msg/fi.js +33 -0
  134. package/msg/fi.mjs +33 -0
  135. package/msg/fo.js +33 -0
  136. package/msg/fo.mjs +33 -0
  137. package/msg/fr.js +33 -0
  138. package/msg/fr.mjs +33 -0
  139. package/msg/frr.js +33 -0
  140. package/msg/frr.mjs +33 -0
  141. package/msg/gl.js +33 -0
  142. package/msg/gl.mjs +33 -0
  143. package/msg/gn.js +33 -0
  144. package/msg/gn.mjs +33 -0
  145. package/msg/gor.js +33 -0
  146. package/msg/gor.mjs +33 -0
  147. package/msg/ha.js +33 -0
  148. package/msg/ha.mjs +33 -0
  149. package/msg/hak.js +33 -0
  150. package/msg/hak.mjs +33 -0
  151. package/msg/he.js +33 -0
  152. package/msg/he.mjs +33 -0
  153. package/msg/hi.js +33 -0
  154. package/msg/hi.mjs +33 -0
  155. package/msg/hr.js +33 -0
  156. package/msg/hr.mjs +33 -0
  157. package/msg/hrx.js +33 -0
  158. package/msg/hrx.mjs +33 -0
  159. package/msg/hsb.js +33 -0
  160. package/msg/hsb.mjs +33 -0
  161. package/msg/hu.js +33 -0
  162. package/msg/hu.mjs +33 -0
  163. package/msg/hy.js +33 -0
  164. package/msg/hy.mjs +33 -0
  165. package/msg/ia.js +33 -0
  166. package/msg/ia.mjs +33 -0
  167. package/msg/id.js +33 -0
  168. package/msg/id.mjs +33 -0
  169. package/msg/ig.js +33 -0
  170. package/msg/ig.mjs +33 -0
  171. package/msg/inh.js +33 -0
  172. package/msg/inh.mjs +33 -0
  173. package/msg/is.js +33 -0
  174. package/msg/is.mjs +33 -0
  175. package/msg/it.js +33 -0
  176. package/msg/it.mjs +33 -0
  177. package/msg/ja.js +33 -0
  178. package/msg/ja.mjs +33 -0
  179. package/msg/ka.js +33 -0
  180. package/msg/ka.mjs +33 -0
  181. package/msg/kab.js +33 -0
  182. package/msg/kab.mjs +33 -0
  183. package/msg/kbd-cyrl.js +33 -0
  184. package/msg/kbd-cyrl.mjs +33 -0
  185. package/msg/km.js +33 -0
  186. package/msg/km.mjs +33 -0
  187. package/msg/kn.js +33 -0
  188. package/msg/kn.mjs +33 -0
  189. package/msg/ko.js +33 -0
  190. package/msg/ko.mjs +33 -0
  191. package/msg/ksh.js +33 -0
  192. package/msg/ksh.mjs +33 -0
  193. package/msg/ku-latn.js +33 -0
  194. package/msg/ku-latn.mjs +33 -0
  195. package/msg/ky.js +33 -0
  196. package/msg/ky.mjs +33 -0
  197. package/msg/la.js +33 -0
  198. package/msg/la.mjs +33 -0
  199. package/msg/lb.js +33 -0
  200. package/msg/lb.mjs +33 -0
  201. package/msg/lki.js +33 -0
  202. package/msg/lki.mjs +33 -0
  203. package/msg/lo.js +33 -0
  204. package/msg/lo.mjs +33 -0
  205. package/msg/lrc.js +33 -0
  206. package/msg/lrc.mjs +33 -0
  207. package/msg/lt.js +33 -0
  208. package/msg/lt.mjs +33 -0
  209. package/msg/lv.js +33 -0
  210. package/msg/lv.mjs +33 -0
  211. package/msg/mg.js +33 -0
  212. package/msg/mg.mjs +33 -0
  213. package/msg/mk.js +33 -0
  214. package/msg/mk.mjs +33 -0
  215. package/msg/ml.js +33 -0
  216. package/msg/ml.mjs +33 -0
  217. package/msg/mnw.js +33 -0
  218. package/msg/mnw.mjs +33 -0
  219. package/msg/ms.js +33 -0
  220. package/msg/ms.mjs +33 -0
  221. package/msg/my.js +33 -0
  222. package/msg/my.mjs +33 -0
  223. package/msg/mzn.js +33 -0
  224. package/msg/mzn.mjs +33 -0
  225. package/msg/nb.js +33 -0
  226. package/msg/nb.mjs +33 -0
  227. package/msg/ne.js +33 -0
  228. package/msg/ne.mjs +33 -0
  229. package/msg/nl.js +33 -0
  230. package/msg/nl.mjs +33 -0
  231. package/msg/oc.js +33 -0
  232. package/msg/oc.mjs +33 -0
  233. package/msg/olo.js +33 -0
  234. package/msg/olo.mjs +33 -0
  235. package/msg/pa.js +33 -0
  236. package/msg/pa.mjs +33 -0
  237. package/msg/pl.js +33 -0
  238. package/msg/pl.mjs +33 -0
  239. package/msg/pms.js +33 -0
  240. package/msg/pms.mjs +33 -0
  241. package/msg/ps.js +33 -0
  242. package/msg/ps.mjs +33 -0
  243. package/msg/pt-br.js +33 -0
  244. package/msg/pt-br.mjs +33 -0
  245. package/msg/pt.js +33 -0
  246. package/msg/pt.mjs +33 -0
  247. package/msg/ro.js +33 -0
  248. package/msg/ro.mjs +33 -0
  249. package/msg/ru.js +33 -0
  250. package/msg/ru.mjs +33 -0
  251. package/msg/sc.js +33 -0
  252. package/msg/sc.mjs +33 -0
  253. package/msg/sco.js +33 -0
  254. package/msg/sco.mjs +33 -0
  255. package/msg/sd.js +33 -0
  256. package/msg/sd.mjs +33 -0
  257. package/msg/shn.js +33 -0
  258. package/msg/shn.mjs +33 -0
  259. package/msg/si.js +33 -0
  260. package/msg/si.mjs +33 -0
  261. package/msg/sk.js +33 -0
  262. package/msg/sk.mjs +33 -0
  263. package/msg/skr-arab.js +33 -0
  264. package/msg/skr-arab.mjs +33 -0
  265. package/msg/sl.js +33 -0
  266. package/msg/sl.mjs +33 -0
  267. package/msg/smn.js +33 -0
  268. package/msg/smn.mjs +33 -0
  269. package/msg/sq.js +33 -0
  270. package/msg/sq.mjs +33 -0
  271. package/msg/sr-latn.js +33 -0
  272. package/msg/sr-latn.mjs +33 -0
  273. package/msg/sr.js +33 -0
  274. package/msg/sr.mjs +33 -0
  275. package/msg/sv.js +33 -0
  276. package/msg/sv.mjs +33 -0
  277. package/msg/sw.js +33 -0
  278. package/msg/sw.mjs +33 -0
  279. package/msg/ta.js +33 -0
  280. package/msg/ta.mjs +33 -0
  281. package/msg/tcy.js +33 -0
  282. package/msg/tcy.mjs +33 -0
  283. package/msg/tdd.js +33 -0
  284. package/msg/tdd.mjs +33 -0
  285. package/msg/te.js +33 -0
  286. package/msg/te.mjs +33 -0
  287. package/msg/th.js +33 -0
  288. package/msg/th.mjs +33 -0
  289. package/msg/ti.js +33 -0
  290. package/msg/ti.mjs +33 -0
  291. package/msg/tl.js +33 -0
  292. package/msg/tl.mjs +33 -0
  293. package/msg/tlh.js +33 -0
  294. package/msg/tlh.mjs +33 -0
  295. package/msg/tr.js +33 -0
  296. package/msg/tr.mjs +33 -0
  297. package/msg/ug-arab.js +33 -0
  298. package/msg/ug-arab.mjs +33 -0
  299. package/msg/uk.js +33 -0
  300. package/msg/uk.mjs +33 -0
  301. package/msg/ur.js +33 -0
  302. package/msg/ur.mjs +33 -0
  303. package/msg/uz.js +33 -0
  304. package/msg/uz.mjs +33 -0
  305. package/msg/vi.js +33 -0
  306. package/msg/vi.mjs +33 -0
  307. package/msg/xmf.js +33 -0
  308. package/msg/xmf.mjs +33 -0
  309. package/msg/yo.js +33 -0
  310. package/msg/yo.mjs +33 -0
  311. package/msg/zgh.js +33 -0
  312. package/msg/zgh.mjs +33 -0
  313. package/msg/zh-hans.js +33 -0
  314. package/msg/zh-hans.mjs +33 -0
  315. package/msg/zh-hant.js +33 -0
  316. package/msg/zh-hant.mjs +33 -0
  317. package/package.json +4 -4
  318. package/core/renderers/common/marker_svg.d.ts +0 -256
  319. package/core/renderers/zelos/marker_svg.d.ts +0 -49
@@ -9,6 +9,7 @@
9
9
  * @class
10
10
  */
11
11
  import type { ICollapsibleToolboxItem } from '../interfaces/i_collapsible_toolbox_item.js';
12
+ import type { IFocusableTree } from '../interfaces/i_focusable_tree.js';
12
13
  import type { IToolbox } from '../interfaces/i_toolbox.js';
13
14
  import type { IToolboxItem } from '../interfaces/i_toolbox_item.js';
14
15
  import type * as toolbox from '../utils/toolbox.js';
@@ -94,5 +95,13 @@ export declare class ToolboxItem implements IToolboxItem {
94
95
  * @param _isVisible True if category should be visible.
95
96
  */
96
97
  setVisible_(_isVisible: boolean): void;
98
+ /** See IFocusableNode.getFocusableElement. */
99
+ getFocusableElement(): HTMLElement | SVGElement;
100
+ /** See IFocusableNode.getFocusableTree. */
101
+ getFocusableTree(): IFocusableTree;
102
+ /** See IFocusableNode.onNodeFocus. */
103
+ onNodeFocus(): void;
104
+ /** See IFocusableNode.onNodeBlur. */
105
+ onNodeBlur(): void;
97
106
  }
98
107
  //# sourceMappingURL=toolbox_item.d.ts.map
@@ -20,7 +20,8 @@ export declare enum Role {
20
20
  ROW = "row",
21
21
  TREE = "tree",
22
22
  TREEITEM = "treeitem",
23
- SEPARATOR = "separator"
23
+ SEPARATOR = "separator",
24
+ STATUS = "status"
24
25
  }
25
26
  /**
26
27
  * ARIA states and properties.
@@ -41,7 +42,9 @@ export declare enum State {
41
42
  SELECTED = "selected",
42
43
  SETSIZE = "setsize",
43
44
  VALUEMAX = "valuemax",
44
- VALUEMIN = "valuemin"
45
+ VALUEMIN = "valuemin",
46
+ LIVE = "live",
47
+ HIDDEN = "hidden"
45
48
  }
46
49
  /**
47
50
  * Sets the role of an element.
@@ -44,7 +44,7 @@ export declare class VariableMap implements IVariableMap<IVariableModel<IVariabl
44
44
  * Rename a variable by updating its name in the variable map. Identify the
45
45
  * variable to rename with the given ID.
46
46
  *
47
- * @deprecated v12, use VariableMap.renameVariable.
47
+ * @deprecated v12: use VariableMap.renameVariable.
48
48
  * @param id ID of the variable to rename.
49
49
  * @param newName New variable name.
50
50
  */
@@ -98,7 +98,7 @@ export declare class VariableMap implements IVariableMap<IVariableModel<IVariabl
98
98
  * Delete a variables by the passed in ID and all of its uses from this
99
99
  * workspace. May prompt the user for confirmation.
100
100
  *
101
- * @deprecated v12, use Blockly.Variables.deleteVariable.
101
+ * @deprecated v12: use Blockly.Variables.deleteVariable.
102
102
  * @param id ID of variable to delete.
103
103
  */
104
104
  deleteVariableById(id: string): void;
@@ -143,14 +143,14 @@ export declare class VariableMap implements IVariableMap<IVariableModel<IVariabl
143
143
  /**
144
144
  * Returns all of the variable names of all types.
145
145
  *
146
- * @deprecated v12, use Blockly.Variables.getAllVariables.
146
+ * @deprecated v12: use Blockly.Variables.getAllVariables.
147
147
  * @returns All of the variable names of all types.
148
148
  */
149
149
  getAllVariableNames(): string[];
150
150
  /**
151
151
  * Find all the uses of a named variable.
152
152
  *
153
- * @deprecated v12, use Blockly.Variables.getVariableUsesById.
153
+ * @deprecated v12: use Blockly.Variables.getVariableUsesById.
154
154
  * @param id ID of the variable to find.
155
155
  * @returns Array of block usages.
156
156
  */
@@ -19,8 +19,9 @@ export declare const CATEGORY_NAME = "VARIABLE";
19
19
  /**
20
20
  * Find all user-created variables that are in use in the workspace.
21
21
  * For use by generators.
22
+ *
22
23
  * To get a list of all variables on a workspace, including unused variables,
23
- * call Workspace.getAllVariables.
24
+ * call getAllVariables.
24
25
  *
25
26
  * @param ws The workspace to search for variables.
26
27
  * @returns Array of variable models.
@@ -28,6 +29,7 @@ export declare const CATEGORY_NAME = "VARIABLE";
28
29
  export declare function allUsedVarModels(ws: Workspace): IVariableModel<IVariableState>[];
29
30
  /**
30
31
  * Find all developer variables used by blocks in the workspace.
32
+ *
31
33
  * Developer variables are never shown to the user, but are declared as global
32
34
  * variables in the generated code.
33
35
  * To declare developer variables, define the getDeveloperVariables function on
@@ -184,9 +184,10 @@ export declare class Workspace implements IASTNodeLocation {
184
184
  /** Dispose of all blocks and comments in workspace. */
185
185
  clear(): void;
186
186
  /**
187
- * @deprecated v12 - Rename a variable by updating its name in the variable
187
+ * Rename a variable by updating its name in the variable
188
188
  * map. Identify the variable to rename with the given ID.
189
189
  *
190
+ * @deprecated v12: use Blockly.Workspace.getVariableMap().renameVariable
190
191
  * @param id ID of the variable to rename.
191
192
  * @param newName New variable name.
192
193
  */
@@ -194,7 +195,7 @@ export declare class Workspace implements IASTNodeLocation {
194
195
  /**
195
196
  * Create a variable with a given name, optional type, and optional ID.
196
197
  *
197
- * @deprecated v12, use Blockly.Workspace.getVariableMap().createVariable.
198
+ * @deprecated v12: use Blockly.Workspace.getVariableMap().createVariable.
198
199
  * @param name The name of the variable. This must be unique across variables
199
200
  * and procedures.
200
201
  * @param opt_type The type of the variable like 'int' or 'string'.
@@ -207,7 +208,7 @@ export declare class Workspace implements IASTNodeLocation {
207
208
  /**
208
209
  * Find all the uses of the given variable, which is identified by ID.
209
210
  *
210
- * @deprecated v12, use Blockly.Workspace.getVariableMap().getVariableUsesById
211
+ * @deprecated v12: use Blockly.Workspace.getVariableMap().getVariableUsesById
211
212
  * @param id ID of the variable to find.
212
213
  * @returns Array of block usages.
213
214
  */
@@ -216,7 +217,7 @@ export declare class Workspace implements IASTNodeLocation {
216
217
  * Delete a variables by the passed in ID and all of its uses from this
217
218
  * workspace. May prompt the user for confirmation.
218
219
  *
219
- * @deprecated v12, use Blockly.Workspace.getVariableMap().deleteVariable.
220
+ * @deprecated v12: use Blockly.Workspace.getVariableMap().deleteVariable.
220
221
  * @param id ID of variable to delete.
221
222
  */
222
223
  deleteVariableById(id: string): void;
@@ -224,7 +225,7 @@ export declare class Workspace implements IASTNodeLocation {
224
225
  * Find the variable by the given name and return it. Return null if not
225
226
  * found.
226
227
  *
227
- * @deprecated v12, use Blockly.Workspace.getVariableMap().getVariable.
228
+ * @deprecated v12: use Blockly.Workspace.getVariableMap().getVariable.
228
229
  * @param name The name to check for.
229
230
  * @param opt_type The type of the variable. If not provided it defaults to
230
231
  * the empty string, which is a specific type.
@@ -234,7 +235,7 @@ export declare class Workspace implements IASTNodeLocation {
234
235
  /**
235
236
  * Find the variable by the given ID and return it. Return null if not found.
236
237
  *
237
- * @deprecated v12, use Blockly.Workspace.getVariableMap().getVariableById.
238
+ * @deprecated v12: use Blockly.Workspace.getVariableMap().getVariableById.
238
239
  * @param id The ID to check for.
239
240
  * @returns The variable with the given ID.
240
241
  */
@@ -243,7 +244,7 @@ export declare class Workspace implements IASTNodeLocation {
243
244
  * Find the variable with the specified type. If type is null, return list of
244
245
  * variables with empty string type.
245
246
  *
246
- * @deprecated v12, use Blockly.Workspace.getVariableMap().getVariablesOfType.
247
+ * @deprecated v12: use Blockly.Workspace.getVariableMap().getVariablesOfType.
247
248
  * @param type Type of the variables to find.
248
249
  * @returns The sought after variables of the passed in type. An empty array
249
250
  * if none are found.
@@ -252,14 +253,14 @@ export declare class Workspace implements IASTNodeLocation {
252
253
  /**
253
254
  * Return all variables of all types.
254
255
  *
255
- * @deprecated v12, use Blockly.Workspace.getVariableMap().getAllVariables.
256
+ * @deprecated v12: use Blockly.Workspace.getVariableMap().getAllVariables.
256
257
  * @returns List of variable models.
257
258
  */
258
259
  getAllVariables(): IVariableModel<IVariableState>[];
259
260
  /**
260
261
  * Returns all variable names of all types.
261
262
  *
262
- * @deprecated v12, use Blockly.Workspace.getVariableMap().getAllVariables.
263
+ * @deprecated v12: use Blockly.Workspace.getVariableMap().getAllVariables.
263
264
  * @returns List of all variable names of all types.
264
265
  */
265
266
  getAllVariableNames(): string[];
@@ -22,15 +22,19 @@ import { Gesture } from './gesture.js';
22
22
  import { Grid } from './grid.js';
23
23
  import type { IASTNodeLocationSvg } from './interfaces/i_ast_node_location_svg.js';
24
24
  import type { IBoundedElement } from './interfaces/i_bounded_element.js';
25
+ import { IContextMenu } from './interfaces/i_contextmenu.js';
25
26
  import type { IDragTarget } from './interfaces/i_drag_target.js';
26
27
  import type { IFlyout } from './interfaces/i_flyout.js';
28
+ import { type IFocusableNode } from './interfaces/i_focusable_node.js';
29
+ import type { IFocusableTree } from './interfaces/i_focusable_tree.js';
27
30
  import type { IMetricsManager } from './interfaces/i_metrics_manager.js';
31
+ import type { INavigable } from './interfaces/i_navigable.js';
28
32
  import type { IToolbox } from './interfaces/i_toolbox.js';
29
- import type { IVariableModel, IVariableState } from './interfaces/i_variable_model.js';
30
33
  import type { LineCursor } from './keyboard_nav/line_cursor.js';
31
34
  import type { Marker } from './keyboard_nav/marker.js';
32
35
  import { LayerManager } from './layer_manager.js';
33
36
  import { MarkerManager } from './marker_manager.js';
37
+ import { Navigator } from './navigator.js';
34
38
  import { Options } from './options.js';
35
39
  import type { Renderer } from './renderers/common/renderer.js';
36
40
  import type { ScrollbarPair } from './scrollbar_pair.js';
@@ -50,7 +54,7 @@ import { ZoomControls } from './zoom_controls.js';
50
54
  * Class for a workspace. This is an onscreen area with optional trashcan,
51
55
  * scrollbars, bubbles, and dragging.
52
56
  */
53
- export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg {
57
+ export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg, IContextMenu, IFocusableNode, IFocusableTree, INavigable<WorkspaceSvg> {
54
58
  /**
55
59
  * A wrapper function called when a resize event occurs.
56
60
  * You can pass the result to `eventHandling.unbind`.
@@ -234,6 +238,8 @@ export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationS
234
238
  private cachedParentSvg;
235
239
  /** True if keyboard accessibility mode is on, false otherwise. */
236
240
  keyboardAccessibilityMode: boolean;
241
+ /** True iff a keyboard-initiated move ("drag") is in progress. */
242
+ keyboardMoveInProgress: boolean;
237
243
  /** The list of top-level bounded elements on the workspace. */
238
244
  private topBoundedElements;
239
245
  /** The recorded drag targets. */
@@ -245,6 +251,11 @@ export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationS
245
251
  svgBlockCanvas_: SVGElement;
246
252
  svgBubbleCanvas_: SVGElement;
247
253
  zoomControls_: ZoomControls | null;
254
+ /**
255
+ * Navigator that handles moving focus between items in this workspace in
256
+ * response to keyboard navigation commands.
257
+ */
258
+ private navigator;
248
259
  /**
249
260
  * @param options Dictionary of options.
250
261
  */
@@ -274,22 +285,6 @@ export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationS
274
285
  * @returns The component manager.
275
286
  */
276
287
  getComponentManager(): ComponentManager;
277
- /**
278
- * Add the cursor SVG to this workspaces SVG group.
279
- *
280
- * @param cursorSvg The SVG root of the cursor to be added to the workspace
281
- * SVG group.
282
- * @internal
283
- */
284
- setCursorSvg(cursorSvg: SVGElement): void;
285
- /**
286
- * Add the marker SVG to this workspaces SVG group.
287
- *
288
- * @param markerSvg The SVG root of the marker to be added to the workspace
289
- * SVG group.
290
- * @internal
291
- */
292
- setMarkerSvg(markerSvg: SVGElement): void;
293
288
  /**
294
289
  * Get the marker with the given ID.
295
290
  *
@@ -442,6 +437,13 @@ export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationS
442
437
  * @internal
443
438
  */
444
439
  addZoomControls(): void;
440
+ /**
441
+ * Creates a new set of options from this workspace's options with just the
442
+ * values that are relevant to a flyout.
443
+ *
444
+ * @returns A subset of this workspace's options.
445
+ */
446
+ copyOptionsForFlyout(): Options;
445
447
  /**
446
448
  * Add a flyout element in an element with the given tag name.
447
449
  *
@@ -573,38 +575,17 @@ export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationS
573
575
  */
574
576
  highlightBlock(id: string | null, opt_state?: boolean): void;
575
577
  /**
576
- * Refresh the toolbox unless there's a drag in progress.
578
+ * Handles any necessary updates when a variable changes.
577
579
  *
578
580
  * @internal
579
581
  */
580
- refreshToolboxSelection(): void;
582
+ private variableChangeCallback;
581
583
  /**
582
- * Rename a variable by updating its name in the variable map. Update the
583
- * flyout to show the renamed variable immediately.
584
- *
585
- * @param id ID of the variable to rename.
586
- * @param newName New variable name.
587
- */
588
- renameVariableById(id: string, newName: string): void;
589
- /**
590
- * Delete a variable by the passed in ID. Update the flyout to show
591
- * immediately that the variable is deleted.
592
- *
593
- * @param id ID of variable to delete.
594
- */
595
- deleteVariableById(id: string): void;
596
- /**
597
- * Create a new variable with the given name. Update the flyout to show the
598
- * new variable immediately.
584
+ * Refresh the toolbox unless there's a drag in progress.
599
585
  *
600
- * @param name The new variable's name.
601
- * @param opt_type The type of the variable like 'int' or 'string'.
602
- * Does not need to be unique. Field_variable can filter variables based
603
- * on their type. This will default to '' which is a specific type.
604
- * @param opt_id The unique ID of the variable. This will default to a UUID.
605
- * @returns The newly created variable.
586
+ * @internal
606
587
  */
607
- createVariable(name: string, opt_type?: string | null, opt_id?: string | null): IVariableModel<IVariableState>;
588
+ refreshToolboxSelection(): void;
608
589
  /** Make a list of all the delete areas for this workspace. */
609
590
  recordDragTargets(): void;
610
591
  /**
@@ -654,9 +635,36 @@ export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationS
654
635
  */
655
636
  moveDrag(e: PointerEvent): Coordinate;
656
637
  /**
657
- * Is the user currently dragging a block or scrolling the flyout/workspace?
638
+ * Indicate whether a keyboard move is in progress or not.
639
+ *
640
+ * Should be called with true when a keyboard move of an IDraggable
641
+ * is starts, and false when it finishes or is aborted.
642
+ *
643
+ * N.B.: This method is experimental and internal-only. It is
644
+ * intended only to called only from the keyboard navigation plugin.
645
+ * Its signature and behaviour may be modified, or the method
646
+ * removed, at an time without notice and without being treated
647
+ * as a breaking change.
648
+ *
649
+ * TODO(#8960): Delete this.
650
+ *
651
+ * @internal
652
+ * @param inProgress Is a keyboard-initated move in progress?
653
+ */
654
+ setKeyboardMoveInProgress(inProgress: boolean): void;
655
+ /**
656
+ * Returns true iff the user is currently engaged in a drag gesture,
657
+ * or if a keyboard-initated move is in progress.
658
+ *
659
+ * Dragging gestures normally entail moving a block or other item on
660
+ * the workspace, or scrolling the flyout/workspace.
661
+ *
662
+ * Keyboard-initated movements are implemnted using the dragging
663
+ * infrastructure and are intended to emulate (a subset of) drag
664
+ * gestures and so should typically be treated as if they were a
665
+ * gesture-based drag.
658
666
  *
659
- * @returns True if currently dragging or scrolling.
667
+ * @returns True iff a drag gesture or keyboard move is in porgress.
660
668
  */
661
669
  isDragging(): boolean;
662
670
  /**
@@ -711,7 +719,7 @@ export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationS
711
719
  * @param e Mouse event.
712
720
  * @internal
713
721
  */
714
- showContextMenu(e: PointerEvent): void;
722
+ showContextMenu(e: Event): void;
715
723
  /**
716
724
  * Modify the block tree on the existing toolbox.
717
725
  *
@@ -937,7 +945,17 @@ export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationS
937
945
  removeToolboxCategoryCallback(key: string): void;
938
946
  /**
939
947
  * Look up the gesture that is tracking this touch stream on this workspace.
940
- * May create a new gesture.
948
+ *
949
+ * Returns the gesture in progress, except:
950
+ *
951
+ * - If there is a keyboard-initiate move in progress then null will
952
+ * be returned - after calling event.preventDefault() and
953
+ * event.stopPropagation() to ensure the pointer event is ignored.
954
+ * - If there is a gesture in progress but event.type is
955
+ * 'pointerdown' then the in-progress gesture will be cancelled;
956
+ * this will result in null being returned.
957
+ * - If no gesutre is in progress but event is a pointerdown then a
958
+ * new gesture will be created and returned.
941
959
  *
942
960
  * @param e Pointer event.
943
961
  * @returns The gesture that is tracking this touch stream, or null if no
@@ -1017,6 +1035,45 @@ export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationS
1017
1035
  * the workspace's viewport.
1018
1036
  */
1019
1037
  scrollBoundsIntoView(bounds: Rect, padding?: number): void;
1038
+ /** See IFocusableNode.getFocusableElement. */
1039
+ getFocusableElement(): HTMLElement | SVGElement;
1040
+ /** See IFocusableNode.getFocusableTree. */
1041
+ getFocusableTree(): IFocusableTree;
1042
+ /** See IFocusableNode.onNodeFocus. */
1043
+ onNodeFocus(): void;
1044
+ /** See IFocusableNode.onNodeBlur. */
1045
+ onNodeBlur(): void;
1046
+ /** See IFocusableTree.getRootFocusableNode. */
1047
+ getRootFocusableNode(): IFocusableNode;
1048
+ /** See IFocusableTree.getRestoredFocusableNode. */
1049
+ getRestoredFocusableNode(previousNode: IFocusableNode | null): IFocusableNode | null;
1050
+ /** See IFocusableTree.getNestedTrees. */
1051
+ getNestedTrees(): Array<IFocusableTree>;
1052
+ /** See IFocusableTree.lookUpFocusableNode. */
1053
+ lookUpFocusableNode(id: string): IFocusableNode | null;
1054
+ /** See IFocusableTree.onTreeFocus. */
1055
+ onTreeFocus(_node: IFocusableNode, _previousTree: IFocusableTree | null): void;
1056
+ /** See IFocusableTree.onTreeBlur. */
1057
+ onTreeBlur(nextTree: IFocusableTree | null): void;
1058
+ /**
1059
+ * Returns the class of this workspace.
1060
+ *
1061
+ * @returns WorkspaceSvg.
1062
+ */
1063
+ getClass(): typeof WorkspaceSvg;
1064
+ /**
1065
+ * Returns whether or not this workspace is keyboard-navigable.
1066
+ *
1067
+ * @returns True.
1068
+ */
1069
+ isNavigable(): boolean;
1070
+ /**
1071
+ * Returns an object responsible for coordinating movement of focus between
1072
+ * items on this workspace in response to keyboard navigation commands.
1073
+ *
1074
+ * @returns This workspace's Navigator instance.
1075
+ */
1076
+ getNavigator(): Navigator;
1020
1077
  }
1021
1078
  /**
1022
1079
  * Size the workspace when the contents change. This also updates
package/index.mjs CHANGED
@@ -3,6 +3,7 @@ export const {
3
3
  ASTNode,
4
4
  Block,
5
5
  BlockFlyoutInflater,
6
+ BlockNavigationPolicy,
6
7
  BlockSvg,
7
8
  Blocks,
8
9
  ButtonFlyoutInflater,
@@ -15,6 +16,7 @@ export const {
15
16
  Connection,
16
17
  ConnectionChecker,
17
18
  ConnectionDB,
19
+ ConnectionNavigationPolicy,
18
20
  ConnectionType,
19
21
  ContextMenu,
20
22
  ContextMenuItems,
@@ -32,15 +34,20 @@ export const {
32
34
  FieldImage,
33
35
  FieldLabel,
34
36
  FieldLabelSerializable,
37
+ FieldNavigationPolicy,
35
38
  FieldNumber,
36
39
  FieldTextInput,
37
40
  FieldVariable,
38
41
  Flyout,
39
42
  FlyoutButton,
43
+ FlyoutButtonNavigationPolicy,
40
44
  FlyoutItem,
41
45
  FlyoutMetricsManager,
46
+ FlyoutNavigationPolicy,
42
47
  FlyoutSeparator,
48
+ FlyoutSeparatorNavigationPolicy,
43
49
  FocusManager,
50
+ FocusableTreeTraverser,
44
51
  Generator,
45
52
  Gesture,
46
53
  Grid,
@@ -58,6 +65,7 @@ export const {
58
65
  Msg,
59
66
  NEXT_STATEMENT,
60
67
  Names,
68
+ Navigator,
61
69
  OPPOSITE_TYPE,
62
70
  OUTPUT_VALUE,
63
71
  Options,
@@ -78,6 +86,7 @@ export const {
78
86
  Theme,
79
87
  ThemeManager,
80
88
  Themes,
89
+ Toast,
81
90
  Toolbox,
82
91
  ToolboxCategory,
83
92
  ToolboxItem,
@@ -98,6 +107,7 @@ export const {
98
107
  Workspace,
99
108
  WorkspaceAudio,
100
109
  WorkspaceDragger,
110
+ WorkspaceNavigationPolicy,
101
111
  WorkspaceSvg,
102
112
  Xml,
103
113
  ZoomControls,
package/msg/ab.js CHANGED
@@ -17,10 +17,14 @@
17
17
 
18
18
  var Blockly = Blockly || { Msg: Object.create(null) };
19
19
 
20
+ Blockly.Msg["ABORT_MOVE"] = "Abort move"; // untranslated
20
21
  Blockly.Msg["ADD_COMMENT"] = "Иацҵатәуп ахцәажәара";
22
+ Blockly.Msg["ALT_KEY"] = "Alt"; // untranslated
21
23
  Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated
22
24
  Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ишәыԥсах аҵакы";
25
+ Blockly.Msg["CHROME_OS"] = "ChromeOS"; // untranslated
23
26
  Blockly.Msg["CLEAN_UP"] = "Иқәгатәуп аблокқәа";
27
+ Blockly.Msg["CLOSE"] = "Close"; // untranslated
24
28
  Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated
25
29
  Blockly.Msg["COLLAPSE_ALL"] = "Иеикәрҳәтәуп Аблокқәа";
26
30
  Blockly.Msg["COLLAPSE_BLOCK"] = "Иеикәрҳәтәуп Аблокқәа";
@@ -41,6 +45,7 @@ Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorper
41
45
  Blockly.Msg["COLOUR_RGB_RED"] = "аҟаԥшь";
42
46
  Blockly.Msg["COLOUR_RGB_TITLE"] = "аԥштәы аҟынтәи";
43
47
  Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated
48
+ Blockly.Msg["COMMAND_KEY"] = "⌘ Command"; // untranslated
44
49
  Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated
45
50
  Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ацикл иҭыҵтәуп";
46
51
  Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ииастәуп ацикл анаҩстәи ашьаҿахьы";
@@ -73,8 +78,13 @@ Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "инагӡалатәуп а
73
78
  Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "инагӡалатәуп акәзар";
74
79
  Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Аҭагылазаашьа мцнаҵы, инанагӡалоит акомандақәа.";
75
80
  Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Аҭагылазаашьа иашанаҵ, инанагӡалоит акомандақәа.";
81
+ Blockly.Msg["CONTROL_KEY"] = "Ctrl"; // untranslated
82
+ Blockly.Msg["COPY_SHORTCUT"] = "Copy (%1)"; // untranslated
83
+ Blockly.Msg["CUT_SHORTCUT"] = "Cut (%1)"; // untranslated
76
84
  Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ианыхтәуп аблокқәа (%1) зегьы?";
77
85
  Blockly.Msg["DELETE_BLOCK"] = "Ианыхтәуп аблок";
86
+ Blockly.Msg["DELETE_KEY"] = "Del"; // untranslated
87
+ Blockly.Msg["DELETE_SHORTCUT"] = "Delete block (%1)"; // untranslated
78
88
  Blockly.Msg["DELETE_VARIABLE"] = "Ианыхтәуп аҽеиҭак '%1'";
79
89
  Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated
80
90
  Blockly.Msg["DELETE_X_BLOCKS"] = "Ианыхтәуп %1 блокк";
@@ -83,12 +93,17 @@ Blockly.Msg["DIALOG_OK"] = "OK";
83
93
  Blockly.Msg["DISABLE_BLOCK"] = "Иаҿыхтәуп Аблок";
84
94
  Blockly.Msg["DUPLICATE_BLOCK"] = "Акопиа ахыхтәуп";
85
95
  Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated
96
+ Blockly.Msg["EDIT_BLOCK_CONTENTS"] = "Edit Block contents (%1)"; // untranslated
86
97
  Blockly.Msg["ENABLE_BLOCK"] = "Иаҿыхтәуп Аблокқәа";
87
98
  Blockly.Msg["EXPAND_ALL"] = "Иаарԥштәуп Аблокқәа";
88
99
  Blockly.Msg["EXPAND_BLOCK"] = "Иаарԥштәуп Аблокқәа";
89
100
  Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated
101
+ Blockly.Msg["FINISH_MOVE"] = "Finish move"; // untranslated
90
102
  Blockly.Msg["HELP"] = "Ацхыраара";
103
+ Blockly.Msg["HELP_PROMPT"] = "Press %1 for help on keyboard controls"; // untranslated
91
104
  Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated
105
+ Blockly.Msg["INSERT_BLOCK"] = "Insert Block (%1)"; // untranslated
106
+ Blockly.Msg["LINUX"] = "Linux"; // untranslated
92
107
  Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated
93
108
  Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "иаԥцатәуп иҭацәу ахьӡынҵа";
94
109
  Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated
@@ -201,6 +216,7 @@ Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; //
201
216
  Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "амц акәзар";
202
217
  Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "аиаша акәзар";
203
218
  Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated
219
+ Blockly.Msg["MAC_OS"] = "macOS"; // untranslated
204
220
  Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated
205
221
  Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ab.wikipedia.org/wiki/Арифметика";
206
222
  Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак реицҵалыҵ.";
@@ -287,13 +303,24 @@ Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Иҳанаҭоит арктангенс
287
303
  Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Иҳанаҭоит акосинус градусла.";
288
304
  Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Иҳанаҭоит асинус градусла.";
289
305
  Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Иҳанаҭоит атангенс градусла.";
306
+ Blockly.Msg["MOVE_BLOCK"] = "Move Block (%1)"; // untranslated
307
+ Blockly.Msg["MOVE_DOWN_CONSTRAINED"] = "Move down constrained"; // untranslated
308
+ Blockly.Msg["MOVE_DOWN_UNCONSTRAINED"] = "Move down, unconstrained"; // untranslated
309
+ Blockly.Msg["MOVE_LEFT_CONSTRAINED"] = "Move left, constrained"; // untranslated
310
+ Blockly.Msg["MOVE_LEFT_UNCONSTRAINED"] = "Move left, unconstrained"; // untranslated
311
+ Blockly.Msg["MOVE_RIGHT_CONSTRAINED"] = "Move right constrained"; // untranslated
312
+ Blockly.Msg["MOVE_RIGHT_UNCONSTRAINED"] = "Move right, unconstrained"; // untranslated
313
+ Blockly.Msg["MOVE_UP_CONSTRAINED"] = "Move up, constrained"; // untranslated
314
+ Blockly.Msg["MOVE_UP_UNCONSTRAINED"] = "Move up unconstrained"; // untranslated
290
315
  Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated
291
316
  Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated
292
317
  Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated
293
318
  Blockly.Msg["NEW_VARIABLE"] = "Иаԥҵатәуп аҽеиҭак";
294
319
  Blockly.Msg["NEW_VARIABLE_TITLE"] = "Аҽеиҭак ахьӡ ҿыц:";
295
320
  Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated
321
+ Blockly.Msg["OPTION_KEY"] = "⌥ Option"; // untranslated
296
322
  Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated
323
+ Blockly.Msg["PASTE_SHORTCUT"] = "Paste (%1)"; // untranslated
297
324
  Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "аоператорқәа азин рыҭара";
298
325
  Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "аҟынтәи:";
299
326
  Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Ацхыраагӡатә программа";
@@ -325,6 +352,10 @@ Blockly.Msg["REDO"] = "Аиҭаҟаҵара";
325
352
  Blockly.Msg["REMOVE_COMMENT"] = "Ианыхтәуп ахцәажәара";
326
353
  Blockly.Msg["RENAME_VARIABLE"] = "Аҽеиҭак ахьӡ ԥсахтәуп";
327
354
  Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Аҽеиҭакқәа'%1' зегь рыхьӡ ԥсахтәуп аҟны:";
355
+ Blockly.Msg["SHORTCUTS_CODE_NAVIGATION"] = "Code navigation"; // untranslated
356
+ Blockly.Msg["SHORTCUTS_EDITING"] = "Editing"; // untranslated
357
+ Blockly.Msg["SHORTCUTS_GENERAL"] = "General"; // untranslated
358
+ Blockly.Msg["START_MOVE"] = "Start move"; // untranslated
328
359
  Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
329
360
  Blockly.Msg["TEXT_APPEND_TITLE"] = "%1 ахьы иацҵатәуп атеқст %2";
330
361
  Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Иацҵатәуп атеқст аҽеиҭак «%1» ахь.";
@@ -395,6 +426,7 @@ Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; //
395
426
  Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated
396
427
  Blockly.Msg["TODAY"] = "Иахьа";
397
428
  Blockly.Msg["UNDO"] = "Иаҟәыхтәуп";
429
+ Blockly.Msg["UNKNOWN"] = "Unknown"; // untranslated
398
430
  Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated
399
431
  Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "аелемент";
400
432
  Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Иаԥҵатәуп аблок \"иаҭатәуп %1\" азы";
@@ -407,6 +439,7 @@ Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the in
407
439
  Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Аҽеиҭак ахьӡ '%1' змоу ыҟоуп.";
408
440
  Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated
409
441
  Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER"] = "A variable named '%1' already exists as a parameter in the procedure '%2'."; // untranslated
442
+ Blockly.Msg["WINDOWS"] = "Windows"; // untranslated
410
443
  Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated
411
444
  Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated
412
445
  Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
package/msg/ab.mjs CHANGED
@@ -22,6 +22,7 @@ export const {
22
22
  DELETE_X_BLOCKS,
23
23
  DELETE_ALL_BLOCKS,
24
24
  CLEAN_UP,
25
+ CLOSE,
25
26
  COLLAPSE_BLOCK,
26
27
  COLLAPSE_ALL,
27
28
  EXPAND_BLOCK,
@@ -420,4 +421,36 @@ export const {
420
421
  COLLAPSED_WARNINGS_WARNING,
421
422
  DIALOG_OK,
422
423
  DIALOG_CANCEL,
424
+ DELETE_SHORTCUT,
425
+ DELETE_KEY,
426
+ EDIT_BLOCK_CONTENTS,
427
+ INSERT_BLOCK,
428
+ START_MOVE,
429
+ FINISH_MOVE,
430
+ ABORT_MOVE,
431
+ MOVE_LEFT_CONSTRAINED,
432
+ MOVE_RIGHT_CONSTRAINED,
433
+ MOVE_UP_CONSTRAINED,
434
+ MOVE_DOWN_CONSTRAINED,
435
+ MOVE_LEFT_UNCONSTRAINED,
436
+ MOVE_RIGHT_UNCONSTRAINED,
437
+ MOVE_UP_UNCONSTRAINED,
438
+ MOVE_DOWN_UNCONSTRAINED,
439
+ MOVE_BLOCK,
440
+ WINDOWS,
441
+ MAC_OS,
442
+ CHROME_OS,
443
+ LINUX,
444
+ UNKNOWN,
445
+ CONTROL_KEY,
446
+ COMMAND_KEY,
447
+ OPTION_KEY,
448
+ ALT_KEY,
449
+ CUT_SHORTCUT,
450
+ COPY_SHORTCUT,
451
+ PASTE_SHORTCUT,
452
+ HELP_PROMPT,
453
+ SHORTCUTS_GENERAL,
454
+ SHORTCUTS_EDITING,
455
+ SHORTCUTS_CODE_NAVIGATION,
423
456
  } = ab;