scratchblocks-plus 1.0.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 (119) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +193 -0
  3. package/browser.es.js +8 -0
  4. package/browser.js +8 -0
  5. package/build/scratchblocks-plus.min.es.js +12 -0
  6. package/build/scratchblocks-plus.min.es.js.map +1 -0
  7. package/build/scratchblocks-plus.min.js +12 -0
  8. package/build/scratchblocks-plus.min.js.map +1 -0
  9. package/build/translations-all-es.js +11 -0
  10. package/build/translations-all-es.js.map +1 -0
  11. package/build/translations-all.js +11 -0
  12. package/build/translations-all.js.map +1 -0
  13. package/build/translations-es.js +11 -0
  14. package/build/translations-es.js.map +1 -0
  15. package/build/translations.js +11 -0
  16. package/build/translations.js.map +1 -0
  17. package/index.d.ts +297 -0
  18. package/index.js +229 -0
  19. package/locales/ab.json +1630 -0
  20. package/locales/af.json +1630 -0
  21. package/locales/all.d.ts +108 -0
  22. package/locales/all.js +161 -0
  23. package/locales/am.json +1925 -0
  24. package/locales/an.json +1630 -0
  25. package/locales/ar.json +1924 -0
  26. package/locales/ast.json +1630 -0
  27. package/locales/az.json +1925 -0
  28. package/locales/be.json +1630 -0
  29. package/locales/bg.json +1924 -0
  30. package/locales/bn.json +1630 -0
  31. package/locales/ca.json +1930 -0
  32. package/locales/ckb.json +1630 -0
  33. package/locales/cs.json +1930 -0
  34. package/locales/cy.json +1929 -0
  35. package/locales/da.json +1924 -0
  36. package/locales/de.json +1929 -0
  37. package/locales/el.json +1931 -0
  38. package/locales/eo.json +1630 -0
  39. package/locales/es-419.json +1924 -0
  40. package/locales/es.json +1929 -0
  41. package/locales/et.json +1924 -0
  42. package/locales/eu.json +1924 -0
  43. package/locales/fa.json +1929 -0
  44. package/locales/fi.json +1924 -0
  45. package/locales/fil.json +1631 -0
  46. package/locales/forums.js +37 -0
  47. package/locales/fr.json +1929 -0
  48. package/locales/fy.json +1630 -0
  49. package/locales/ga.json +1924 -0
  50. package/locales/gd.json +1929 -0
  51. package/locales/gl.json +1924 -0
  52. package/locales/ha.json +1630 -0
  53. package/locales/he.json +1929 -0
  54. package/locales/hi.json +1635 -0
  55. package/locales/hr.json +1929 -0
  56. package/locales/ht.json +1630 -0
  57. package/locales/hu.json +1930 -0
  58. package/locales/hy.json +1630 -0
  59. package/locales/id.json +1929 -0
  60. package/locales/is.json +1924 -0
  61. package/locales/it.json +1929 -0
  62. package/locales/ja-Hira.json +1637 -0
  63. package/locales/ja.json +1931 -0
  64. package/locales/ka.json +1630 -0
  65. package/locales/kk.json +1632 -0
  66. package/locales/km.json +1630 -0
  67. package/locales/ko.json +1924 -0
  68. package/locales/ku.json +1632 -0
  69. package/locales/lt.json +1924 -0
  70. package/locales/lv.json +1924 -0
  71. package/locales/mi.json +1924 -0
  72. package/locales/mn.json +1631 -0
  73. package/locales/nb.json +1929 -0
  74. package/locales/nl.json +1929 -0
  75. package/locales/nn.json +1630 -0
  76. package/locales/nso.json +1630 -0
  77. package/locales/oc.json +1630 -0
  78. package/locales/or.json +1631 -0
  79. package/locales/pl.json +1929 -0
  80. package/locales/pt-br.json +1924 -0
  81. package/locales/pt.json +1929 -0
  82. package/locales/qu.json +1630 -0
  83. package/locales/rap.json +1632 -0
  84. package/locales/ro.json +1929 -0
  85. package/locales/ru.json +1929 -0
  86. package/locales/sk.json +1924 -0
  87. package/locales/sl.json +1929 -0
  88. package/locales/sr.json +1924 -0
  89. package/locales/sv.json +1924 -0
  90. package/locales/sw.json +1630 -0
  91. package/locales/th.json +1924 -0
  92. package/locales/tn.json +1630 -0
  93. package/locales/tr.json +1932 -0
  94. package/locales/uk.json +1924 -0
  95. package/locales/uz.json +1631 -0
  96. package/locales/vi.json +1925 -0
  97. package/locales/xh.json +1630 -0
  98. package/locales/zh-cn.json +1930 -0
  99. package/locales/zh-tw.json +1930 -0
  100. package/locales/zu.json +1918 -0
  101. package/package.json +81 -0
  102. package/scratch2/blocks.js +1000 -0
  103. package/scratch2/draw.js +452 -0
  104. package/scratch2/filter.js +78 -0
  105. package/scratch2/index.js +12 -0
  106. package/scratch2/style.css.js +148 -0
  107. package/scratch2/style.js +214 -0
  108. package/scratch3/blocks.js +1134 -0
  109. package/scratch3/draw.js +334 -0
  110. package/scratch3/index.js +12 -0
  111. package/scratch3/style.css.js +280 -0
  112. package/scratch3/style.js +877 -0
  113. package/syntax/blocks.js +921 -0
  114. package/syntax/commands.js +1755 -0
  115. package/syntax/dropdowns.js +688 -0
  116. package/syntax/extensions.js +34 -0
  117. package/syntax/index.js +17 -0
  118. package/syntax/model.js +566 -0
  119. package/syntax/syntax.js +1091 -0
@@ -0,0 +1,1755 @@
1
+ export default [
2
+ {
3
+ id: "MOTION_MOVESTEPS",
4
+ selector: "forward:",
5
+ spec: "move %1 steps",
6
+ inputs: ["%n"],
7
+ shape: "stack",
8
+ category: "motion",
9
+ },
10
+ {
11
+ id: "MOTION_TURNRIGHT",
12
+ selector: "turnRight:",
13
+ spec: "turn @turnRight %1 degrees",
14
+ inputs: ["%n"],
15
+ shape: "stack",
16
+ category: "motion",
17
+ },
18
+ {
19
+ id: "MOTION_TURNLEFT",
20
+ selector: "turnLeft:",
21
+ spec: "turn @turnLeft %1 degrees",
22
+ inputs: ["%n"],
23
+ shape: "stack",
24
+ category: "motion",
25
+ },
26
+ {
27
+ id: "MOTION_POINTINDIRECTION",
28
+ selector: "heading:",
29
+ spec: "point in direction %1",
30
+ inputs: ["%d.direction"],
31
+ shape: "stack",
32
+ category: "motion",
33
+ },
34
+ {
35
+ id: "MOTION_POINTTOWARDS",
36
+ selector: "pointTowards:",
37
+ spec: "point towards %1",
38
+ inputs: ["%m.spriteOrMouse"],
39
+ shape: "stack",
40
+ category: "motion",
41
+ },
42
+ {
43
+ id: "MOTION_GOTOXY",
44
+ selector: "gotoX:y:",
45
+ spec: "go to x:%1 y:%2",
46
+ inputs: ["%n", "%n"],
47
+ shape: "stack",
48
+ category: "motion",
49
+ },
50
+ {
51
+ id: "MOTION_GOTO",
52
+ selector: "gotoSpriteOrMouse:",
53
+ spec: "go to %1",
54
+ inputs: ["%m.location"],
55
+ shape: "stack",
56
+ category: "motion",
57
+ },
58
+ {
59
+ id: "MOTION_GLIDESECSTOXY",
60
+ selector: "glideSecs:toX:y:elapsed:from:",
61
+ spec: "glide %1 secs to x:%2 y:%3",
62
+ inputs: ["%n", "%n", "%n"],
63
+ shape: "stack",
64
+ category: "motion",
65
+ },
66
+ {
67
+ id: "MOTION_GLIDETO",
68
+ spec: "glide %1 secs to %2",
69
+ inputs: ["%n", "%m.location"],
70
+ shape: "stack",
71
+ category: "motion",
72
+ },
73
+ {
74
+ id: "MOTION_CHANGEXBY",
75
+ selector: "changeXposBy:",
76
+ spec: "change x by %1",
77
+ inputs: ["%n"],
78
+ shape: "stack",
79
+ category: "motion",
80
+ },
81
+ {
82
+ id: "MOTION_SETX",
83
+ selector: "xpos:",
84
+ spec: "set x to %1",
85
+ inputs: ["%n"],
86
+ shape: "stack",
87
+ category: "motion",
88
+ },
89
+ {
90
+ id: "MOTION_CHANGEYBY",
91
+ selector: "changeYposBy:",
92
+ spec: "change y by %1",
93
+ inputs: ["%n"],
94
+ shape: "stack",
95
+ category: "motion",
96
+ },
97
+ {
98
+ id: "MOTION_SETY",
99
+ selector: "ypos:",
100
+ spec: "set y to %1",
101
+ inputs: ["%n"],
102
+ shape: "stack",
103
+ category: "motion",
104
+ },
105
+ {
106
+ id: "MOTION_SETROTATIONSTYLE",
107
+ selector: "setRotationStyle",
108
+ spec: "set rotation style %1",
109
+ inputs: ["%m.rotationStyle"],
110
+ shape: "stack",
111
+ category: "motion",
112
+ },
113
+ {
114
+ id: "LOOKS_SAYFORSECS",
115
+ selector: "say:duration:elapsed:from:",
116
+ spec: "say %1 for %2 seconds",
117
+ inputs: ["%s", "%n"],
118
+ shape: "stack",
119
+ category: "looks",
120
+ },
121
+ {
122
+ id: "LOOKS_SAY",
123
+ selector: "say:",
124
+ spec: "say %1",
125
+ inputs: ["%s"],
126
+ shape: "stack",
127
+ category: "looks",
128
+ },
129
+ {
130
+ id: "LOOKS_THINKFORSECS",
131
+ selector: "think:duration:elapsed:from:",
132
+ spec: "think %1 for %2 seconds",
133
+ inputs: ["%s", "%n"],
134
+ shape: "stack",
135
+ category: "looks",
136
+ },
137
+ {
138
+ id: "LOOKS_THINK",
139
+ selector: "think:",
140
+ spec: "think %1",
141
+ inputs: ["%s"],
142
+ shape: "stack",
143
+ category: "looks",
144
+ },
145
+ {
146
+ id: "LOOKS_SHOW",
147
+ selector: "show",
148
+ spec: "show",
149
+ inputs: [],
150
+ shape: "stack",
151
+ category: "looks",
152
+ },
153
+ {
154
+ id: "LOOKS_HIDE",
155
+ selector: "hide",
156
+ spec: "hide",
157
+ inputs: [],
158
+ shape: "stack",
159
+ category: "looks",
160
+ },
161
+ {
162
+ id: "LOOKS_SWITCHCOSTUMETO",
163
+ selector: "lookLike:",
164
+ spec: "switch costume to %1",
165
+ inputs: ["%m.costume"],
166
+ shape: "stack",
167
+ category: "looks",
168
+ },
169
+ {
170
+ id: "LOOKS_NEXTCOSTUME",
171
+ selector: "nextCostume",
172
+ spec: "next costume",
173
+ inputs: [],
174
+ shape: "stack",
175
+ category: "looks",
176
+ },
177
+ {
178
+ id: "LOOKS_NEXTBACKDROP_BLOCK",
179
+ selector: "nextScene",
180
+ spec: "next backdrop",
181
+ inputs: [],
182
+ shape: "stack",
183
+ category: "looks",
184
+ },
185
+ {
186
+ id: "LOOKS_SWITCHBACKDROPTO",
187
+ selector: "startScene",
188
+ spec: "switch backdrop to %1",
189
+ inputs: ["%m.backdrop"],
190
+ shape: "stack",
191
+ category: "looks",
192
+ },
193
+ {
194
+ id: "LOOKS_SWITCHBACKDROPTOANDWAIT",
195
+ selector: "startSceneAndWait",
196
+ spec: "switch backdrop to %1 and wait",
197
+ inputs: ["%m.backdrop"],
198
+ shape: "stack",
199
+ category: "looks",
200
+ },
201
+ {
202
+ id: "LOOKS_CHANGEEFFECTBY",
203
+ selector: "changeGraphicEffect:by:",
204
+ spec: "change %1 effect by %2",
205
+ inputs: ["%m.effect", "%n"],
206
+ shape: "stack",
207
+ category: "looks",
208
+ },
209
+ {
210
+ id: "LOOKS_SETEFFECTTO",
211
+ selector: "setGraphicEffect:to:",
212
+ spec: "set %1 effect to %2",
213
+ inputs: ["%m.effect", "%n"],
214
+ shape: "stack",
215
+ category: "looks",
216
+ },
217
+ {
218
+ id: "LOOKS_CLEARGRAPHICEFFECTS",
219
+ selector: "filterReset",
220
+ spec: "clear graphic effects",
221
+ inputs: [],
222
+ shape: "stack",
223
+ category: "looks",
224
+ },
225
+ {
226
+ id: "LOOKS_CHANGESIZEBY",
227
+ selector: "changeSizeBy:",
228
+ spec: "change size by %1",
229
+ inputs: ["%n"],
230
+ shape: "stack",
231
+ category: "looks",
232
+ },
233
+ {
234
+ id: "LOOKS_SETSIZETO",
235
+ selector: "setSizeTo:",
236
+ spec: "set size to %1%",
237
+ inputs: ["%n"],
238
+ shape: "stack",
239
+ category: "looks",
240
+ },
241
+ {
242
+ selector: "comeToFront",
243
+ spec: "go to front",
244
+ inputs: [],
245
+ shape: "stack",
246
+ category: "looks",
247
+ },
248
+ {
249
+ id: "LOOKS_GOTOFRONTBACK",
250
+ spec: "go to %1 layer",
251
+ inputs: ["%m"],
252
+ shape: "stack",
253
+ category: "looks",
254
+ },
255
+ {
256
+ selector: "goBackByLayers:",
257
+ spec: "go back %1 layers",
258
+ inputs: ["%n"],
259
+ shape: "stack",
260
+ category: "looks",
261
+ },
262
+ {
263
+ id: "LOOKS_GOFORWARDBACKWARDLAYERS",
264
+ spec: "go %1 %2 layers",
265
+ inputs: ["%m", "%n"],
266
+ shape: "stack",
267
+ category: "looks",
268
+ },
269
+ {
270
+ id: "SOUND_PLAY",
271
+ selector: "playSound:",
272
+ spec: "start sound %1",
273
+ inputs: ["%m.sound"],
274
+ shape: "stack",
275
+ category: "sound",
276
+ },
277
+ {
278
+ id: "SOUND_CHANGEEFFECTBY",
279
+ spec: "change %1 effect by %2",
280
+ inputs: ["%m", "%n"],
281
+ shape: "stack",
282
+ category: "sound",
283
+ },
284
+ {
285
+ id: "SOUND_SETEFFECTO", // sic
286
+ spec: "set %1 effect to %2",
287
+ inputs: ["%m", "%n"],
288
+ shape: "stack",
289
+ category: "sound",
290
+ },
291
+ {
292
+ id: "SOUND_CLEAREFFECTS",
293
+ spec: "clear sound effects",
294
+ inputs: [],
295
+ shape: "stack",
296
+ category: "sound",
297
+ },
298
+ {
299
+ id: "SOUND_PLAYUNTILDONE",
300
+ selector: "doPlaySoundAndWait",
301
+ spec: "play sound %1 until done",
302
+ inputs: ["%m.sound"],
303
+ shape: "stack",
304
+ category: "sound",
305
+ },
306
+ {
307
+ id: "SOUND_STOPALLSOUNDS",
308
+ selector: "stopAllSounds",
309
+ spec: "stop all sounds",
310
+ inputs: [],
311
+ shape: "stack",
312
+ category: "sound",
313
+ },
314
+ {
315
+ id: "music.playDrumForBeats",
316
+ selector: "playDrum",
317
+ spec: "play drum %1 for %2 beats",
318
+ inputs: ["%d.drum", "%n"],
319
+ shape: "stack",
320
+ category: "music",
321
+ },
322
+ {
323
+ id: "music.restForBeats",
324
+ selector: "rest:elapsed:from:",
325
+ spec: "rest for %1 beats",
326
+ inputs: ["%n"],
327
+ shape: "stack",
328
+ category: "music",
329
+ },
330
+ {
331
+ id: "music.playNoteForBeats",
332
+ selector: "noteOn:duration:elapsed:from:",
333
+ spec: "play note %1 for %2 beats",
334
+ inputs: ["%d.note", "%n"],
335
+ shape: "stack",
336
+ category: "music",
337
+ },
338
+ {
339
+ id: "music.setInstrument",
340
+ selector: "instrument:",
341
+ spec: "set instrument to %1",
342
+ inputs: ["%d.instrument"],
343
+ shape: "stack",
344
+ category: "music",
345
+ },
346
+ {
347
+ id: "SOUND_CHANGEVOLUMEBY",
348
+ selector: "changeVolumeBy:",
349
+ spec: "change volume by %1",
350
+ inputs: ["%n"],
351
+ shape: "stack",
352
+ category: "sound",
353
+ },
354
+ {
355
+ id: "SOUND_SETVOLUMETO",
356
+ selector: "setVolumeTo:",
357
+ spec: "set volume to %1%",
358
+ inputs: ["%n"],
359
+ shape: "stack",
360
+ category: "sound",
361
+ },
362
+ {
363
+ id: "music.changeTempo",
364
+ selector: "changeTempoBy:",
365
+ spec: "change tempo by %1",
366
+ inputs: ["%n"],
367
+ shape: "stack",
368
+ category: "music",
369
+ },
370
+ {
371
+ selector: "setTempoTo:",
372
+ spec: "set tempo to %1 bpm",
373
+ inputs: ["%n"],
374
+ shape: "stack",
375
+ category: "sound",
376
+ },
377
+ {
378
+ id: "music.setTempo",
379
+ selector: "setTempoTo:",
380
+ spec: "set tempo to %1",
381
+ inputs: ["%n"],
382
+ shape: "stack",
383
+ category: "music",
384
+ },
385
+ {
386
+ id: "pen.clear",
387
+ selector: "clearPenTrails",
388
+ spec: "erase all",
389
+ inputs: [],
390
+ shape: "stack",
391
+ category: "pen",
392
+ },
393
+ {
394
+ id: "pen.stamp",
395
+ selector: "stampCostume",
396
+ spec: "stamp",
397
+ inputs: [],
398
+ shape: "stack",
399
+ category: "pen",
400
+ },
401
+ {
402
+ id: "pen.penDown",
403
+ selector: "putPenDown",
404
+ spec: "pen down",
405
+ inputs: [],
406
+ shape: "stack",
407
+ category: "pen",
408
+ },
409
+ {
410
+ id: "pen.penUp",
411
+ selector: "putPenUp",
412
+ spec: "pen up",
413
+ inputs: [],
414
+ shape: "stack",
415
+ category: "pen",
416
+ },
417
+ {
418
+ id: "pen.setColor",
419
+ selector: "penColor:",
420
+ spec: "set pen color to %1",
421
+ inputs: ["%c"],
422
+ shape: "stack",
423
+ category: "pen",
424
+ },
425
+ {
426
+ id: "pen.changeHue",
427
+ selector: "changePenHueBy:",
428
+ spec: "change pen color by %1",
429
+ inputs: ["%n"],
430
+ shape: "stack",
431
+ category: "pen",
432
+ },
433
+ {
434
+ id: "pen.setColorParam",
435
+ spec: "set pen %1 to %2",
436
+ inputs: ["%m.color", "%c"],
437
+ shape: "stack",
438
+ category: "pen",
439
+ },
440
+ {
441
+ id: "pen.changeColorParam",
442
+ spec: "change pen %1 by %2",
443
+ inputs: ["%m.color", "%n"],
444
+ shape: "stack",
445
+ category: "pen",
446
+ },
447
+ {
448
+ id: "pen.setHue",
449
+ selector: "setPenHueTo:",
450
+ spec: "set pen color to %1",
451
+ inputs: ["%n"],
452
+ shape: "stack",
453
+ category: "pen",
454
+ },
455
+ {
456
+ id: "pen.changeShade",
457
+ selector: "changePenShadeBy:",
458
+ spec: "change pen shade by %1",
459
+ inputs: ["%n"],
460
+ shape: "stack",
461
+ category: "pen",
462
+ },
463
+ {
464
+ id: "pen.setShade",
465
+ selector: "setPenShadeTo:",
466
+ spec: "set pen shade to %1",
467
+ inputs: ["%n"],
468
+ shape: "stack",
469
+ category: "pen",
470
+ },
471
+ {
472
+ id: "pen.changeSize",
473
+ selector: "changePenSizeBy:",
474
+ spec: "change pen size by %1",
475
+ inputs: ["%n"],
476
+ shape: "stack",
477
+ category: "pen",
478
+ },
479
+ {
480
+ id: "pen.setSize",
481
+ selector: "penSize:",
482
+ spec: "set pen size to %1",
483
+ inputs: ["%n"],
484
+ shape: "stack",
485
+ category: "pen",
486
+ },
487
+ {
488
+ id: "EVENT_WHENFLAGCLICKED",
489
+ selector: "whenGreenFlag",
490
+ spec: "when @greenFlag clicked",
491
+ inputs: [],
492
+ shape: "hat",
493
+ category: "events",
494
+ },
495
+ {
496
+ id: "EVENT_WHENKEYPRESSED",
497
+ selector: "whenKeyPressed",
498
+ spec: "when %1 key pressed",
499
+ inputs: ["%m.key"],
500
+ shape: "hat",
501
+ category: "events",
502
+ },
503
+ {
504
+ id: "EVENT_WHENTHISSPRITECLICKED",
505
+ selector: "whenClicked",
506
+ spec: "when this sprite clicked",
507
+ inputs: [],
508
+ shape: "hat",
509
+ category: "events",
510
+ },
511
+ {
512
+ id: "EVENT_WHENSTAGECLICKED",
513
+ spec: "when stage clicked",
514
+ inputs: [],
515
+ shape: "hat",
516
+ category: "events",
517
+ },
518
+ {
519
+ id: "EVENT_WHENBACKDROPSWITCHESTO",
520
+ selector: "whenSceneStarts",
521
+ spec: "when backdrop switches to %1",
522
+ inputs: ["%m.backdrop"],
523
+ shape: "hat",
524
+ category: "events",
525
+ },
526
+ {
527
+ id: "EVENT_WHENGREATERTHAN",
528
+ selector: "whenSensorGreaterThan",
529
+ spec: "when %1 > %2",
530
+ inputs: ["%m.triggerSensor", "%n"],
531
+ shape: "hat",
532
+ category: "events",
533
+ },
534
+ {
535
+ id: "EVENT_WHENBROADCASTRECEIVED",
536
+ selector: "whenIReceive",
537
+ spec: "when I receive %1",
538
+ inputs: ["%m.broadcast"],
539
+ shape: "hat",
540
+ category: "events",
541
+ },
542
+ {
543
+ id: "EVENT_BROADCAST",
544
+ selector: "broadcast:",
545
+ spec: "broadcast %1",
546
+ inputs: ["%m.broadcast"],
547
+ shape: "stack",
548
+ category: "events",
549
+ },
550
+ {
551
+ id: "EVENT_BROADCASTANDWAIT",
552
+ selector: "doBroadcastAndWait",
553
+ spec: "broadcast %1 and wait",
554
+ inputs: ["%m.broadcast"],
555
+ shape: "stack",
556
+ category: "events",
557
+ },
558
+ {
559
+ id: "CONTROL_WAIT",
560
+ selector: "wait:elapsed:from:",
561
+ spec: "wait %1 seconds",
562
+ inputs: ["%n"],
563
+ shape: "stack",
564
+ category: "control",
565
+ },
566
+ {
567
+ id: "CONTROL_REPEAT",
568
+ selector: "doRepeat",
569
+ spec: "repeat %1",
570
+ inputs: ["%n"],
571
+ shape: "c-block",
572
+ category: "control",
573
+ hasLoopArrow: true,
574
+ },
575
+ {
576
+ id: "CONTROL_FOREVER",
577
+ selector: "doForever",
578
+ spec: "forever",
579
+ inputs: [],
580
+ shape: "c-block cap",
581
+ category: "control",
582
+ hasLoopArrow: true,
583
+ },
584
+ {
585
+ id: "CONTROL_IF",
586
+ selector: "doIf",
587
+ spec: "if %1 then",
588
+ inputs: ["%b"],
589
+ shape: "c-block",
590
+ category: "control",
591
+ },
592
+ {
593
+ id: "CONTROL_WAITUNTIL",
594
+ selector: "doWaitUntil",
595
+ spec: "wait until %1",
596
+ inputs: ["%b"],
597
+ shape: "stack",
598
+ category: "control",
599
+ },
600
+ {
601
+ id: "CONTROL_REPEATUNTIL",
602
+ selector: "doUntil",
603
+ spec: "repeat until %1",
604
+ inputs: ["%b"],
605
+ shape: "c-block",
606
+ category: "control",
607
+ hasLoopArrow: true,
608
+ },
609
+ {
610
+ id: "CONTROL_STOP",
611
+ selector: "stopScripts",
612
+ spec: "stop %1",
613
+ inputs: ["%m.stop"],
614
+ shape: "cap",
615
+ category: "control",
616
+ },
617
+ {
618
+ id: "CONTROL_STARTASCLONE",
619
+ selector: "whenCloned",
620
+ spec: "when I start as a clone",
621
+ inputs: [],
622
+ shape: "hat",
623
+ category: "control",
624
+ },
625
+ {
626
+ id: "CONTROL_CREATECLONEOF",
627
+ selector: "createCloneOf",
628
+ spec: "create clone of %1",
629
+ inputs: ["%m.spriteOnly"],
630
+ shape: "stack",
631
+ category: "control",
632
+ },
633
+ {
634
+ id: "CONTROL_DELETETHISCLONE",
635
+ selector: "deleteClone",
636
+ spec: "delete this clone",
637
+ inputs: [],
638
+ shape: "cap",
639
+ category: "control",
640
+ },
641
+ {
642
+ id: "SENSING_ASKANDWAIT",
643
+ selector: "doAsk",
644
+ spec: "ask %1 and wait",
645
+ inputs: ["%s"],
646
+ shape: "stack",
647
+ category: "sensing",
648
+ },
649
+ {
650
+ id: "videoSensing.videoToggle",
651
+ selector: "setVideoState",
652
+ spec: "turn video %1",
653
+ inputs: ["%m.videoState"],
654
+ shape: "stack",
655
+ category: "video",
656
+ },
657
+ {
658
+ id: "videoSensing.setVideoTransparency",
659
+ selector: "setVideoTransparency",
660
+ spec: "set video transparency to %1%",
661
+ inputs: ["%n"],
662
+ shape: "stack",
663
+ category: "video",
664
+ },
665
+ {
666
+ id: "videoSensing.whenMotionGreaterThan",
667
+ spec: "when video motion > %1",
668
+ inputs: ["%n"],
669
+ shape: "hat",
670
+ category: "video",
671
+ },
672
+ {
673
+ id: "SENSING_RESETTIMER",
674
+ selector: "timerReset",
675
+ spec: "reset timer",
676
+ inputs: [],
677
+ shape: "stack",
678
+ category: "sensing",
679
+ },
680
+ {
681
+ id: "DATA_SETVARIABLETO",
682
+ selector: "setVar:to:",
683
+ spec: "set %1 to %2",
684
+ inputs: ["%m.var", "%s"],
685
+ shape: "stack",
686
+ category: "variables",
687
+ },
688
+ {
689
+ id: "DATA_CHANGEVARIABLEBY",
690
+ selector: "changeVar:by:",
691
+ spec: "change %1 by %2",
692
+ inputs: ["%m.var", "%n"],
693
+ shape: "stack",
694
+ category: "variables",
695
+ },
696
+ {
697
+ id: "DATA_SHOWVARIABLE",
698
+ selector: "showVariable:",
699
+ spec: "show variable %1",
700
+ inputs: ["%m.var"],
701
+ shape: "stack",
702
+ category: "variables",
703
+ },
704
+ {
705
+ id: "DATA_HIDEVARIABLE",
706
+ selector: "hideVariable:",
707
+ spec: "hide variable %1",
708
+ inputs: ["%m.var"],
709
+ shape: "stack",
710
+ category: "variables",
711
+ },
712
+ {
713
+ id: "DATA_ADDTOLIST",
714
+ selector: "append:toList:",
715
+ spec: "add %1 to %2",
716
+ inputs: ["%s", "%m.list"],
717
+ shape: "stack",
718
+ category: "list",
719
+ },
720
+ {
721
+ id: "DATA_DELETEOFLIST",
722
+ selector: "deleteLine:ofList:",
723
+ spec: "delete %1 of %2",
724
+ inputs: ["%d.listDeleteItem", "%m.list"],
725
+ shape: "stack",
726
+ category: "list",
727
+ },
728
+ {
729
+ id: "DATA_DELETEALLOFLIST",
730
+ spec: "delete all of %1",
731
+ inputs: ["%m.list"],
732
+ shape: "stack",
733
+ category: "list",
734
+ },
735
+ {
736
+ id: "MOTION_IFONEDGEBOUNCE",
737
+ selector: "bounceOffEdge",
738
+ spec: "if on edge, bounce",
739
+ inputs: [],
740
+ shape: "stack",
741
+ category: "motion",
742
+ },
743
+ {
744
+ id: "DATA_INSERTATLIST",
745
+ selector: "insert:at:ofList:",
746
+ spec: "insert %1 at %2 of %3",
747
+ inputs: ["%s", "%d.listItem", "%m.list"],
748
+ shape: "stack",
749
+ category: "list",
750
+ },
751
+ {
752
+ id: "DATA_REPLACEITEMOFLIST",
753
+ selector: "setLine:ofList:to:",
754
+ spec: "replace item %1 of %2 with %3",
755
+ inputs: ["%d.listItem", "%m.list", "%s"],
756
+ shape: "stack",
757
+ category: "list",
758
+ },
759
+ {
760
+ id: "DATA_SHOWLIST",
761
+ selector: "showList:",
762
+ spec: "show list %1",
763
+ inputs: ["%m.list"],
764
+ shape: "stack",
765
+ category: "list",
766
+ },
767
+ {
768
+ id: "DATA_HIDELIST",
769
+ selector: "hideList:",
770
+ spec: "hide list %1",
771
+ inputs: ["%m.list"],
772
+ shape: "stack",
773
+ category: "list",
774
+ },
775
+ {
776
+ id: "SENSING_OF_XPOSITION",
777
+ selector: "xpos",
778
+ spec: "x position",
779
+ inputs: [],
780
+ shape: "reporter",
781
+ category: "motion",
782
+ },
783
+ {
784
+ id: "SENSING_OF_YPOSITION",
785
+ selector: "ypos",
786
+ spec: "y position",
787
+ inputs: [],
788
+ shape: "reporter",
789
+ category: "motion",
790
+ },
791
+ {
792
+ id: "SENSING_OF_DIRECTION",
793
+ selector: "heading",
794
+ spec: "direction",
795
+ inputs: [],
796
+ shape: "reporter",
797
+ category: "motion",
798
+ },
799
+ {
800
+ id: "SENSING_OF_COSTUMENUMBER",
801
+ selector: "costumeIndex",
802
+ spec: "costume #",
803
+ inputs: [],
804
+ shape: "reporter",
805
+ category: "looks",
806
+ },
807
+ {
808
+ id: "LOOKS_COSTUMENUMBERNAME",
809
+ selector: "LOOKS_COSTUMENUMBERNAME",
810
+ spec: "costume %1",
811
+ inputs: ["%m"],
812
+ shape: "reporter",
813
+ category: "looks",
814
+ },
815
+ {
816
+ id: "SENSING_OF_SIZE",
817
+ selector: "scale",
818
+ spec: "size",
819
+ inputs: [],
820
+ shape: "reporter",
821
+ category: "looks",
822
+ },
823
+ {
824
+ id: "SENSING_OF_BACKDROPNAME",
825
+ selector: "sceneName",
826
+ spec: "backdrop name",
827
+ inputs: [],
828
+ shape: "reporter",
829
+ category: "looks",
830
+ },
831
+ {
832
+ id: "LOOKS_BACKDROPNUMBERNAME",
833
+ spec: "backdrop %1",
834
+ inputs: ["%m"],
835
+ shape: "reporter",
836
+ category: "looks",
837
+ },
838
+ {
839
+ id: "SENSING_OF_BACKDROPNUMBER",
840
+ selector: "backgroundIndex",
841
+ spec: "backdrop #",
842
+ inputs: [],
843
+ shape: "reporter",
844
+ category: "looks",
845
+ },
846
+ {
847
+ id: "SOUND_VOLUME",
848
+ selector: "volume",
849
+ spec: "volume",
850
+ inputs: [],
851
+ shape: "reporter",
852
+ category: "sound",
853
+ },
854
+ {
855
+ id: "music.getTempo",
856
+ selector: "tempo",
857
+ spec: "tempo",
858
+ inputs: [],
859
+ shape: "reporter",
860
+ category: "music",
861
+ },
862
+ {
863
+ id: "SENSING_TOUCHINGOBJECT",
864
+ selector: "touching:",
865
+ spec: "touching %1?",
866
+ inputs: ["%m.touching"],
867
+ shape: "boolean",
868
+ category: "sensing",
869
+ },
870
+ {
871
+ id: "SENSING_TOUCHINGCOLOR",
872
+ selector: "touchingColor:",
873
+ spec: "touching color %1?",
874
+ inputs: ["%c"],
875
+ shape: "boolean",
876
+ category: "sensing",
877
+ },
878
+ {
879
+ id: "SENSING_COLORISTOUCHINGCOLOR",
880
+ selector: "color:sees:",
881
+ spec: "color %1 is touching %2?",
882
+ inputs: ["%c", "%c"],
883
+ shape: "boolean",
884
+ category: "sensing",
885
+ },
886
+ {
887
+ id: "SENSING_DISTANCETO",
888
+ selector: "distanceTo:",
889
+ spec: "distance to %1",
890
+ inputs: ["%m.spriteOrMouse"],
891
+ shape: "reporter",
892
+ category: "sensing",
893
+ },
894
+ {
895
+ id: "SENSING_ANSWER",
896
+ selector: "answer",
897
+ spec: "answer",
898
+ inputs: [],
899
+ shape: "reporter",
900
+ category: "sensing",
901
+ },
902
+ {
903
+ id: "SENSING_KEYPRESSED",
904
+ selector: "keyPressed:",
905
+ spec: "key %1 pressed?",
906
+ inputs: ["%m.key"],
907
+ shape: "boolean",
908
+ category: "sensing",
909
+ },
910
+ {
911
+ id: "SENSING_MOUSEDOWN",
912
+ selector: "mousePressed",
913
+ spec: "mouse down?",
914
+ inputs: [],
915
+ shape: "boolean",
916
+ category: "sensing",
917
+ },
918
+ {
919
+ id: "SENSING_MOUSEX",
920
+ selector: "mouseX",
921
+ spec: "mouse x",
922
+ inputs: [],
923
+ shape: "reporter",
924
+ category: "sensing",
925
+ },
926
+ {
927
+ id: "SENSING_MOUSEY",
928
+ selector: "mouseY",
929
+ spec: "mouse y",
930
+ inputs: [],
931
+ shape: "reporter",
932
+ category: "sensing",
933
+ },
934
+ {
935
+ id: "SENSING_SETDRAGMODE",
936
+ spec: "set drag mode %1",
937
+ inputs: ["%m"],
938
+ shape: "stack",
939
+ category: "sensing",
940
+ },
941
+ {
942
+ id: "SENSING_LOUDNESS",
943
+ selector: "soundLevel",
944
+ spec: "loudness",
945
+ inputs: [],
946
+ shape: "reporter",
947
+ category: "sensing",
948
+ },
949
+ {
950
+ id: "videoSensing.videoOn",
951
+ selector: "senseVideoMotion",
952
+ spec: "video %1 on %2",
953
+ inputs: ["%m.videoMotionType", "%m.stageOrThis"],
954
+ shape: "reporter",
955
+ category: "video",
956
+ },
957
+ {
958
+ id: "SENSING_TIMER",
959
+ selector: "timer",
960
+ spec: "timer",
961
+ inputs: [],
962
+ shape: "reporter",
963
+ category: "sensing",
964
+ },
965
+ {
966
+ id: "SENSING_OF",
967
+ selector: "getAttribute:of:",
968
+ spec: "%1 of %2",
969
+ inputs: ["%m.attribute", "%m.spriteOrStage"],
970
+ shape: "reporter",
971
+ category: "sensing",
972
+ },
973
+ {
974
+ id: "SENSING_CURRENT",
975
+ selector: "timeAndDate",
976
+ spec: "current %1",
977
+ inputs: ["%m.timeAndDate"],
978
+ shape: "reporter",
979
+ category: "sensing",
980
+ },
981
+ {
982
+ id: "SENSING_DAYSSINCE2000",
983
+ selector: "timestamp",
984
+ spec: "days since 2000",
985
+ inputs: [],
986
+ shape: "reporter",
987
+ category: "sensing",
988
+ },
989
+ {
990
+ id: "SENSING_USERNAME",
991
+ selector: "getUserName",
992
+ spec: "username",
993
+ inputs: [],
994
+ shape: "reporter",
995
+ category: "sensing",
996
+ },
997
+ {
998
+ id: "OPERATORS_ADD",
999
+ selector: "+",
1000
+ spec: "%1 + %2",
1001
+ inputs: ["%n", "%n"],
1002
+ shape: "reporter",
1003
+ category: "operators",
1004
+ },
1005
+ {
1006
+ id: "OPERATORS_SUBTRACT",
1007
+ selector: "-",
1008
+ spec: "%1 - %2",
1009
+ inputs: ["%n", "%n"],
1010
+ shape: "reporter",
1011
+ category: "operators",
1012
+ },
1013
+ {
1014
+ id: "OPERATORS_MULTIPLY",
1015
+ selector: "*",
1016
+ spec: "%1 * %2",
1017
+ inputs: ["%n", "%n"],
1018
+ shape: "reporter",
1019
+ category: "operators",
1020
+ },
1021
+ {
1022
+ id: "OPERATORS_DIVIDE",
1023
+ selector: "/",
1024
+ spec: "%1 / %2",
1025
+ inputs: ["%n", "%n"],
1026
+ shape: "reporter",
1027
+ category: "operators",
1028
+ },
1029
+ {
1030
+ id: "OPERATORS_RANDOM",
1031
+ selector: "randomFrom:to:",
1032
+ spec: "pick random %1 to %2",
1033
+ inputs: ["%n", "%n"],
1034
+ shape: "reporter",
1035
+ category: "operators",
1036
+ },
1037
+ {
1038
+ id: "OPERATORS_LT",
1039
+ selector: "<",
1040
+ spec: "%1 < %2",
1041
+ inputs: ["%s", "%s"],
1042
+ shape: "boolean",
1043
+ category: "operators",
1044
+ },
1045
+ {
1046
+ id: "OPERATORS_EQUALS",
1047
+ selector: "=",
1048
+ spec: "%1 = %2",
1049
+ inputs: ["%s", "%s"],
1050
+ shape: "boolean",
1051
+ category: "operators",
1052
+ },
1053
+ {
1054
+ id: "OPERATORS_GT",
1055
+ selector: ">",
1056
+ spec: "%1 > %2",
1057
+ inputs: ["%s", "%s"],
1058
+ shape: "boolean",
1059
+ category: "operators",
1060
+ },
1061
+ {
1062
+ id: "OPERATORS_AND",
1063
+ selector: "&",
1064
+ spec: "%1 and %2",
1065
+ inputs: ["%b", "%b"],
1066
+ shape: "boolean",
1067
+ category: "operators",
1068
+ },
1069
+ {
1070
+ id: "OPERATORS_OR",
1071
+ selector: "|",
1072
+ spec: "%1 or %2",
1073
+ inputs: ["%b", "%b"],
1074
+ shape: "boolean",
1075
+ category: "operators",
1076
+ },
1077
+ {
1078
+ id: "OPERATORS_NOT",
1079
+ selector: "not",
1080
+ spec: "not %1",
1081
+ inputs: ["%b"],
1082
+ shape: "boolean",
1083
+ category: "operators",
1084
+ },
1085
+ {
1086
+ id: "OPERATORS_JOIN",
1087
+ selector: "concatenate:with:",
1088
+ spec: "join %1 %2",
1089
+ inputs: ["%s", "%s"],
1090
+ shape: "reporter",
1091
+ category: "operators",
1092
+ },
1093
+ {
1094
+ id: "OPERATORS_LETTEROF",
1095
+ selector: "letter:of:",
1096
+ spec: "letter %1 of %2",
1097
+ inputs: ["%n", "%s"],
1098
+ shape: "reporter",
1099
+ category: "operators",
1100
+ },
1101
+ {
1102
+ id: "OPERATORS_LENGTH",
1103
+ selector: "stringLength:",
1104
+ spec: "length of %1",
1105
+ inputs: ["%s"],
1106
+ shape: "reporter",
1107
+ category: "operators",
1108
+ },
1109
+ {
1110
+ id: "OPERATORS_MOD",
1111
+ selector: "%",
1112
+ spec: "%1 mod %2",
1113
+ inputs: ["%n", "%n"],
1114
+ shape: "reporter",
1115
+ category: "operators",
1116
+ },
1117
+ {
1118
+ id: "OPERATORS_ROUND",
1119
+ selector: "rounded",
1120
+ spec: "round %1",
1121
+ inputs: ["%n"],
1122
+ shape: "reporter",
1123
+ category: "operators",
1124
+ },
1125
+ {
1126
+ id: "OPERATORS_MATHOP",
1127
+ selector: "computeFunction:of:",
1128
+ spec: "%1 of %2",
1129
+ inputs: ["%m.mathOp", "%n"],
1130
+ shape: "reporter",
1131
+ category: "operators",
1132
+ },
1133
+ {
1134
+ id: "OPERATORS_CONTAINS",
1135
+ spec: "%1 contains %2?",
1136
+ inputs: ["%s", "%s"],
1137
+ shape: "boolean",
1138
+ category: "operators",
1139
+ },
1140
+ {
1141
+ id: "DATA_ITEMOFLIST",
1142
+ selector: "getLine:ofList:",
1143
+ spec: "item %1 of %2",
1144
+ inputs: ["%d.listItem", "%m.list"],
1145
+ shape: "reporter",
1146
+ category: "list",
1147
+ },
1148
+ {
1149
+ id: "DATA_ITEMNUMOFLIST",
1150
+ spec: "item # of %1 in %2",
1151
+ inputs: ["%s", "%m.list"],
1152
+ shape: "reporter",
1153
+ category: "list",
1154
+ },
1155
+ {
1156
+ id: "DATA_LENGTHOFLIST",
1157
+ selector: "lineCountOfList:",
1158
+ spec: "length of %1",
1159
+ inputs: ["%m.list"],
1160
+ shape: "reporter",
1161
+ category: "list",
1162
+ },
1163
+ {
1164
+ id: "DATA_LISTCONTAINSITEM",
1165
+ selector: "list:contains:",
1166
+ spec: "%1 contains %2?",
1167
+ inputs: ["%m.list", "%s"],
1168
+ shape: "boolean",
1169
+ category: "list",
1170
+ },
1171
+ {
1172
+ id: "CONTROL_ELSE",
1173
+ spec: "else",
1174
+ inputs: [],
1175
+ shape: "celse",
1176
+ category: "control",
1177
+ },
1178
+ {
1179
+ id: "scratchblocks:end",
1180
+ spec: "end",
1181
+ inputs: [],
1182
+ shape: "cend",
1183
+ category: "control",
1184
+ },
1185
+ {
1186
+ id: "scratchblocks:ellipsis",
1187
+ spec: ". . .",
1188
+ inputs: [],
1189
+ shape: "stack",
1190
+ category: "grey",
1191
+ },
1192
+ {
1193
+ id: "scratchblocks:addInput",
1194
+ spec: "%1 @addInput",
1195
+ inputs: ["%n"],
1196
+ shape: "ring",
1197
+ category: "grey",
1198
+ },
1199
+ {
1200
+ id: "SENSING_USERID",
1201
+ spec: "user id",
1202
+ inputs: [],
1203
+ shape: "reporter",
1204
+ category: "obsolete",
1205
+ },
1206
+ {
1207
+ selector: "doIf",
1208
+ spec: "if %1",
1209
+ inputs: ["%b"],
1210
+ shape: "c-block",
1211
+ category: "obsolete",
1212
+ },
1213
+ {
1214
+ selector: "doForeverIf",
1215
+ spec: "forever if %1",
1216
+ inputs: ["%b"],
1217
+ shape: "c-block cap",
1218
+ category: "obsolete",
1219
+ },
1220
+ {
1221
+ selector: "doReturn",
1222
+ spec: "stop script",
1223
+ inputs: [],
1224
+ shape: "cap",
1225
+ category: "obsolete",
1226
+ },
1227
+ {
1228
+ selector: "stopAll",
1229
+ spec: "stop all",
1230
+ inputs: [],
1231
+ shape: "cap",
1232
+ category: "obsolete",
1233
+ },
1234
+ {
1235
+ selector: "lookLike:",
1236
+ spec: "switch to costume %1",
1237
+ inputs: ["%m.costume"],
1238
+ shape: "stack",
1239
+ category: "obsolete",
1240
+ },
1241
+ {
1242
+ selector: "nextScene",
1243
+ spec: "next background",
1244
+ inputs: [],
1245
+ shape: "stack",
1246
+ category: "obsolete",
1247
+ },
1248
+ {
1249
+ selector: "startScene",
1250
+ spec: "switch to background %1",
1251
+ inputs: ["%m.backdrop"],
1252
+ shape: "stack",
1253
+ category: "obsolete",
1254
+ },
1255
+ {
1256
+ selector: "backgroundIndex",
1257
+ spec: "background #",
1258
+ inputs: [],
1259
+ shape: "reporter",
1260
+ category: "obsolete",
1261
+ },
1262
+ {
1263
+ id: "SENSING_LOUD",
1264
+ selector: "isLoud",
1265
+ spec: "loud?",
1266
+ inputs: [],
1267
+ shape: "boolean",
1268
+ category: "obsolete",
1269
+ },
1270
+ // TODO define
1271
+ {
1272
+ id: "faceSensing.goToPart",
1273
+ spec: "go to %1",
1274
+ inputs: ["%m"],
1275
+ shape: "stack",
1276
+ category: "faceSensing",
1277
+ },
1278
+ {
1279
+ id: "faceSensing.pointInFaceTiltDirection",
1280
+ spec: "point in direction of face tilt",
1281
+ inputs: [],
1282
+ shape: "stack",
1283
+ category: "faceSensing",
1284
+ },
1285
+ {
1286
+ id: "faceSensing.setSizeToFaceSize",
1287
+ spec: "set size to face size",
1288
+ inputs: [],
1289
+ shape: "stack",
1290
+ category: "faceSensing",
1291
+ },
1292
+ {
1293
+ id: "faceSensing.whenTilted",
1294
+ spec: "when face tilts %1",
1295
+ inputs: ["%m"],
1296
+ shape: "hat",
1297
+ category: "faceSensing",
1298
+ },
1299
+ {
1300
+ id: "faceSensing.whenSpriteTouchesPart",
1301
+ spec: "when this sprite touches a %1",
1302
+ inputs: ["%m"],
1303
+ shape: "hat",
1304
+ category: "faceSensing",
1305
+ },
1306
+ {
1307
+ id: "faceSensing.whenFaceDetected",
1308
+ spec: "when a face is detected",
1309
+ inputs: [],
1310
+ shape: "hat",
1311
+ category: "faceSensing",
1312
+ },
1313
+ {
1314
+ id: "faceSensing.faceDetected",
1315
+ spec: "a face is detected?",
1316
+ inputs: [],
1317
+ shape: "boolean",
1318
+ category: "faceSensing",
1319
+ },
1320
+ {
1321
+ id: "faceSensing.faceTilt",
1322
+ spec: "face tilt",
1323
+ inputs: [],
1324
+ shape: "reporter",
1325
+ category: "faceSensing",
1326
+ },
1327
+ {
1328
+ id: "faceSensing.faceSize",
1329
+ spec: "face size",
1330
+ inputs: [],
1331
+ shape: "reporter",
1332
+ category: "faceSensing",
1333
+ },
1334
+ {
1335
+ id: "text2speech.speakAndWaitBlock",
1336
+ spec: "speak %1",
1337
+ inputs: ["%s"],
1338
+ shape: "stack",
1339
+ category: "tts",
1340
+ },
1341
+ {
1342
+ id: "text2speech.setVoiceBlock",
1343
+ spec: "set voice to %1",
1344
+ inputs: ["%m"],
1345
+ shape: "stack",
1346
+ category: "tts",
1347
+ },
1348
+ {
1349
+ id: "text2speech.setLanguageBlock",
1350
+ spec: "set language to %1",
1351
+ inputs: ["%m"],
1352
+ shape: "stack",
1353
+ category: "tts",
1354
+ },
1355
+ {
1356
+ id: "translate.translateBlock",
1357
+ spec: "translate %1 to %2",
1358
+ inputs: ["%s", "%m"],
1359
+ shape: "reporter",
1360
+ category: "translate",
1361
+ },
1362
+ {
1363
+ id: "translate.viewerLanguage",
1364
+ spec: "language",
1365
+ shape: "reporter",
1366
+ category: "translate",
1367
+ },
1368
+ {
1369
+ id: "makeymakey.whenKeyPressed",
1370
+ spec: "when %1 key pressed",
1371
+ inputs: ["%m"], // this is not %m.key
1372
+ shape: "hat",
1373
+ category: "makeymakey",
1374
+ },
1375
+ {
1376
+ id: "makeymakey.whenKeysPressedInOrder",
1377
+ spec: "when %1 pressed in order",
1378
+ inputs: ["%m"],
1379
+ shape: "hat",
1380
+ category: "makeymakey",
1381
+ },
1382
+ {
1383
+ id: "microbit.whenButtonPressed",
1384
+ spec: "when %1 button pressed",
1385
+ inputs: ["%m"],
1386
+ shape: "hat",
1387
+ category: "microbit",
1388
+ },
1389
+ {
1390
+ id: "microbit.isButtonPressed",
1391
+ spec: "%1 button pressed?",
1392
+ inputs: ["%m"],
1393
+ shape: "boolean",
1394
+ category: "microbit",
1395
+ },
1396
+ {
1397
+ id: "microbit.whenGesture",
1398
+ spec: "when %1",
1399
+ inputs: ["%m"],
1400
+ shape: "hat",
1401
+ category: "microbit",
1402
+ },
1403
+ {
1404
+ id: "microbit.displaySymbol",
1405
+ spec: "display %1",
1406
+ inputs: ["%m"],
1407
+ shape: "stack",
1408
+ category: "microbit",
1409
+ },
1410
+ {
1411
+ id: "microbit.displayText",
1412
+ spec: "display text %1",
1413
+ inputs: ["%s"],
1414
+ shape: "stack",
1415
+ category: "microbit",
1416
+ },
1417
+ {
1418
+ id: "microbit.clearDisplay",
1419
+ spec: "clear display",
1420
+ shape: "stack",
1421
+ category: "microbit",
1422
+ },
1423
+ {
1424
+ id: "microbit.whenTilted",
1425
+ spec: "when tilted %1",
1426
+ inputs: ["%m"],
1427
+ shape: "hat",
1428
+ category: "microbit",
1429
+ },
1430
+ {
1431
+ id: "microbit.isTilted",
1432
+ spec: "tilted %1?",
1433
+ inputs: ["%m"],
1434
+ shape: "boolean",
1435
+ category: "microbit",
1436
+ },
1437
+ {
1438
+ id: "microbit.tiltAngle",
1439
+ spec: "tilt angle %1",
1440
+ inputs: ["%m"],
1441
+ shape: "reporter",
1442
+ category: "microbit",
1443
+ },
1444
+ {
1445
+ id: "microbit.whenPinConnected",
1446
+ spec: "when pin %1 connected",
1447
+ inputs: ["%m"],
1448
+ shape: "hat",
1449
+ category: "microbit",
1450
+ },
1451
+ {
1452
+ id: "ev3.motorTurnClockwise",
1453
+ spec: "motor %1 turn this way for %2 seconds",
1454
+ inputs: ["%m", "%n"],
1455
+ shape: "stack",
1456
+ category: "ev3",
1457
+ },
1458
+ {
1459
+ id: "ev3.motorTurnCounterClockwise",
1460
+ spec: "motor %1 turn that way for %2 seconds",
1461
+ inputs: ["%m", "%n"],
1462
+ shape: "stack",
1463
+ category: "ev3",
1464
+ },
1465
+ {
1466
+ id: "ev3.motorSetPower",
1467
+ spec: "motor %1 set power %2%",
1468
+ inputs: ["%m", "%n"],
1469
+ shape: "stack",
1470
+ category: "ev3",
1471
+ },
1472
+ {
1473
+ id: "ev3.getMotorPosition",
1474
+ spec: "motor %1 position",
1475
+ inputs: ["%m"],
1476
+ shape: "reporter",
1477
+ category: "ev3",
1478
+ },
1479
+ {
1480
+ id: "ev3.whenButtonPressed",
1481
+ spec: "when button %1 pressed",
1482
+ inputs: ["%m"],
1483
+ shape: "hat",
1484
+ category: "ev3",
1485
+ },
1486
+ {
1487
+ id: "ev3.whenDistanceLessThan",
1488
+ spec: "when distance < %1",
1489
+ inputs: ["%n"],
1490
+ shape: "hat",
1491
+ category: "ev3",
1492
+ },
1493
+ {
1494
+ id: "ev3.whenBrightnessLessThan",
1495
+ spec: "when brightness < %1",
1496
+ inputs: ["%n"],
1497
+ shape: "hat",
1498
+ category: "ev3",
1499
+ },
1500
+ {
1501
+ id: "ev3.buttonPressed",
1502
+ spec: "button %1 pressed?",
1503
+ inputs: ["%m"],
1504
+ shape: "boolean",
1505
+ category: "ev3",
1506
+ },
1507
+ {
1508
+ id: "ev3.getDistance",
1509
+ spec: "distance",
1510
+ shape: "reporter",
1511
+ category: "ev3",
1512
+ },
1513
+ {
1514
+ id: "ev3.getBrightness",
1515
+ spec: "brightness",
1516
+ shape: "reporter",
1517
+ category: "ev3",
1518
+ },
1519
+ {
1520
+ id: "ev3.beepNote",
1521
+ spec: "beep note %1 for %2 secs",
1522
+ inputs: ["%d.note", "%n"], // we can use %d.note here
1523
+ shape: "stack",
1524
+ category: "ev3",
1525
+ },
1526
+ {
1527
+ id: "wedo2.motorOn",
1528
+ spec: "turn %1 on",
1529
+ inputs: ["%m.motor"],
1530
+ shape: "stack",
1531
+ category: "wedo",
1532
+ },
1533
+ {
1534
+ id: "wedo2.motorOff",
1535
+ spec: "turn %1 off",
1536
+ inputs: ["%m.motor"],
1537
+ shape: "stack",
1538
+ category: "wedo",
1539
+ },
1540
+ {
1541
+ id: "wedo2.startMotorPower",
1542
+ spec: "set %1 power to %2",
1543
+ inputs: ["%m.motor", "%n"],
1544
+ shape: "stack",
1545
+ category: "wedo",
1546
+ },
1547
+ {
1548
+ id: "wedo2.setMotorDirection",
1549
+ spec: "set %1 direction to %2",
1550
+ inputs: ["%m.motor2", "%m.motorDirection"],
1551
+ shape: "stack",
1552
+ category: "wedo",
1553
+ },
1554
+ {
1555
+ id: "wedo2.whenDistance",
1556
+ spec: "when distance %1 %2",
1557
+ inputs: ["%m.lessMore", "%n"],
1558
+ shape: "hat",
1559
+ category: "wedo",
1560
+ },
1561
+ {
1562
+ id: "wedo2.getDistance",
1563
+ spec: "distance",
1564
+ inputs: [],
1565
+ shape: "reporter",
1566
+ category: "wedo",
1567
+ },
1568
+ {
1569
+ id: "wedo2.motorOnFor",
1570
+ spec: "turn %1 on for %2 seconds",
1571
+ inputs: ["%m.motor", "%n"],
1572
+ shape: "stack",
1573
+ category: "wedo",
1574
+ },
1575
+ {
1576
+ id: "wedo2.setLightHue",
1577
+ spec: "set light color to %1",
1578
+ inputs: ["%n"],
1579
+ shape: "stack",
1580
+ category: "wedo",
1581
+ },
1582
+ {
1583
+ id: "wedo2.playNoteFor",
1584
+ spec: "play note %1 for %2 seconds",
1585
+ inputs: ["%n", "%n"],
1586
+ shape: "stack",
1587
+ category: "wedo",
1588
+ },
1589
+ {
1590
+ id: "wedo2.whenTilted",
1591
+ spec: "when tilted %1",
1592
+ inputs: ["%m.xxx"],
1593
+ shape: "hat",
1594
+ category: "wedo",
1595
+ },
1596
+ {
1597
+ id: "wedo2.isTilted",
1598
+ spec: "tilted %1?",
1599
+ inputs: ["%m"],
1600
+ shape: "boolean",
1601
+ category: "wedo",
1602
+ },
1603
+ {
1604
+ id: "wedo2.getTiltAngle",
1605
+ spec: "tilt angle %1",
1606
+ inputs: ["%m.xxx"],
1607
+ shape: "reporter",
1608
+ category: "wedo",
1609
+ },
1610
+ {
1611
+ id: "gdxfor.whenGesture",
1612
+ spec: "when %1",
1613
+ inputs: ["%m"],
1614
+ shape: "hat",
1615
+ category: "gdxfor",
1616
+ },
1617
+ {
1618
+ id: "gdxfor.whenForcePushedOrPulled",
1619
+ spec: "when force sensor %1",
1620
+ inputs: ["%m"],
1621
+ shape: "hat",
1622
+ category: "gdxfor",
1623
+ },
1624
+ {
1625
+ id: "gdxfor.getForce",
1626
+ spec: "force",
1627
+ shape: "reporter",
1628
+ category: "gdxfor",
1629
+ },
1630
+ {
1631
+ id: "gdxfor.whenTilted",
1632
+ spec: "when tilted %1",
1633
+ inputs: ["%m"],
1634
+ shape: "hat",
1635
+ category: "gdxfor",
1636
+ },
1637
+ {
1638
+ id: "gdxfor.isTilted",
1639
+ spec: "tilted %1?",
1640
+ inputs: ["%m"],
1641
+ shape: "boolean",
1642
+ category: "gdxfor",
1643
+ },
1644
+ {
1645
+ id: "gdxfor.getTilt",
1646
+ spec: "tilt angle %1",
1647
+ inputs: ["%m"],
1648
+ shape: "reporter",
1649
+ category: "gdxfor",
1650
+ },
1651
+ {
1652
+ id: "gdxfor.isFreeFalling",
1653
+ spec: "falling?",
1654
+ shape: "boolean",
1655
+ category: "gdxfor",
1656
+ },
1657
+ {
1658
+ id: "gdxfor.getSpin",
1659
+ spec: "spin speed %1",
1660
+ inputs: ["%m"],
1661
+ shape: "reporter",
1662
+ category: "gdxfor",
1663
+ },
1664
+ {
1665
+ id: "gdxfor.getAcceleration",
1666
+ spec: "acceleration %1",
1667
+ inputs: ["%m"],
1668
+ shape: "reporter",
1669
+ category: "gdxfor",
1670
+ },
1671
+ {
1672
+ id: "boost.motorOnFor",
1673
+ spec: "turn motor %1 for %2 seconds",
1674
+ inputs: ["%m", "%n"],
1675
+ shape: "stack",
1676
+ category: "boost",
1677
+ },
1678
+ {
1679
+ id: "boost.motorOnForRotation",
1680
+ spec: "turn motor %1 for %2 rotations",
1681
+ inputs: ["%m", "%n"],
1682
+ shape: "stack",
1683
+ category: "boost",
1684
+ },
1685
+ {
1686
+ id: "boost.motorOn",
1687
+ spec: "turn motor %1 on",
1688
+ inputs: ["%m"],
1689
+ shape: "stack",
1690
+ category: "boost",
1691
+ },
1692
+ {
1693
+ id: "boost.motorOff",
1694
+ spec: "turn motor %1 off",
1695
+ inputs: ["%m"],
1696
+ shape: "stack",
1697
+ category: "boost",
1698
+ },
1699
+ {
1700
+ id: "boost.setMotorPower",
1701
+ spec: "set motor %1 speed to %2%",
1702
+ inputs: ["%m", "%n"],
1703
+ shape: "stack",
1704
+ category: "boost",
1705
+ },
1706
+ {
1707
+ id: "boost.setMotorDirection",
1708
+ spec: "set motor %1 direction %2",
1709
+ inputs: ["%m", "%m"],
1710
+ shape: "stack",
1711
+ category: "boost",
1712
+ },
1713
+ {
1714
+ id: "boost.getMotorPosition",
1715
+ spec: "motor %1 position",
1716
+ inputs: ["%m"],
1717
+ shape: "reporter",
1718
+ category: "boost",
1719
+ },
1720
+ {
1721
+ id: "boost.whenColor",
1722
+ spec: "when %1 brick seen",
1723
+ inputs: ["%m"],
1724
+ shape: "hat",
1725
+ category: "boost",
1726
+ },
1727
+ {
1728
+ id: "boost.seeingColor",
1729
+ spec: "seeing %1 brick?",
1730
+ inputs: ["%m"],
1731
+ shape: "boolean",
1732
+ category: "boost",
1733
+ },
1734
+ {
1735
+ id: "boost.whenTilted",
1736
+ spec: "when tilted %1",
1737
+ inputs: ["%m"],
1738
+ shape: "hat",
1739
+ category: "boost",
1740
+ },
1741
+ {
1742
+ id: "boost.getTiltAngle",
1743
+ spec: "tilt angle %1",
1744
+ inputs: ["%m"],
1745
+ shape: "reporter",
1746
+ category: "boost",
1747
+ },
1748
+ {
1749
+ id: "boost.setLightHue",
1750
+ spec: "set light color to %1",
1751
+ inputs: ["%n"],
1752
+ shape: "stack",
1753
+ category: "boost",
1754
+ },
1755
+ ]