@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,329 @@
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.event');
24
+
25
+ goog.require('Blockly.Blocks');
26
+ goog.require('Blockly.Colours');
27
+ goog.require('Blockly.constants');
28
+ goog.require('Blockly.ScratchBlocks.VerticalExtensions');
29
+
30
+ Blockly.Blocks['event_whentouchingobject'] = {
31
+ /**
32
+ * Block for when a sprite is touching an object.
33
+ * @this Blockly.Block
34
+ */
35
+ init: function() {
36
+ this.jsonInit({
37
+ "message0": Blockly.Msg.EVENT_WHENTOUCHINGOBJECT,
38
+ "args0": [
39
+ {
40
+ "type": "input_value",
41
+ "name": "TOUCHINGOBJECTMENU"
42
+ }
43
+ ],
44
+ "category": Blockly.Categories.event,
45
+ "extensions": ["colours_event", "shape_hat"]
46
+ });
47
+ }
48
+ };
49
+
50
+ Blockly.Blocks['event_touchingobjectmenu'] = {
51
+ /**
52
+ * "Touching [Object]" Block Menu.
53
+ * @this Blockly.Block
54
+ */
55
+ init: function() {
56
+ this.jsonInit({
57
+ "message0": "%1",
58
+ "args0": [
59
+ {
60
+ "type": "field_dropdown",
61
+ "name": "TOUCHINGOBJECTMENU",
62
+ "options": [
63
+ [Blockly.Msg.SENSING_TOUCHINGOBJECT_POINTER, '_mouse_'],
64
+ [Blockly.Msg.SENSING_TOUCHINGOBJECT_EDGE, '_edge_']
65
+ ]
66
+ }
67
+ ],
68
+ "extensions": ["colours_event", "output_string"]
69
+ });
70
+ }
71
+ };
72
+
73
+ Blockly.Blocks['event_whenflagclicked'] = {
74
+ /**
75
+ * Block for when flag clicked.
76
+ * @this Blockly.Block
77
+ */
78
+ init: function() {
79
+ this.jsonInit({
80
+ "id": "event_whenflagclicked",
81
+ "message0": Blockly.Msg.EVENT_WHENFLAGCLICKED,
82
+ "args0": [
83
+ {
84
+ "type": "field_image",
85
+ "src": Blockly.mainWorkspace.options.pathToMedia + "green-flag.svg",
86
+ "width": 24,
87
+ "height": 24,
88
+ "alt": "flag"
89
+ }
90
+ ],
91
+ "category": Blockly.Categories.event,
92
+ "extensions": ["colours_event", "shape_hat"]
93
+ });
94
+ }
95
+ };
96
+
97
+ Blockly.Blocks['event_whenthisspriteclicked'] = {
98
+ /**
99
+ * Block for when this sprite clicked.
100
+ * @this Blockly.Block
101
+ */
102
+ init: function() {
103
+ this.jsonInit({
104
+ "message0": Blockly.Msg.EVENT_WHENTHISSPRITECLICKED,
105
+ "category": Blockly.Categories.event,
106
+ "extensions": ["colours_event", "shape_hat"]
107
+ });
108
+ }
109
+
110
+ };
111
+
112
+ Blockly.Blocks['event_whenstageclicked'] = {
113
+ /**
114
+ * Block for when the stage is clicked.
115
+ * @this Blockly.Block
116
+ */
117
+ init: function() {
118
+ this.jsonInit({
119
+ "message0": Blockly.Msg.EVENT_WHENSTAGECLICKED,
120
+ "category": Blockly.Categories.event,
121
+ "extensions": ["colours_event", "shape_hat"]
122
+ });
123
+ }
124
+ };
125
+
126
+ Blockly.Blocks['event_whenbroadcastreceived'] = {
127
+ /**
128
+ * Block for when broadcast received.
129
+ * @this Blockly.Block
130
+ */
131
+ init: function() {
132
+ this.jsonInit({
133
+ "id": "event_whenbroadcastreceived",
134
+ "message0": Blockly.Msg.EVENT_WHENBROADCASTRECEIVED,
135
+ "args0": [
136
+ {
137
+ "type": "field_variable",
138
+ "name": "BROADCAST_OPTION",
139
+ "variableTypes": [Blockly.BROADCAST_MESSAGE_VARIABLE_TYPE],
140
+ "variable": Blockly.Msg.DEFAULT_BROADCAST_MESSAGE_NAME
141
+ }
142
+ ],
143
+ "category": Blockly.Categories.event,
144
+ "extensions": ["colours_event", "shape_hat"]
145
+ });
146
+ }
147
+ };
148
+
149
+ Blockly.Blocks['event_whenbackdropswitchesto'] = {
150
+ /**
151
+ * Block for when the current backdrop switched to a selected backdrop.
152
+ * @this Blockly.Block
153
+ */
154
+ init: function() {
155
+ this.jsonInit({
156
+ "message0": Blockly.Msg.EVENT_WHENBACKDROPSWITCHESTO,
157
+ "args0": [
158
+ {
159
+ "type": "field_dropdown",
160
+ "name": "BACKDROP",
161
+ "options": [
162
+ ['backdrop1', 'BACKDROP1']
163
+ ]
164
+ }
165
+ ],
166
+ "category": Blockly.Categories.event,
167
+ "extensions": ["colours_event", "shape_hat"]
168
+ });
169
+ }
170
+ };
171
+
172
+ Blockly.Blocks['event_whengreaterthan'] = {
173
+ /**
174
+ * Block for when loudness/timer/video motion is greater than the value.
175
+ * @this Blockly.Block
176
+ */
177
+ init: function() {
178
+ this.jsonInit({
179
+ "message0": Blockly.Msg.EVENT_WHENGREATERTHAN,
180
+ "args0": [
181
+ {
182
+ "type": "field_dropdown",
183
+ "name": "WHENGREATERTHANMENU",
184
+ "options": [
185
+ [Blockly.Msg.EVENT_WHENGREATERTHAN_LOUDNESS, 'LOUDNESS'],
186
+ [Blockly.Msg.EVENT_WHENGREATERTHAN_TIMER, 'TIMER']
187
+ ]
188
+ },
189
+ {
190
+ "type": "input_value",
191
+ "name": "VALUE"
192
+ }
193
+ ],
194
+ "category": Blockly.Categories.event,
195
+ "extensions": ["colours_event", "shape_hat"]
196
+ });
197
+ }
198
+ };
199
+
200
+ Blockly.Blocks['event_broadcast_menu'] = {
201
+ /**
202
+ * Broadcast drop-down menu.
203
+ * @this Blockly.Block
204
+ */
205
+ init: function() {
206
+ this.jsonInit({
207
+ "message0": "%1",
208
+ "args0": [
209
+ {
210
+ "type": "field_variable",
211
+ "name": "BROADCAST_OPTION",
212
+ "variableTypes":[Blockly.BROADCAST_MESSAGE_VARIABLE_TYPE],
213
+ "variable": Blockly.Msg.DEFAULT_BROADCAST_MESSAGE_NAME
214
+ }
215
+ ],
216
+ "colour": Blockly.Colours.event.secondary,
217
+ "colourSecondary": Blockly.Colours.event.secondary,
218
+ "colourTertiary": Blockly.Colours.event.tertiary,
219
+ "colourQuaternary": Blockly.Colours.event.quaternary,
220
+ "extensions": ["output_string"]
221
+ });
222
+ }
223
+ };
224
+
225
+ Blockly.Blocks['event_broadcast'] = {
226
+ /**
227
+ * Block to send a broadcast.
228
+ * @this Blockly.Block
229
+ */
230
+ init: function() {
231
+ this.jsonInit({
232
+ "id": "event_broadcast",
233
+ "message0": Blockly.Msg.EVENT_BROADCAST,
234
+ "args0": [
235
+ {
236
+ "type": "input_value",
237
+ "name": "BROADCAST_INPUT"
238
+ }
239
+ ],
240
+ "category": Blockly.Categories.event,
241
+ "extensions": ["colours_event", "shape_statement"]
242
+ });
243
+ }
244
+ };
245
+
246
+ Blockly.Blocks['event_broadcastandwait'] = {
247
+ /**
248
+ * Block to send a broadcast.
249
+ * @this Blockly.Block
250
+ */
251
+ init: function() {
252
+ this.jsonInit({
253
+ "message0": Blockly.Msg.EVENT_BROADCASTANDWAIT,
254
+ "args0": [
255
+ {
256
+ "type":"input_value",
257
+ "name":"BROADCAST_INPUT"
258
+ }
259
+ ],
260
+ "category": Blockly.Categories.event,
261
+ "extensions": ["colours_event", "shape_statement"]
262
+ });
263
+ }
264
+ };
265
+
266
+ Blockly.Blocks['event_whenkeypressed'] = {
267
+ /**
268
+ * Block to send a broadcast.
269
+ * @this Blockly.Block
270
+ */
271
+ init: function() {
272
+ this.jsonInit({
273
+ "id": "event_whenkeypressed",
274
+ "message0": Blockly.Msg.EVENT_WHENKEYPRESSED,
275
+ "args0": [
276
+ {
277
+ "type": "field_dropdown",
278
+ "name": "KEY_OPTION",
279
+ "options": [
280
+ [Blockly.Msg.EVENT_WHENKEYPRESSED_SPACE, 'space'],
281
+ [Blockly.Msg.EVENT_WHENKEYPRESSED_UP, 'up arrow'],
282
+ [Blockly.Msg.EVENT_WHENKEYPRESSED_DOWN, 'down arrow'],
283
+ [Blockly.Msg.EVENT_WHENKEYPRESSED_RIGHT, 'right arrow'],
284
+ [Blockly.Msg.EVENT_WHENKEYPRESSED_LEFT, 'left arrow'],
285
+ [Blockly.Msg.EVENT_WHENKEYPRESSED_ANY, 'any'],
286
+ ['a', 'a'],
287
+ ['b', 'b'],
288
+ ['c', 'c'],
289
+ ['d', 'd'],
290
+ ['e', 'e'],
291
+ ['f', 'f'],
292
+ ['g', 'g'],
293
+ ['h', 'h'],
294
+ ['i', 'i'],
295
+ ['j', 'j'],
296
+ ['k', 'k'],
297
+ ['l', 'l'],
298
+ ['m', 'm'],
299
+ ['n', 'n'],
300
+ ['o', 'o'],
301
+ ['p', 'p'],
302
+ ['q', 'q'],
303
+ ['r', 'r'],
304
+ ['s', 's'],
305
+ ['t', 't'],
306
+ ['u', 'u'],
307
+ ['v', 'v'],
308
+ ['w', 'w'],
309
+ ['x', 'x'],
310
+ ['y', 'y'],
311
+ ['z', 'z'],
312
+ ['0', '0'],
313
+ ['1', '1'],
314
+ ['2', '2'],
315
+ ['3', '3'],
316
+ ['4', '4'],
317
+ ['5', '5'],
318
+ ['6', '6'],
319
+ ['7', '7'],
320
+ ['8', '8'],
321
+ ['9', '9']
322
+ ]
323
+ }
324
+ ],
325
+ "category": Blockly.Categories.event,
326
+ "extensions": ["colours_event", "shape_hat"]
327
+ });
328
+ }
329
+ };
@@ -0,0 +1,294 @@
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.extensions');
24
+
25
+ goog.require('Blockly.Blocks');
26
+ goog.require('Blockly.Colours');
27
+ goog.require('Blockly.constants');
28
+ goog.require('Blockly.ScratchBlocks.VerticalExtensions');
29
+
30
+ Blockly.Blocks['extension_pen_down'] = {
31
+ /**
32
+ * @this Blockly.Block
33
+ */
34
+ init: function() {
35
+ this.jsonInit({
36
+ "message0": "%1 %2 pen down",
37
+ "args0": [
38
+ {
39
+ "type": "field_image",
40
+ "src": Blockly.mainWorkspace.options.pathToMedia + "extensions/pen-block-icon.svg",
41
+ "width": 40,
42
+ "height": 40
43
+ },
44
+ {
45
+ "type": "field_vertical_separator"
46
+ }
47
+ ],
48
+ "category": Blockly.Categories.more,
49
+ "extensions": ["colours_more", "shape_statement", "scratch_extension"]
50
+ });
51
+ }
52
+ };
53
+
54
+ Blockly.Blocks['extension_music_drum'] = {
55
+ /**
56
+ * @this Blockly.Block
57
+ */
58
+ init: function() {
59
+ this.jsonInit({
60
+ "message0": "%1 %2 play drum %3",
61
+ "args0": [
62
+ {
63
+ "type": "field_image",
64
+ "src": Blockly.mainWorkspace.options.pathToMedia + "extensions/music-block-icon.svg",
65
+ "width": 40,
66
+ "height": 40
67
+ },
68
+ {
69
+ "type": "field_vertical_separator"
70
+ },
71
+ {
72
+ "type": "input_value",
73
+ "name": "NUMBER"
74
+ }
75
+ ],
76
+ "category": Blockly.Categories.more,
77
+ "extensions": ["colours_more", "shape_statement", "scratch_extension"]
78
+ });
79
+ }
80
+ };
81
+
82
+ Blockly.Blocks['extension_wedo_motor'] = {
83
+ /**
84
+ * @this Blockly.Block
85
+ */
86
+ init: function() {
87
+ this.jsonInit({
88
+ "message0": "%1 %2 turn a motor %3",
89
+ "args0": [
90
+ {
91
+ "type": "field_image",
92
+ "src": Blockly.mainWorkspace.options.pathToMedia + "extensions/wedo2-block-icon.svg",
93
+ "width": 40,
94
+ "height": 40
95
+ },
96
+ {
97
+ "type": "field_vertical_separator"
98
+ },
99
+ {
100
+ "type": "field_image",
101
+ "src": Blockly.mainWorkspace.options.pathToMedia + "rotate-right.svg",
102
+ "width": 24,
103
+ "height": 24
104
+ }
105
+ ],
106
+ "category": Blockly.Categories.more,
107
+ "extensions": ["colours_more", "shape_statement", "scratch_extension"]
108
+ });
109
+ }
110
+ };
111
+
112
+ Blockly.Blocks['extension_wedo_hat'] = {
113
+ /**
114
+ * @this Blockly.Block
115
+ */
116
+ init: function() {
117
+ this.jsonInit({
118
+ "message0": "%1 %2 when I am wearing a hat",
119
+ "args0": [
120
+ {
121
+ "type": "field_image",
122
+ "src": Blockly.mainWorkspace.options.pathToMedia + "extensions/wedo2-block-icon.svg",
123
+ "width": 40,
124
+ "height": 40
125
+ },
126
+ {
127
+ "type": "field_vertical_separator"
128
+ }
129
+ ],
130
+ "category": Blockly.Categories.more,
131
+ "extensions": ["colours_more", "shape_hat", "scratch_extension"]
132
+ });
133
+ }
134
+ };
135
+
136
+ Blockly.Blocks['extension_wedo_boolean'] = {
137
+ /**
138
+ * @this Blockly.Block
139
+ */
140
+ init: function() {
141
+ this.jsonInit({
142
+ "message0": "%1 %2 O RLY?",
143
+ "args0": [
144
+ {
145
+ "type": "field_image",
146
+ "src": Blockly.mainWorkspace.options.pathToMedia + "extensions/wedo2-block-icon.svg",
147
+ "width": 40,
148
+ "height": 40
149
+ },
150
+ {
151
+ "type": "field_vertical_separator"
152
+ }
153
+ ],
154
+ "category": Blockly.Categories.more,
155
+ "extensions": ["colours_more", "output_boolean", "scratch_extension"]
156
+ });
157
+ }
158
+ };
159
+
160
+ Blockly.Blocks['extension_wedo_tilt_reporter'] = {
161
+ /**
162
+ * @this Blockly.Block
163
+ */
164
+ init: function() {
165
+ this.jsonInit({
166
+ "message0": "%1 %2 tilt angle %3",
167
+ "args0": [
168
+ {
169
+ "type": "field_image",
170
+ "src": Blockly.mainWorkspace.options.pathToMedia + "extensions/wedo2-block-icon.svg",
171
+ "width": 40,
172
+ "height": 40
173
+ },
174
+ {
175
+ "type": "field_vertical_separator"
176
+ },
177
+ {
178
+ "type": "input_value",
179
+ "name": "TILT"
180
+ }
181
+ ],
182
+ "category": Blockly.Categories.more,
183
+ "extensions": ["colours_more", "output_number", "scratch_extension"]
184
+ });
185
+ }
186
+ };
187
+
188
+ Blockly.Blocks['extension_wedo_tilt_menu'] = {
189
+ /**
190
+ * @this Blockly.Block
191
+ */
192
+ init: function() {
193
+ this.jsonInit({
194
+ "message0": "%1",
195
+ "args0": [
196
+ {
197
+ "type": "field_dropdown",
198
+ "name": "TILT",
199
+ "options": [
200
+ ['Any', 'Any'],
201
+ ['Whirl', 'Whirl'],
202
+ ['South', 'South'],
203
+ ['Back in time', 'Back in time']
204
+ ]
205
+ }
206
+ ],
207
+ "extensions": ["colours_more", "output_string"]
208
+ });
209
+ }
210
+ };
211
+
212
+ Blockly.Blocks['extension_music_reporter'] = {
213
+ /**
214
+ * @this Blockly.Block
215
+ */
216
+ init: function() {
217
+ this.jsonInit({
218
+ "message0": "%1 %2 hey now, you're an all-star",
219
+ "args0": [
220
+ {
221
+ "type": "field_image",
222
+ "src": Blockly.mainWorkspace.options.pathToMedia + "extensions/music-block-icon.svg",
223
+ "width": 40,
224
+ "height": 40
225
+ },
226
+ {
227
+ "type": "field_vertical_separator"
228
+ }
229
+ ],
230
+ "category": Blockly.Categories.more,
231
+ "extensions": ["colours_more", "output_number", "scratch_extension"]
232
+ });
233
+ }
234
+ };
235
+
236
+ Blockly.Blocks['extension_microbit_display'] = {
237
+ /**
238
+ * @this Blockly.Block
239
+ */
240
+ init: function() {
241
+ this.jsonInit({
242
+ "message0": "%1 %2 display %3",
243
+ "args0": [
244
+ {
245
+ "type": "field_image",
246
+ "src": Blockly.mainWorkspace.options.pathToMedia + "extensions/microbit-block-icon.svg",
247
+ "width": 40,
248
+ "height": 40
249
+ },
250
+ {
251
+ "type": "field_vertical_separator"
252
+ },
253
+ {
254
+ "type": "input_value",
255
+ "name": "MATRIX"
256
+ },
257
+ ],
258
+ "category": Blockly.Categories.pen,
259
+ "extensions": ["colours_pen", "shape_statement", "scratch_extension"]
260
+ });
261
+ }
262
+ };
263
+
264
+ Blockly.Blocks['extension_music_play_note'] = {
265
+ /**
266
+ * @this Blockly.Block
267
+ */
268
+ init: function() {
269
+ this.jsonInit({
270
+ "message0": "%1 %2 play note %3 for %4 beats",
271
+ "args0": [
272
+ {
273
+ "type": "field_image",
274
+ "src": Blockly.mainWorkspace.options.pathToMedia + "extensions/music-block-icon.svg",
275
+ "width": 40,
276
+ "height": 40
277
+ },
278
+ {
279
+ "type": "field_vertical_separator"
280
+ },
281
+ {
282
+ "type": "input_value",
283
+ "name": "NOTE"
284
+ },
285
+ {
286
+ "type": "input_value",
287
+ "name": "BEATS"
288
+ }
289
+ ],
290
+ "category": Blockly.Categories.pen,
291
+ "extensions": ["colours_pen", "shape_statement", "scratch_extension"]
292
+ });
293
+ }
294
+ };