@blockdia/scratch-blocks 0.1.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 (243) hide show
  1. package/.nvmrc +1 -0
  2. package/LICENSE +674 -0
  3. package/README.md +57 -0
  4. package/TRADEMARK +1 -0
  5. package/blockly_compressed_horizontal.js +2268 -0
  6. package/blockly_compressed_vertical.js +2296 -0
  7. package/blockly_uncompressed_horizontal.js +1212 -0
  8. package/blockly_uncompressed_vertical.js +1212 -0
  9. package/blocks_common/colour.js +61 -0
  10. package/blocks_common/math.js +159 -0
  11. package/blocks_common/matrix.js +54 -0
  12. package/blocks_common/note.js +58 -0
  13. package/blocks_common/text.js +57 -0
  14. package/blocks_compressed.js +37 -0
  15. package/blocks_compressed_horizontal.js +68 -0
  16. package/blocks_compressed_vertical.js +216 -0
  17. package/blocks_horizontal/control.js +212 -0
  18. package/blocks_horizontal/default_toolbox.js +139 -0
  19. package/blocks_horizontal/event.js +190 -0
  20. package/blocks_horizontal/wedo.js +325 -0
  21. package/blocks_vertical/control.js +532 -0
  22. package/blocks_vertical/data.js +666 -0
  23. package/blocks_vertical/default_toolbox.js +571 -0
  24. package/blocks_vertical/event.js +329 -0
  25. package/blocks_vertical/extensions.js +294 -0
  26. package/blocks_vertical/looks.js +591 -0
  27. package/blocks_vertical/motion.js +587 -0
  28. package/blocks_vertical/operators.js +470 -0
  29. package/blocks_vertical/procedures.js +1051 -0
  30. package/blocks_vertical/sensing.js +555 -0
  31. package/blocks_vertical/sound.js +246 -0
  32. package/blocks_vertical/vertical_extensions.js +289 -0
  33. package/build/gen_blocks.js +1 -0
  34. package/build/test_expect.js +1 -0
  35. package/build/test_input.js +1 -0
  36. package/build.py +647 -0
  37. package/cleanup.sh +101 -0
  38. package/core/block.js +1837 -0
  39. package/core/block_animations.js +107 -0
  40. package/core/block_drag_surface.js +299 -0
  41. package/core/block_dragger.js +424 -0
  42. package/core/block_events.js +531 -0
  43. package/core/block_render_svg_horizontal.js +892 -0
  44. package/core/block_render_svg_vertical.js +1734 -0
  45. package/core/block_svg.js +1355 -0
  46. package/core/blockly.js +620 -0
  47. package/core/blocks.js +37 -0
  48. package/core/bubble.js +664 -0
  49. package/core/bubble_dragger.js +285 -0
  50. package/core/colours.js +177 -0
  51. package/core/comment.js +293 -0
  52. package/core/comment_events.js +539 -0
  53. package/core/connection.js +776 -0
  54. package/core/connection_db.js +300 -0
  55. package/core/constants.js +408 -0
  56. package/core/contextmenu.js +534 -0
  57. package/core/css.js +1354 -0
  58. package/core/data_category.js +490 -0
  59. package/core/dragged_connection_manager.js +260 -0
  60. package/core/dropdowndiv.js +408 -0
  61. package/core/events.js +429 -0
  62. package/core/events_abstract.js +113 -0
  63. package/core/extensions.js +450 -0
  64. package/core/field.js +810 -0
  65. package/core/field_angle.js +410 -0
  66. package/core/field_checkbox.js +133 -0
  67. package/core/field_colour.js +253 -0
  68. package/core/field_colour_slider.js +387 -0
  69. package/core/field_date.js +353 -0
  70. package/core/field_dropdown.js +447 -0
  71. package/core/field_iconmenu.js +309 -0
  72. package/core/field_image.js +200 -0
  73. package/core/field_label.js +136 -0
  74. package/core/field_label_serializable.js +125 -0
  75. package/core/field_matrix.js +566 -0
  76. package/core/field_note.js +850 -0
  77. package/core/field_number.js +366 -0
  78. package/core/field_numberdropdown.js +77 -0
  79. package/core/field_textdropdown.js +164 -0
  80. package/core/field_textinput.js +675 -0
  81. package/core/field_textinput_removable.js +105 -0
  82. package/core/field_variable.js +385 -0
  83. package/core/field_variable_getter.js +185 -0
  84. package/core/field_vertical_separator.js +161 -0
  85. package/core/flyout_base.js +935 -0
  86. package/core/flyout_button.js +324 -0
  87. package/core/flyout_dragger.js +83 -0
  88. package/core/flyout_extension_category_header.js +159 -0
  89. package/core/flyout_horizontal.js +475 -0
  90. package/core/flyout_vertical.js +770 -0
  91. package/core/generator.js +426 -0
  92. package/core/gesture.js +1010 -0
  93. package/core/grid.js +227 -0
  94. package/core/icon.js +205 -0
  95. package/core/inject.js +496 -0
  96. package/core/input.js +285 -0
  97. package/core/insertion_marker_manager.js +678 -0
  98. package/core/intersection_observer.js +102 -0
  99. package/core/msg.js +62 -0
  100. package/core/mutator.js +426 -0
  101. package/core/names.js +198 -0
  102. package/core/options.js +244 -0
  103. package/core/procedures.js +739 -0
  104. package/core/rendered_connection.js +417 -0
  105. package/core/scratch_block_comment.js +646 -0
  106. package/core/scratch_blocks_utils.js +246 -0
  107. package/core/scratch_bubble.js +699 -0
  108. package/core/scratch_events.js +131 -0
  109. package/core/scratch_msgs.js +85 -0
  110. package/core/scrollbar.js +875 -0
  111. package/core/toolbox.js +803 -0
  112. package/core/tooltip.js +337 -0
  113. package/core/touch.js +226 -0
  114. package/core/trashcan.js +343 -0
  115. package/core/ui_events.js +91 -0
  116. package/core/ui_menu_utils.js +68 -0
  117. package/core/utils.js +825 -0
  118. package/core/variable_events.js +259 -0
  119. package/core/variable_map.js +415 -0
  120. package/core/variable_model.js +116 -0
  121. package/core/variables.js +674 -0
  122. package/core/warning.js +199 -0
  123. package/core/widgetdiv.js +344 -0
  124. package/core/workspace.js +673 -0
  125. package/core/workspace_audio.js +170 -0
  126. package/core/workspace_comment.js +426 -0
  127. package/core/workspace_comment_render_svg.js +706 -0
  128. package/core/workspace_comment_svg.js +609 -0
  129. package/core/workspace_drag_surface_svg.js +195 -0
  130. package/core/workspace_dragger.js +132 -0
  131. package/core/workspace_svg.js +2382 -0
  132. package/core/xml.js +930 -0
  133. package/core/zoom_controls.js +301 -0
  134. package/dist/horizontal.js +222 -0
  135. package/dist/vertical.js +222 -0
  136. package/dist/web/horizontal.js +232 -0
  137. package/dist/web/vertical.js +232 -0
  138. package/i18n/common.py +234 -0
  139. package/i18n/create_messages.py +162 -0
  140. package/i18n/create_scratch_msgs.js +69 -0
  141. package/i18n/dedup_json.py +73 -0
  142. package/i18n/js_to_json.js +46 -0
  143. package/i18n/js_to_json.py +136 -0
  144. package/i18n/json_to_js.js +52 -0
  145. package/i18n/json_to_js.py +185 -0
  146. package/i18n/sync_tx_translations.js +111 -0
  147. package/i18n/test_scratch_msgs.js +87 -0
  148. package/i18n/tests.py +47 -0
  149. package/i18n/xliff_to_json.py +232 -0
  150. package/local_build.sh +70 -0
  151. package/media/click.mp3 +0 -0
  152. package/media/click.ogg +0 -0
  153. package/media/click.wav +0 -0
  154. package/media/comment-arrow-down.svg +10 -0
  155. package/media/comment-arrow-up.svg +10 -0
  156. package/media/delete-x.svg +10 -0
  157. package/media/delete.mp3 +0 -0
  158. package/media/delete.ogg +0 -0
  159. package/media/delete.wav +0 -0
  160. package/media/dropdown-arrow-dark.svg +1 -0
  161. package/media/dropdown-arrow.svg +1 -0
  162. package/media/extensions/microbit-block-icon.svg +130 -0
  163. package/media/extensions/music-block-icon.svg +17 -0
  164. package/media/extensions/pen-block-icon.svg +19 -0
  165. package/media/extensions/wedo2-block-icon.svg +36 -0
  166. package/media/eyedropper.svg +22 -0
  167. package/media/green-flag.svg +17 -0
  168. package/media/handclosed.cur +0 -0
  169. package/media/handdelete.cur +0 -0
  170. package/media/handopen.cur +0 -0
  171. package/media/icons/arrow.svg +12 -0
  172. package/media/icons/arrow_button.svg +1 -0
  173. package/media/icons/control_forever.svg +1 -0
  174. package/media/icons/control_repeat.svg +1 -0
  175. package/media/icons/control_stop.svg +1 -0
  176. package/media/icons/control_wait.svg +1 -0
  177. package/media/icons/event_broadcast_blue.svg +1 -0
  178. package/media/icons/event_broadcast_coral.svg +1 -0
  179. package/media/icons/event_broadcast_green.svg +1 -0
  180. package/media/icons/event_broadcast_magenta.svg +1 -0
  181. package/media/icons/event_broadcast_orange.svg +1 -0
  182. package/media/icons/event_broadcast_purple.svg +1 -0
  183. package/media/icons/event_when-broadcast-received_blue.svg +1 -0
  184. package/media/icons/event_when-broadcast-received_coral.svg +1 -0
  185. package/media/icons/event_when-broadcast-received_green.svg +1 -0
  186. package/media/icons/event_when-broadcast-received_magenta.svg +1 -0
  187. package/media/icons/event_when-broadcast-received_orange.svg +1 -0
  188. package/media/icons/event_when-broadcast-received_purple.svg +1 -0
  189. package/media/icons/event_whenflagclicked.svg +1 -0
  190. package/media/icons/remove.svg +19 -0
  191. package/media/icons/set-led_blue.svg +1 -0
  192. package/media/icons/set-led_coral.svg +1 -0
  193. package/media/icons/set-led_green.svg +1 -0
  194. package/media/icons/set-led_magenta.svg +1 -0
  195. package/media/icons/set-led_mystery.svg +1 -0
  196. package/media/icons/set-led_orange.svg +1 -0
  197. package/media/icons/set-led_purple.svg +1 -0
  198. package/media/icons/set-led_white.svg +1 -0
  199. package/media/icons/set-led_yellow.svg +1 -0
  200. package/media/icons/wedo_motor-clockwise.svg +1 -0
  201. package/media/icons/wedo_motor-counterclockwise.svg +1 -0
  202. package/media/icons/wedo_motor-speed_fast.svg +1 -0
  203. package/media/icons/wedo_motor-speed_med.svg +1 -0
  204. package/media/icons/wedo_motor-speed_slow.svg +1 -0
  205. package/media/icons/wedo_when-distance_close.svg +1 -0
  206. package/media/icons/wedo_when-tilt-backward.svg +1 -0
  207. package/media/icons/wedo_when-tilt-forward.svg +1 -0
  208. package/media/icons/wedo_when-tilt-left.svg +1 -0
  209. package/media/icons/wedo_when-tilt-right.svg +1 -0
  210. package/media/icons/wedo_when-tilt.svg +1 -0
  211. package/media/repeat.svg +18 -0
  212. package/media/rotate-left.svg +1 -0
  213. package/media/rotate-right.svg +1 -0
  214. package/media/sprites.png +0 -0
  215. package/media/status-not-ready.svg +13 -0
  216. package/media/status-ready.svg +13 -0
  217. package/media/zoom-in.svg +1 -0
  218. package/media/zoom-out.svg +1 -0
  219. package/media/zoom-reset.svg +1 -0
  220. package/msg/js/en.js +290 -0
  221. package/msg/json/en.json +285 -0
  222. package/msg/messages.js +359 -0
  223. package/msg/scratch_msgs.js +22969 -0
  224. package/package.json +60 -0
  225. package/pull_from_blockly.sh +151 -0
  226. package/renovate.json5 +15 -0
  227. package/shim/blockly_compressed_horizontal-blocks_compressed.js +1 -0
  228. package/shim/blockly_compressed_horizontal.Blockly.js +1 -0
  229. package/shim/blockly_compressed_horizontal.goog.js +1 -0
  230. package/shim/blockly_compressed_horizontal.js +1 -0
  231. package/shim/blockly_compressed_vertical-blocks_compressed.js +1 -0
  232. package/shim/blockly_compressed_vertical.Blockly.js +1 -0
  233. package/shim/blockly_compressed_vertical.goog.js +1 -0
  234. package/shim/blockly_compressed_vertical.js +1 -0
  235. package/shim/blocks_compressed_horizontal-blockly_compressed_horizontal-messages.js +1 -0
  236. package/shim/blocks_compressed_horizontal.js +1 -0
  237. package/shim/blocks_compressed_vertical-blockly_compressed_vertical-messages.js +1 -0
  238. package/shim/blocks_compressed_vertical.js +1 -0
  239. package/shim/gh-pages.js +1 -0
  240. package/shim/horizontal.js +1 -0
  241. package/shim/index.js +17 -0
  242. package/shim/vertical.js +1 -0
  243. package/universal-python.js +82 -0
@@ -0,0 +1,587 @@
1
+ /**
2
+ * @license
3
+ * Visual Blocks Editor
4
+ *
5
+ * Copyright 2016 Massachusetts Institute of Technology
6
+ * All rights reserved.
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ */
20
+
21
+ 'use strict';
22
+
23
+ goog.provide('Blockly.Blocks.motion');
24
+
25
+ goog.require('Blockly.Blocks');
26
+ goog.require('Blockly.Colours');
27
+ goog.require('Blockly.constants');
28
+ goog.require('Blockly.ScratchBlocks.VerticalExtensions');
29
+
30
+
31
+ Blockly.Blocks['motion_movesteps'] = {
32
+ /**
33
+ * Block to move steps.
34
+ * @this Blockly.Block
35
+ */
36
+ init: function() {
37
+ this.jsonInit({
38
+ "message0": Blockly.Msg.MOTION_MOVESTEPS,
39
+ "args0": [
40
+ {
41
+ "type": "input_value",
42
+ "name": "STEPS"
43
+ }
44
+ ],
45
+ "category": Blockly.Categories.motion,
46
+ "extensions": ["colours_motion", "shape_statement"]
47
+ });
48
+ }
49
+ };
50
+
51
+ Blockly.Blocks['motion_turnright'] = {
52
+ /**
53
+ * Block to turn right.
54
+ * @this Blockly.Block
55
+ */
56
+ init: function() {
57
+ this.jsonInit({
58
+ "message0": Blockly.Msg.MOTION_TURNRIGHT,
59
+ "args0": [
60
+ {
61
+ "type": "field_image",
62
+ "src": Blockly.mainWorkspace.options.pathToMedia + "rotate-right.svg",
63
+ "width": 24,
64
+ "height": 24
65
+ },
66
+ {
67
+ "type": "input_value",
68
+ "name": "DEGREES"
69
+ }
70
+ ],
71
+ "category": Blockly.Categories.motion,
72
+ "extensions": ["colours_motion", "shape_statement"]
73
+ });
74
+ }
75
+ };
76
+
77
+ Blockly.Blocks['motion_turnleft'] = {
78
+ /**
79
+ * Block to turn left.
80
+ * @this Blockly.Block
81
+ */
82
+ init: function() {
83
+ this.jsonInit({
84
+ "message0": Blockly.Msg.MOTION_TURNLEFT,
85
+ "args0": [
86
+ {
87
+ "type": "field_image",
88
+ "src": Blockly.mainWorkspace.options.pathToMedia + "rotate-left.svg",
89
+ "width": 24,
90
+ "height": 24
91
+ },
92
+ {
93
+ "type": "input_value",
94
+ "name": "DEGREES"
95
+ }
96
+ ],
97
+ "category": Blockly.Categories.motion,
98
+ "extensions": ["colours_motion", "shape_statement"]
99
+ });
100
+ }
101
+ };
102
+
103
+ Blockly.Blocks['motion_pointindirection'] = {
104
+ /**
105
+ * Block to point in direction.
106
+ * @this Blockly.Block
107
+ */
108
+ init: function() {
109
+ this.jsonInit({
110
+ "message0": Blockly.Msg.MOTION_POINTINDIRECTION,
111
+ "args0": [
112
+ {
113
+ "type": "input_value",
114
+ "name": "DIRECTION"
115
+ }
116
+ ],
117
+ "category": Blockly.Categories.motion,
118
+ "extensions": ["colours_motion", "shape_statement"]
119
+ });
120
+ }
121
+ };
122
+
123
+ Blockly.Blocks['motion_pointtowards_menu'] = {
124
+ /**
125
+ * Point towards drop-down menu.
126
+ * @this Blockly.Block
127
+ */
128
+ init: function() {
129
+ this.jsonInit({
130
+ "message0": "%1",
131
+ "args0": [
132
+ {
133
+ "type": "field_dropdown",
134
+ "name": "TOWARDS",
135
+ "options": [
136
+ [Blockly.Msg.MOTION_POINTTOWARDS_POINTER, '_mouse_'],
137
+ [Blockly.Msg.MOTION_POINTTOWARDS_RANDOM, '_random_']
138
+ ]
139
+ }
140
+ ],
141
+ "colour": Blockly.Colours.motion.secondary,
142
+ "colourSecondary": Blockly.Colours.motion.secondary,
143
+ "colourTertiary": Blockly.Colours.motion.tertiary,
144
+ "colourQuaternary": Blockly.Colours.motion.quaternary,
145
+ "extensions": ["output_string"]
146
+ });
147
+ }
148
+ };
149
+
150
+ Blockly.Blocks['motion_pointtowards'] = {
151
+ /**
152
+ * Block to point in direction.
153
+ * @this Blockly.Block
154
+ */
155
+ init: function() {
156
+ this.jsonInit({
157
+ "message0": Blockly.Msg.MOTION_POINTTOWARDS,
158
+ "args0": [
159
+ {
160
+ "type": "input_value",
161
+ "name": "TOWARDS"
162
+ }
163
+ ],
164
+ "category": Blockly.Categories.motion,
165
+ "extensions": ["colours_motion", "shape_statement"]
166
+ });
167
+ }
168
+ };
169
+
170
+ Blockly.Blocks['motion_goto_menu'] = {
171
+ /**
172
+ * Go to drop-down menu.
173
+ * @this Blockly.Block
174
+ */
175
+ init: function() {
176
+ this.jsonInit({
177
+ "message0": "%1",
178
+ "args0": [
179
+ {
180
+ "type": "field_dropdown",
181
+ "name": "TO",
182
+ "options": [
183
+ [Blockly.Msg.MOTION_GOTO_POINTER, '_mouse_'],
184
+ [Blockly.Msg.MOTION_GOTO_RANDOM, '_random_']
185
+ ]
186
+ }
187
+ ],
188
+ "colour": Blockly.Colours.motion.secondary,
189
+ "colourSecondary": Blockly.Colours.motion.secondary,
190
+ "colourTertiary": Blockly.Colours.motion.tertiary,
191
+ "colourQuaternary": Blockly.Colours.motion.quaternary,
192
+ "extensions": ["output_string"]
193
+ });
194
+ }
195
+ };
196
+
197
+ Blockly.Blocks['motion_gotoxy'] = {
198
+ /**
199
+ * Block to go to X, Y.
200
+ * @this Blockly.Block
201
+ */
202
+ init: function() {
203
+ this.jsonInit({
204
+ "message0": Blockly.Msg.MOTION_GOTOXY,
205
+ "args0": [
206
+ {
207
+ "type": "input_value",
208
+ "name": "X"
209
+ },
210
+ {
211
+ "type": "input_value",
212
+ "name": "Y"
213
+ }
214
+ ],
215
+ "category": Blockly.Categories.motion,
216
+ "extensions": ["colours_motion", "shape_statement"]
217
+ });
218
+ }
219
+ };
220
+
221
+ Blockly.Blocks['motion_goto'] = {
222
+ /**
223
+ * Block to go to a menu item.
224
+ * @this Blockly.Block
225
+ */
226
+ init: function() {
227
+ this.jsonInit({
228
+ "message0": Blockly.Msg.MOTION_GOTO,
229
+ "args0": [
230
+ {
231
+ "type": "input_value",
232
+ "name": "TO"
233
+ }
234
+ ],
235
+ "category": Blockly.Categories.motion,
236
+ "extensions": ["colours_motion", "shape_statement"]
237
+ });
238
+ }
239
+ };
240
+
241
+ Blockly.Blocks['motion_glidesecstoxy'] = {
242
+ /**
243
+ * Block to glide for a specified time.
244
+ * @this Blockly.Block
245
+ */
246
+ init: function() {
247
+ this.jsonInit({
248
+ "message0": Blockly.Msg.MOTION_GLIDESECSTOXY,
249
+ "args0": [
250
+ {
251
+ "type": "input_value",
252
+ "name": "SECS"
253
+ },
254
+ {
255
+ "type": "input_value",
256
+ "name": "X"
257
+ },
258
+ {
259
+ "type": "input_value",
260
+ "name": "Y"
261
+ }
262
+ ],
263
+ "category": Blockly.Categories.motion,
264
+ "extensions": ["colours_motion", "shape_statement"]
265
+ });
266
+ }
267
+ };
268
+
269
+ Blockly.Blocks['motion_glideto_menu'] = {
270
+ /**
271
+ * Glide to drop-down menu
272
+ * @this Blockly.Block
273
+ */
274
+ init: function() {
275
+ this.jsonInit({
276
+ "message0": "%1",
277
+ "args0": [
278
+ {
279
+ "type": "field_dropdown",
280
+ "name": "TO",
281
+ "options": [
282
+ [Blockly.Msg.MOTION_GLIDETO_POINTER, '_mouse_'],
283
+ [Blockly.Msg.MOTION_GLIDETO_RANDOM, '_random_']
284
+ ]
285
+ }
286
+ ],
287
+ "colour": Blockly.Colours.motion.secondary,
288
+ "colourSecondary": Blockly.Colours.motion.secondary,
289
+ "colourTertiary": Blockly.Colours.motion.tertiary,
290
+ "colourQuaternary": Blockly.Colours.motion.quaternary,
291
+ "extensions": ["output_string"]
292
+ });
293
+ }
294
+ };
295
+
296
+ Blockly.Blocks['motion_glideto'] = {
297
+ /**
298
+ * Block to glide to a menu item
299
+ * @this Blockly.Block
300
+ */
301
+ init: function() {
302
+ this.jsonInit({
303
+ "message0": Blockly.Msg.MOTION_GLIDETO,
304
+ "args0": [
305
+ {
306
+ "type": "input_value",
307
+ "name": "SECS"
308
+ },
309
+ {
310
+ "type": "input_value",
311
+ "name": "TO"
312
+ }
313
+ ],
314
+ "category": Blockly.Categories.motion,
315
+ "extensions": ["colours_motion", "shape_statement"]
316
+ });
317
+ }
318
+ };
319
+
320
+ Blockly.Blocks['motion_changexby'] = {
321
+ /**
322
+ * Block to change X.
323
+ * @this Blockly.Block
324
+ */
325
+ init: function() {
326
+ this.jsonInit({
327
+ "message0": Blockly.Msg.MOTION_CHANGEXBY,
328
+ "args0": [
329
+ {
330
+ "type": "input_value",
331
+ "name": "DX"
332
+ }
333
+ ],
334
+ "category": Blockly.Categories.motion,
335
+ "extensions": ["colours_motion", "shape_statement"]
336
+ });
337
+ }
338
+ };
339
+
340
+ Blockly.Blocks['motion_setx'] = {
341
+ /**
342
+ * Block to set X.
343
+ * @this Blockly.Block
344
+ */
345
+ init: function() {
346
+ this.jsonInit({
347
+ "message0": Blockly.Msg.MOTION_SETX,
348
+ "args0": [
349
+ {
350
+ "type": "input_value",
351
+ "name": "X"
352
+ }
353
+ ],
354
+ "category": Blockly.Categories.motion,
355
+ "extensions": ["colours_motion", "shape_statement"]
356
+ });
357
+ }
358
+ };
359
+
360
+ Blockly.Blocks['motion_changeyby'] = {
361
+ /**
362
+ * Block to change Y.
363
+ * @this Blockly.Block
364
+ */
365
+ init: function() {
366
+ this.jsonInit({
367
+ "message0": Blockly.Msg.MOTION_CHANGEYBY,
368
+ "args0": [
369
+ {
370
+ "type": "input_value",
371
+ "name": "DY"
372
+ }
373
+ ],
374
+ "category": Blockly.Categories.motion,
375
+ "extensions": ["colours_motion", "shape_statement"]
376
+ });
377
+ }
378
+ };
379
+
380
+ Blockly.Blocks['motion_sety'] = {
381
+ /**
382
+ * Block to set Y.
383
+ * @this Blockly.Block
384
+ */
385
+ init: function() {
386
+ this.jsonInit({
387
+ "message0": Blockly.Msg.MOTION_SETY,
388
+ "args0": [
389
+ {
390
+ "type": "input_value",
391
+ "name": "Y"
392
+ }
393
+ ],
394
+ "category": Blockly.Categories.motion,
395
+ "extensions": ["colours_motion", "shape_statement"]
396
+ });
397
+ }
398
+ };
399
+
400
+ Blockly.Blocks['motion_ifonedgebounce'] = {
401
+ /**
402
+ * Block to bounce on edge.
403
+ * @this Blockly.Block
404
+ */
405
+ init: function() {
406
+ this.jsonInit({
407
+ "message0": Blockly.Msg.MOTION_IFONEDGEBOUNCE,
408
+ "category": Blockly.Categories.motion,
409
+ "extensions": ["colours_motion", "shape_statement"]
410
+ });
411
+ }
412
+ };
413
+
414
+ Blockly.Blocks['motion_setrotationstyle'] = {
415
+ /**
416
+ * Block to set rotation style.
417
+ * @this Blockly.Block
418
+ */
419
+ init: function() {
420
+ this.jsonInit({
421
+ "message0": Blockly.Msg.MOTION_SETROTATIONSTYLE,
422
+ "args0": [
423
+ {
424
+ "type": "field_dropdown",
425
+ "name": "STYLE",
426
+ "options": [
427
+ [Blockly.Msg.MOTION_SETROTATIONSTYLE_LEFTRIGHT, 'left-right'],
428
+ [Blockly.Msg.MOTION_SETROTATIONSTYLE_DONTROTATE, 'don\'t rotate'],
429
+ [Blockly.Msg.MOTION_SETROTATIONSTYLE_ALLAROUND, 'all around']
430
+ ]
431
+ }
432
+ ],
433
+ "category": Blockly.Categories.motion,
434
+ "extensions": ["colours_motion", "shape_statement"]
435
+ });
436
+ }
437
+ };
438
+
439
+ Blockly.Blocks['motion_xposition'] = {
440
+ /**
441
+ * Block to report X.
442
+ * @this Blockly.Block
443
+ */
444
+ init: function() {
445
+ this.jsonInit({
446
+ "message0": Blockly.Msg.MOTION_XPOSITION,
447
+ "category": Blockly.Categories.motion,
448
+ "checkboxInFlyout": true,
449
+ "extensions": ["colours_motion", "output_number"]
450
+ });
451
+ }
452
+ };
453
+
454
+ Blockly.Blocks['motion_yposition'] = {
455
+ /**
456
+ * Block to report Y.
457
+ * @this Blockly.Block
458
+ */
459
+ init: function() {
460
+ this.jsonInit({
461
+ "message0": Blockly.Msg.MOTION_YPOSITION,
462
+ "category": Blockly.Categories.motion,
463
+ "checkboxInFlyout": true,
464
+ "extensions": ["colours_motion", "output_number"]
465
+ });
466
+ }
467
+ };
468
+
469
+ Blockly.Blocks['motion_direction'] = {
470
+ /**
471
+ * Block to report direction.
472
+ * @this Blockly.Block
473
+ */
474
+ init: function() {
475
+ this.jsonInit({
476
+ "message0": Blockly.Msg.MOTION_DIRECTION,
477
+ "category": Blockly.Categories.motion,
478
+ "checkboxInFlyout": true,
479
+ "extensions": ["colours_motion", "output_number"]
480
+ });
481
+ }
482
+ };
483
+
484
+ Blockly.Blocks['motion_scroll_right'] = {
485
+ /**
486
+ * Block to scroll the stage right. Does not actually do anything. This is
487
+ * an obsolete block that is implemented for compatibility with Scratch 2.0
488
+ * projects.
489
+ * @this Blockly.Block
490
+ */
491
+ init: function() {
492
+ this.jsonInit({
493
+ "message0": Blockly.Msg.MOTION_SCROLLRIGHT,
494
+ "args0": [
495
+ {
496
+ "type": "input_value",
497
+ "name": "DISTANCE"
498
+ }
499
+ ],
500
+ "category": Blockly.Categories.motion,
501
+ "extensions": ["colours_motion", "shape_statement"]
502
+ });
503
+ }
504
+ };
505
+
506
+ Blockly.Blocks['motion_scroll_up'] = {
507
+ /**
508
+ * Block to scroll the stage up. Does not actually do anything. This is an
509
+ * obsolete block that is implemented for compatibility with Scratch 2.0
510
+ * projects.
511
+ * @this Blockly.Block
512
+ */
513
+ init: function() {
514
+ this.jsonInit({
515
+ "message0": Blockly.Msg.MOTION_SCROLLUP,
516
+ "args0": [
517
+ {
518
+ "type": "input_value",
519
+ "name": "DISTANCE"
520
+ }
521
+ ],
522
+ "category": Blockly.Categories.motion,
523
+ "extensions": ["colours_motion", "shape_statement"]
524
+ });
525
+ }
526
+ };
527
+
528
+ Blockly.Blocks['motion_align_scene'] = {
529
+ /**
530
+ * Block to change the stage's scrolling alignment. Does not actually do
531
+ * anything. This is an obsolete block that is implemented for compatibility
532
+ * with Scratch 2.0 projects.
533
+ * @this Blockly.Block
534
+ */
535
+ init: function() {
536
+ this.jsonInit({
537
+ "message0": Blockly.Msg.MOTION_ALIGNSCENE,
538
+ "args0": [
539
+ {
540
+ "type": "field_dropdown",
541
+ "name": "ALIGNMENT",
542
+ "options": [
543
+ [Blockly.Msg.MOTION_ALIGNSCENE_BOTTOMLEFT, 'bottom-left'],
544
+ [Blockly.Msg.MOTION_ALIGNSCENE_BOTTOMRIGHT, 'bottom-right'],
545
+ [Blockly.Msg.MOTION_ALIGNSCENE_MIDDLE, 'middle'],
546
+ [Blockly.Msg.MOTION_ALIGNSCENE_TOPLEFT, 'top-left'],
547
+ [Blockly.Msg.MOTION_ALIGNSCENE_TOPRIGHT, 'top-right']
548
+ ]
549
+ }
550
+ ],
551
+ "category": Blockly.Categories.motion,
552
+ "extensions": ["colours_motion", "shape_statement"]
553
+ });
554
+ }
555
+ };
556
+
557
+ Blockly.Blocks['motion_xscroll'] = {
558
+ /**
559
+ * Block to report the stage's scroll position's X value. Does not actually
560
+ * do anything. This is an obsolete block that is implemented for
561
+ * compatibility with Scratch 2.0 projects.
562
+ * @this Blockly.Block
563
+ */
564
+ init: function() {
565
+ this.jsonInit({
566
+ "message0": Blockly.Msg.MOTION_XSCROLL,
567
+ "category": Blockly.Categories.motion,
568
+ "extensions": ["colours_motion", "output_number"]
569
+ });
570
+ }
571
+ };
572
+
573
+ Blockly.Blocks['motion_yscroll'] = {
574
+ /**
575
+ * Block to report the stage's scroll position's Y value. Does not actually
576
+ * do anything. This is an obsolete block that is implemented for
577
+ * compatibility with Scratch 2.0 projects.
578
+ * @this Blockly.Block
579
+ */
580
+ init: function() {
581
+ this.jsonInit({
582
+ "message0": Blockly.Msg.MOTION_YSCROLL,
583
+ "category": Blockly.Categories.motion,
584
+ "extensions": ["colours_motion", "output_number"]
585
+ });
586
+ }
587
+ };