sb-edit-custom 0.15.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.
package/lib/Block.js ADDED
@@ -0,0 +1,631 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ var _a;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.BlockBase = void 0;
14
+ var OpCode_1 = require("./OpCode");
15
+ var id_1 = require("./util/id");
16
+ var BlockBase = /** @class */ (function () {
17
+ function BlockBase(options) {
18
+ this.parent = null;
19
+ this.next = null;
20
+ Object.assign(this, options);
21
+ if (!options.id) {
22
+ this.id = (0, id_1.generateId)();
23
+ }
24
+ }
25
+ // TODO: fix signature to be more specific in what's returned
26
+ BlockBase.getDefaultInput = function (opcode, input) {
27
+ if (!(opcode in KnownBlockInputMap))
28
+ return;
29
+ return KnownBlockInputMap[opcode][input];
30
+ };
31
+ BlockBase.isKnownBlock = function (opcode) {
32
+ return opcode in KnownBlockInputMap;
33
+ };
34
+ // TODO: Can we reference MyInputs here?
35
+ BlockBase.prototype.getDefaultInput = function (input) {
36
+ if (this.isKnownBlock()) {
37
+ return BlockBase.getDefaultInput(this.opcode, input);
38
+ }
39
+ };
40
+ BlockBase.prototype.isKnownBlock = function () {
41
+ return BlockBase.isKnownBlock(this.opcode);
42
+ };
43
+ Object.defineProperty(BlockBase.prototype, "blocks", {
44
+ get: function () {
45
+ return __spreadArray([
46
+ this
47
+ ], Object.values(this.inputs).flatMap(function (input) {
48
+ if (input.type === "block") {
49
+ return input.value;
50
+ }
51
+ else if (input.type === "blocks" && input.value) {
52
+ return input.value;
53
+ }
54
+ else {
55
+ return [];
56
+ }
57
+ }), true);
58
+ },
59
+ enumerable: false,
60
+ configurable: true
61
+ });
62
+ Object.defineProperty(BlockBase.prototype, "isHat", {
63
+ get: function () {
64
+ var hatTypes = [
65
+ OpCode_1.OpCode.event_whenflagclicked,
66
+ OpCode_1.OpCode.event_whenkeypressed,
67
+ OpCode_1.OpCode.event_whenthisspriteclicked,
68
+ OpCode_1.OpCode.event_whenstageclicked,
69
+ OpCode_1.OpCode.event_whenbackdropswitchesto,
70
+ OpCode_1.OpCode.event_whengreaterthan,
71
+ OpCode_1.OpCode.event_whenbroadcastreceived,
72
+ OpCode_1.OpCode.control_start_as_clone,
73
+ OpCode_1.OpCode.procedures_definition
74
+ ];
75
+ return hatTypes.includes(this.opcode);
76
+ },
77
+ enumerable: false,
78
+ configurable: true
79
+ });
80
+ return BlockBase;
81
+ }());
82
+ exports.BlockBase = BlockBase;
83
+ // TODO: This is largely a copy of the above data, formatted as a runtime
84
+ // constant instead of as type information. Is it possible to construct a type
85
+ // from the value of this mapping? I don't know enough ts-fu to risk doing so
86
+ // in some way that seems to function as it's supposed to but actually isn't
87
+ // carrying type information correctly.
88
+ var KnownBlockInputMap = (_a = {},
89
+ // Motion
90
+ _a[OpCode_1.OpCode.motion_movesteps] = {
91
+ STEPS: { type: "number", initial: 10 }
92
+ },
93
+ _a[OpCode_1.OpCode.motion_turnright] = {
94
+ DEGREES: { type: "number", initial: 15 }
95
+ },
96
+ _a[OpCode_1.OpCode.motion_turnleft] = {
97
+ DEGREES: { type: "number", initial: 15 }
98
+ },
99
+ _a[OpCode_1.OpCode.motion_goto] = {
100
+ TO: { type: "goToTarget", initial: "_random_" }
101
+ },
102
+ _a[OpCode_1.OpCode.motion_gotoxy] = {
103
+ X: { type: "number", initial: 0 },
104
+ Y: { type: "number", initial: 0 }
105
+ },
106
+ _a[OpCode_1.OpCode.motion_glideto] = {
107
+ SECS: { type: "number", initial: 1 },
108
+ TO: { type: "goToTarget", initial: "_random_" }
109
+ },
110
+ _a[OpCode_1.OpCode.motion_glidesecstoxy] = {
111
+ SECS: { type: "number", initial: 1 },
112
+ X: { type: "number", initial: 0 },
113
+ Y: { type: "number", initial: 0 }
114
+ },
115
+ _a[OpCode_1.OpCode.motion_pointindirection] = {
116
+ DIRECTION: { type: "angle", initial: 90 }
117
+ },
118
+ _a[OpCode_1.OpCode.motion_pointtowards] = {
119
+ TOWARDS: { type: "pointTowardsTarget", initial: "_mouse_" }
120
+ },
121
+ _a[OpCode_1.OpCode.motion_changexby] = {
122
+ DX: { type: "number", initial: 10 }
123
+ },
124
+ _a[OpCode_1.OpCode.motion_setx] = {
125
+ X: { type: "number", initial: 0 }
126
+ },
127
+ _a[OpCode_1.OpCode.motion_changeyby] = {
128
+ DY: { type: "number", initial: 10 }
129
+ },
130
+ _a[OpCode_1.OpCode.motion_sety] = {
131
+ Y: { type: "number", initial: 0 }
132
+ },
133
+ _a[OpCode_1.OpCode.motion_ifonedgebounce] = {},
134
+ _a[OpCode_1.OpCode.motion_setrotationstyle] = {
135
+ STYLE: { type: "rotationStyle", initial: "left-right" }
136
+ },
137
+ _a[OpCode_1.OpCode.motion_xposition] = {},
138
+ _a[OpCode_1.OpCode.motion_yposition] = {},
139
+ _a[OpCode_1.OpCode.motion_direction] = {},
140
+ _a[OpCode_1.OpCode.motion_scroll_right] = {
141
+ DISTANCE: { type: "number", initial: 10 }
142
+ },
143
+ _a[OpCode_1.OpCode.motion_scroll_up] = {
144
+ DISTANCE: { type: "number", initial: 10 }
145
+ },
146
+ _a[OpCode_1.OpCode.motion_align_scene] = {
147
+ ALIGNMENT: { type: "scrollAlignment", initial: "middle" }
148
+ },
149
+ // Looks
150
+ _a[OpCode_1.OpCode.looks_sayforsecs] = {
151
+ MESSAGE: { type: "string", initial: "Hello!" },
152
+ SECS: { type: "number", initial: 2 }
153
+ },
154
+ _a[OpCode_1.OpCode.looks_say] = {
155
+ MESSAGE: { type: "string", initial: "Hello!" }
156
+ },
157
+ _a[OpCode_1.OpCode.looks_thinkforsecs] = {
158
+ MESSAGE: { type: "string", initial: "Hmm..." },
159
+ SECS: { type: "number", initial: 2 }
160
+ },
161
+ _a[OpCode_1.OpCode.looks_think] = {
162
+ MESSAGE: { type: "string", initial: "Hmmm..." }
163
+ },
164
+ _a[OpCode_1.OpCode.looks_switchcostumeto] = {
165
+ COSTUME: { type: "costume", initial: "costume1" }
166
+ },
167
+ _a[OpCode_1.OpCode.looks_nextcostume] = {},
168
+ _a[OpCode_1.OpCode.looks_switchbackdropto] = {
169
+ BACKDROP: { type: "backdrop", initial: "backdrop1" }
170
+ },
171
+ _a[OpCode_1.OpCode.looks_nextbackdrop] = {},
172
+ _a[OpCode_1.OpCode.looks_changesizeby] = {
173
+ CHANGE: { type: "number", initial: 10 }
174
+ },
175
+ _a[OpCode_1.OpCode.looks_setsizeto] = {
176
+ SIZE: { type: "number", initial: 100 }
177
+ },
178
+ _a[OpCode_1.OpCode.looks_changeeffectby] = {
179
+ EFFECT: { type: "graphicEffect", initial: "COLOR" },
180
+ CHANGE: { type: "number", initial: 25 }
181
+ },
182
+ _a[OpCode_1.OpCode.looks_seteffectto] = {
183
+ EFFECT: { type: "graphicEffect", initial: "COLOR" },
184
+ VALUE: { type: "number", initial: 0 }
185
+ },
186
+ _a[OpCode_1.OpCode.looks_cleargraphiceffects] = {},
187
+ _a[OpCode_1.OpCode.looks_show] = {},
188
+ _a[OpCode_1.OpCode.looks_hide] = {},
189
+ _a[OpCode_1.OpCode.looks_gotofrontback] = {
190
+ FRONT_BACK: { type: "frontBackMenu", initial: "front" }
191
+ },
192
+ _a[OpCode_1.OpCode.looks_goforwardbackwardlayers] = {
193
+ FORWARD_BACKWARD: { type: "forwardBackwardMenu", initial: "forward" },
194
+ NUM: { type: "number", initial: 1 }
195
+ },
196
+ _a[OpCode_1.OpCode.looks_costumenumbername] = {
197
+ NUMBER_NAME: { type: "costumeNumberName", initial: "number" }
198
+ },
199
+ _a[OpCode_1.OpCode.looks_backdropnumbername] = {
200
+ NUMBER_NAME: { type: "costumeNumberName", initial: "number" }
201
+ },
202
+ _a[OpCode_1.OpCode.looks_size] = {},
203
+ _a[OpCode_1.OpCode.looks_hideallsprites] = {},
204
+ _a[OpCode_1.OpCode.looks_switchbackdroptoandwait] = {
205
+ BACKDROP: { type: "backdrop", initial: "backdrop1" }
206
+ },
207
+ _a[OpCode_1.OpCode.looks_changestretchby] = {
208
+ CHANGE: { type: "number", initial: 10 }
209
+ },
210
+ _a[OpCode_1.OpCode.looks_setstretchto] = {
211
+ STRETCH: { type: "number", initial: 0 }
212
+ },
213
+ // Sound
214
+ _a[OpCode_1.OpCode.sound_playuntildone] = {
215
+ SOUND_MENU: { type: "sound", initial: "pop" }
216
+ },
217
+ _a[OpCode_1.OpCode.sound_play] = {
218
+ SOUND_MENU: { type: "sound", initial: "sound" }
219
+ },
220
+ _a[OpCode_1.OpCode.sound_stopallsounds] = {},
221
+ _a[OpCode_1.OpCode.sound_changeeffectby] = {
222
+ EFFECT: { type: "soundEffect", initial: "PITCH" },
223
+ VALUE: { type: "number", initial: 10 }
224
+ },
225
+ _a[OpCode_1.OpCode.sound_seteffectto] = {
226
+ EFFECT: { type: "soundEffect", initial: "PITCH" },
227
+ VALUE: { type: "number", initial: 0 }
228
+ },
229
+ _a[OpCode_1.OpCode.sound_cleareffects] = {},
230
+ _a[OpCode_1.OpCode.sound_changevolumeby] = {
231
+ VOLUME: { type: "number", initial: -10 }
232
+ },
233
+ _a[OpCode_1.OpCode.sound_setvolumeto] = {
234
+ VOLUME: { type: "number", initial: 100 }
235
+ },
236
+ _a[OpCode_1.OpCode.sound_volume] = {},
237
+ // Events
238
+ _a[OpCode_1.OpCode.event_whenflagclicked] = {},
239
+ _a[OpCode_1.OpCode.event_whenkeypressed] = {
240
+ KEY_OPTION: { type: "key", initial: "space" }
241
+ },
242
+ _a[OpCode_1.OpCode.event_whenthisspriteclicked] = {},
243
+ _a[OpCode_1.OpCode.event_whenstageclicked] = {},
244
+ _a[OpCode_1.OpCode.event_whenbackdropswitchesto] = {
245
+ BACKDROP: { type: "backdrop", initial: "backdrop1" }
246
+ },
247
+ _a[OpCode_1.OpCode.event_whengreaterthan] = {
248
+ WHENGREATERTHANMENU: { type: "greaterThanMenu", initial: "LOUDNESS" },
249
+ VALUE: { type: "number", initial: 10 }
250
+ },
251
+ _a[OpCode_1.OpCode.event_whenbroadcastreceived] = {
252
+ BROADCAST_OPTION: { type: "broadcast", initial: "message1" }
253
+ },
254
+ _a[OpCode_1.OpCode.event_broadcast] = {
255
+ BROADCAST_INPUT: { type: "broadcast", initial: "message1" }
256
+ },
257
+ _a[OpCode_1.OpCode.event_broadcastandwait] = {
258
+ BROADCAST_INPUT: { type: "broadcast", initial: "message1" }
259
+ },
260
+ // Control
261
+ _a[OpCode_1.OpCode.control_wait] = {
262
+ DURATION: { type: "number", initial: 1 }
263
+ },
264
+ _a[OpCode_1.OpCode.control_repeat] = {
265
+ TIMES: { type: "number", initial: 10 },
266
+ SUBSTACK: { type: "blocks", initial: null }
267
+ },
268
+ _a[OpCode_1.OpCode.control_forever] = {
269
+ SUBSTACK: { type: "blocks", initial: null }
270
+ },
271
+ _a[OpCode_1.OpCode.control_if] = {
272
+ CONDITION: { type: "boolean", initial: false },
273
+ SUBSTACK: { type: "blocks", initial: null }
274
+ },
275
+ _a[OpCode_1.OpCode.control_if_else] = {
276
+ CONDITION: { type: "boolean", initial: false },
277
+ SUBSTACK: { type: "blocks", initial: null },
278
+ SUBSTACK2: { type: "blocks", initial: null }
279
+ },
280
+ _a[OpCode_1.OpCode.control_wait_until] = {
281
+ CONDITION: { type: "boolean", initial: false }
282
+ },
283
+ _a[OpCode_1.OpCode.control_repeat_until] = {
284
+ CONDITION: { type: "boolean", initial: false },
285
+ SUBSTACK: { type: "blocks", initial: null }
286
+ },
287
+ _a[OpCode_1.OpCode.control_stop] = {
288
+ STOP_OPTION: { type: "stopMenu", initial: "all" }
289
+ },
290
+ _a[OpCode_1.OpCode.control_start_as_clone] = {},
291
+ _a[OpCode_1.OpCode.control_create_clone_of] = {
292
+ CLONE_OPTION: { type: "cloneTarget", initial: "_myself_" }
293
+ },
294
+ _a[OpCode_1.OpCode.control_delete_this_clone] = {},
295
+ _a[OpCode_1.OpCode.control_all_at_once] = {
296
+ SUBSTACK: { type: "blocks", initial: null }
297
+ },
298
+ _a[OpCode_1.OpCode.control_for_each] = {
299
+ VARIABLE: { type: "variable", initial: { id: "i", name: "i" } },
300
+ VALUE: { type: "number", initial: 10 },
301
+ SUBSTACK: { type: "blocks", initial: null }
302
+ },
303
+ _a[OpCode_1.OpCode.control_while] = {
304
+ CONDITION: { type: "boolean", initial: false },
305
+ SUBSTACK: { type: "blocks", initial: null }
306
+ },
307
+ // Sensing
308
+ _a[OpCode_1.OpCode.sensing_touchingobject] = {
309
+ TOUCHINGOBJECTMENU: { type: "touchingTarget", initial: "_mouse_" }
310
+ },
311
+ _a[OpCode_1.OpCode.sensing_touchingcolor] = {
312
+ COLOR: { type: "color", initial: { r: 0x99, g: 0x66, b: 0xff } }
313
+ },
314
+ _a[OpCode_1.OpCode.sensing_coloristouchingcolor] = {
315
+ COLOR: { type: "color", initial: { r: 0x99, g: 0x66, b: 0xff } },
316
+ COLOR2: { type: "color", initial: { r: 0xff, g: 0xab, b: 0x19 } }
317
+ },
318
+ _a[OpCode_1.OpCode.sensing_distanceto] = {
319
+ DISTANCETOMENU: { type: "distanceToMenu", initial: "_mouse_" }
320
+ },
321
+ _a[OpCode_1.OpCode.sensing_askandwait] = {
322
+ QUESTION: { type: "string", initial: "What's your name?" }
323
+ },
324
+ _a[OpCode_1.OpCode.sensing_answer] = {},
325
+ _a[OpCode_1.OpCode.sensing_keypressed] = {
326
+ KEY_OPTION: { type: "key", initial: "space" }
327
+ },
328
+ _a[OpCode_1.OpCode.sensing_mousedown] = {},
329
+ _a[OpCode_1.OpCode.sensing_mousex] = {},
330
+ _a[OpCode_1.OpCode.sensing_mousey] = {},
331
+ _a[OpCode_1.OpCode.sensing_setdragmode] = {
332
+ DRAG_MODE: { type: "dragModeMenu", initial: "draggable" }
333
+ },
334
+ _a[OpCode_1.OpCode.sensing_loudness] = {},
335
+ _a[OpCode_1.OpCode.sensing_loud] = {},
336
+ _a[OpCode_1.OpCode.sensing_timer] = {},
337
+ _a[OpCode_1.OpCode.sensing_resettimer] = {},
338
+ _a[OpCode_1.OpCode.sensing_of] = {
339
+ PROPERTY: { type: "propertyOfMenu", initial: "backdrop #" },
340
+ OBJECT: { type: "target", initial: "_stage_" }
341
+ },
342
+ _a[OpCode_1.OpCode.sensing_current] = {
343
+ CURRENTMENU: { type: "currentMenu", initial: "YEAR" }
344
+ },
345
+ _a[OpCode_1.OpCode.sensing_dayssince2000] = {},
346
+ _a[OpCode_1.OpCode.sensing_username] = {},
347
+ _a[OpCode_1.OpCode.sensing_userid] = {},
348
+ // Operators
349
+ _a[OpCode_1.OpCode.operator_add] = {
350
+ NUM1: { type: "number", initial: "" },
351
+ NUM2: { type: "number", initial: "" }
352
+ },
353
+ _a[OpCode_1.OpCode.operator_subtract] = {
354
+ NUM1: { type: "number", initial: "" },
355
+ NUM2: { type: "number", initial: "" }
356
+ },
357
+ _a[OpCode_1.OpCode.operator_multiply] = {
358
+ NUM1: { type: "number", initial: "" },
359
+ NUM2: { type: "number", initial: "" }
360
+ },
361
+ _a[OpCode_1.OpCode.operator_divide] = {
362
+ NUM1: { type: "number", initial: "" },
363
+ NUM2: { type: "number", initial: "" }
364
+ },
365
+ _a[OpCode_1.OpCode.operator_random] = {
366
+ FROM: { type: "number", initial: 1 },
367
+ TO: { type: "number", initial: 10 }
368
+ },
369
+ _a[OpCode_1.OpCode.operator_gt] = {
370
+ OPERAND1: { type: "number", initial: "" },
371
+ OPERAND2: { type: "number", initial: 50 }
372
+ },
373
+ _a[OpCode_1.OpCode.operator_lt] = {
374
+ OPERAND1: { type: "number", initial: "" },
375
+ OPERAND2: { type: "number", initial: 50 }
376
+ },
377
+ _a[OpCode_1.OpCode.operator_equals] = {
378
+ OPERAND1: { type: "number", initial: "" },
379
+ OPERAND2: { type: "number", initial: 50 }
380
+ },
381
+ _a[OpCode_1.OpCode.operator_and] = {
382
+ OPERAND1: { type: "boolean", initial: false },
383
+ OPERAND2: { type: "boolean", initial: false }
384
+ },
385
+ _a[OpCode_1.OpCode.operator_or] = {
386
+ OPERAND1: { type: "boolean", initial: false },
387
+ OPERAND2: { type: "boolean", initial: false }
388
+ },
389
+ _a[OpCode_1.OpCode.operator_not] = {
390
+ OPERAND: { type: "boolean", initial: false }
391
+ },
392
+ _a[OpCode_1.OpCode.operator_join] = {
393
+ STRING1: { type: "string", initial: "apple " },
394
+ STRING2: { type: "string", initial: "banana" }
395
+ },
396
+ _a[OpCode_1.OpCode.operator_letter_of] = {
397
+ LETTER: { type: "number", initial: 1 },
398
+ STRING: { type: "string", initial: "apple" }
399
+ },
400
+ _a[OpCode_1.OpCode.operator_length] = {
401
+ STRING: { type: "string", initial: "apple" }
402
+ },
403
+ _a[OpCode_1.OpCode.operator_contains] = {
404
+ STRING1: { type: "string", initial: "apple" },
405
+ STRING2: { type: "string", initial: "a" }
406
+ },
407
+ _a[OpCode_1.OpCode.operator_mod] = {
408
+ NUM1: { type: "number", initial: "" },
409
+ NUM2: { type: "number", initial: "" }
410
+ },
411
+ _a[OpCode_1.OpCode.operator_round] = {
412
+ NUM: { type: "number", initial: "" }
413
+ },
414
+ _a[OpCode_1.OpCode.operator_mathop] = {
415
+ OPERATOR: { type: "mathopMenu", initial: "abs" },
416
+ NUM: { type: "number", initial: "" }
417
+ },
418
+ // Data
419
+ _a[OpCode_1.OpCode.data_variable] = {
420
+ VARIABLE: { type: "variable", initial: { id: "NONEXISTENT_ID", name: "my variable" } }
421
+ },
422
+ _a[OpCode_1.OpCode.data_setvariableto] = {
423
+ VARIABLE: { type: "variable", initial: { id: "NONEXISTENT_ID", name: "my variable" } },
424
+ VALUE: { type: "string", initial: "0" }
425
+ },
426
+ _a[OpCode_1.OpCode.data_changevariableby] = {
427
+ VARIABLE: { type: "variable", initial: { id: "NONEXISTENT_ID", name: "my variable" } },
428
+ VALUE: { type: "number", initial: 1 }
429
+ },
430
+ _a[OpCode_1.OpCode.data_showvariable] = {
431
+ VARIABLE: { type: "variable", initial: { id: "NONEXISTENT_ID", name: "my variable" } }
432
+ },
433
+ _a[OpCode_1.OpCode.data_hidevariable] = {
434
+ VARIABLE: { type: "variable", initial: { id: "NONEXISTENT_ID", name: "my variable" } }
435
+ },
436
+ _a[OpCode_1.OpCode.data_listcontents] = {
437
+ LIST: { type: "list", initial: { id: "NONEXISTENT_ID", name: "my list" } }
438
+ },
439
+ _a[OpCode_1.OpCode.data_addtolist] = {
440
+ ITEM: { type: "string", initial: "thing" },
441
+ LIST: { type: "list", initial: { id: "NONEXISTENT_ID", name: "my list" } }
442
+ },
443
+ _a[OpCode_1.OpCode.data_deleteoflist] = {
444
+ INDEX: { type: "number", initial: 1 },
445
+ LIST: { type: "list", initial: { id: "NONEXISTENT_ID", name: "my list" } }
446
+ },
447
+ _a[OpCode_1.OpCode.data_deletealloflist] = {
448
+ LIST: { type: "list", initial: { id: "NONEXISTENT_ID", name: "my list" } }
449
+ },
450
+ _a[OpCode_1.OpCode.data_insertatlist] = {
451
+ ITEM: { type: "string", initial: "thing" },
452
+ INDEX: { type: "number", initial: 1 },
453
+ LIST: { type: "list", initial: { id: "NONEXISTENT_ID", name: "my list" } }
454
+ },
455
+ _a[OpCode_1.OpCode.data_replaceitemoflist] = {
456
+ INDEX: { type: "number", initial: 1 },
457
+ LIST: { type: "list", initial: { id: "NONEXISTENT_ID", name: "my list" } },
458
+ ITEM: { type: "string", initial: "thing" }
459
+ },
460
+ _a[OpCode_1.OpCode.data_itemoflist] = {
461
+ INDEX: { type: "number", initial: 1 },
462
+ LIST: { type: "list", initial: { id: "NONEXISTENT_ID", name: "my list" } }
463
+ },
464
+ _a[OpCode_1.OpCode.data_itemnumoflist] = {
465
+ ITEM: { type: "string", initial: "thing" },
466
+ LIST: { type: "list", initial: { id: "NONEXISTENT_ID", name: "my list" } }
467
+ },
468
+ _a[OpCode_1.OpCode.data_lengthoflist] = {
469
+ LIST: { type: "list", initial: { id: "NONEXISTENT_ID", name: "my list" } }
470
+ },
471
+ _a[OpCode_1.OpCode.data_listcontainsitem] = {
472
+ LIST: { type: "list", initial: { id: "NONEXISTENT_ID", name: "my list" } },
473
+ ITEM: { type: "string", initial: "thing" }
474
+ },
475
+ _a[OpCode_1.OpCode.data_showlist] = {
476
+ LIST: { type: "list", initial: { id: "NONEXISTENT_ID", name: "my list" } }
477
+ },
478
+ _a[OpCode_1.OpCode.data_hidelist] = {
479
+ LIST: { type: "list", initial: { id: "NONEXISTENT_ID", name: "my list" } }
480
+ },
481
+ // Custom Blocks
482
+ _a[OpCode_1.OpCode.procedures_definition] = {
483
+ PROCCODE: { type: "string", initial: "hello" },
484
+ ARGUMENTS: {
485
+ type: "customBlockArguments",
486
+ initial: [
487
+ { type: "label", name: "hello" },
488
+ { type: "numberOrString", name: "who", defaultValue: "me" },
489
+ { type: "boolean", name: "casually", defaultValue: false }
490
+ ]
491
+ },
492
+ WARP: { type: "boolean", initial: false }
493
+ },
494
+ _a[OpCode_1.OpCode.procedures_call] = {
495
+ PROCCODE: { type: "string", initial: "hello" },
496
+ INPUTS: {
497
+ type: "customBlockInputValues",
498
+ initial: [
499
+ { type: "string", value: "world" },
500
+ { type: "boolean", value: true }
501
+ ]
502
+ }
503
+ },
504
+ _a[OpCode_1.OpCode.argument_reporter_string_number] = {
505
+ VALUE: { type: "string", initial: "who" }
506
+ },
507
+ _a[OpCode_1.OpCode.argument_reporter_boolean] = {
508
+ VALUE: { type: "string", initial: "casually" }
509
+ },
510
+ // Extension: Music
511
+ _a[OpCode_1.OpCode.music_playDrumForBeats] = {
512
+ DRUM: { type: "musicDrum", initial: "1" },
513
+ BEATS: { type: "number", initial: 0.25 }
514
+ },
515
+ _a[OpCode_1.OpCode.music_restForBeats] = {
516
+ BEATS: { type: "number", initial: 0.25 }
517
+ },
518
+ _a[OpCode_1.OpCode.music_playNoteForBeats] = {
519
+ NOTE: { type: "number", initial: 60 },
520
+ BEATS: { type: "number", initial: 0.25 }
521
+ },
522
+ _a[OpCode_1.OpCode.music_setInstrument] = {
523
+ INSTRUMENT: { type: "musicInstrument", initial: "1" }
524
+ },
525
+ _a[OpCode_1.OpCode.music_setTempo] = {
526
+ TEMPO: { type: "number", initial: 60 }
527
+ },
528
+ _a[OpCode_1.OpCode.music_changeTempo] = {
529
+ TEMPO: { type: "number", initial: 20 }
530
+ },
531
+ _a[OpCode_1.OpCode.music_getTempo] = {},
532
+ // Deprecated:
533
+ _a[OpCode_1.OpCode.music_midiPlayDrumForBeats] = {
534
+ DRUM: { type: "number", initial: 1 },
535
+ BEATS: { type: "number", initial: 0.25 }
536
+ },
537
+ _a[OpCode_1.OpCode.music_midiSetInstrument] = {
538
+ INSTRUMENT: { type: "number", initial: 1 }
539
+ },
540
+ // Extension: Pen
541
+ _a[OpCode_1.OpCode.pen_clear] = {},
542
+ _a[OpCode_1.OpCode.pen_stamp] = {},
543
+ _a[OpCode_1.OpCode.pen_penDown] = {},
544
+ _a[OpCode_1.OpCode.pen_penUp] = {},
545
+ _a[OpCode_1.OpCode.pen_setPenColorToColor] = {
546
+ COLOR: { type: "color", initial: { r: 0x99, g: 0x66, b: 0xff } }
547
+ },
548
+ _a[OpCode_1.OpCode.pen_changePenColorParamBy] = {
549
+ COLOR_PARAM: { type: "penColorParam", initial: "color" },
550
+ VALUE: { type: "number", initial: 10 }
551
+ },
552
+ _a[OpCode_1.OpCode.pen_setPenColorParamTo] = {
553
+ COLOR_PARAM: { type: "penColorParam", initial: "color" },
554
+ VALUE: { type: "number", initial: 50 }
555
+ },
556
+ _a[OpCode_1.OpCode.pen_changePenSizeBy] = {
557
+ SIZE: { type: "number", initial: 1 }
558
+ },
559
+ _a[OpCode_1.OpCode.pen_setPenSizeTo] = {
560
+ SIZE: { type: "number", initial: 1 }
561
+ },
562
+ // Deprecated:
563
+ _a[OpCode_1.OpCode.pen_setPenShadeToNumber] = {
564
+ SHADE: { type: "number", initial: 50 }
565
+ },
566
+ _a[OpCode_1.OpCode.pen_changePenShadeBy] = {
567
+ SHADE: { type: "number", initial: 10 }
568
+ },
569
+ _a[OpCode_1.OpCode.pen_setPenHueToNumber] = {
570
+ HUE: { type: "number", initial: 0 }
571
+ },
572
+ _a[OpCode_1.OpCode.pen_changePenHueBy] = {
573
+ HUE: { type: "number", initial: 10 }
574
+ },
575
+ // Extension: WeDo 2.0
576
+ _a[OpCode_1.OpCode.wedo2_motorOnFor] = {
577
+ MOTOR_ID: { type: "wedo2MotorId", initial: "motor" },
578
+ DURATION: { type: "number", initial: 1 }
579
+ },
580
+ _a[OpCode_1.OpCode.wedo2_motorOn] = {
581
+ MOTOR_ID: { type: "wedo2MotorId", initial: "motor" }
582
+ },
583
+ _a[OpCode_1.OpCode.wedo2_motorOff] = {
584
+ MOTOR_ID: { type: "wedo2MotorId", initial: "motor" }
585
+ },
586
+ _a[OpCode_1.OpCode.wedo2_startMotorPower] = {
587
+ MOTOR_ID: { type: "wedo2MotorId", initial: "motor" },
588
+ POWER: { type: "number", initial: 100 }
589
+ },
590
+ _a[OpCode_1.OpCode.wedo2_setMotorDirection] = {
591
+ MOTOR_ID: { type: "wedo2MotorId", initial: "motor" },
592
+ MOTOR_DIRECTION: { type: "wedo2MotorDirection", initial: "this way" }
593
+ },
594
+ _a[OpCode_1.OpCode.wedo2_setLightHue] = {
595
+ HUE: { type: "number", initial: 50 }
596
+ },
597
+ _a[OpCode_1.OpCode.wedo2_whenDistance] = {
598
+ OP: { type: "wedo2Op", initial: "<" },
599
+ REFERENCE: { type: "number", initial: 50 }
600
+ },
601
+ _a[OpCode_1.OpCode.wedo2_whenTilted] = {
602
+ TILT_DIRECTION_ANY: { type: "wedo2TiltDirectionAny", initial: "any" }
603
+ },
604
+ _a[OpCode_1.OpCode.wedo2_getDistance] = {},
605
+ _a[OpCode_1.OpCode.wedo2_isTilted] = {
606
+ TILT_DIRECTION_ANY: { type: "wedo2TiltDirectionAny", initial: "any" }
607
+ },
608
+ _a[OpCode_1.OpCode.wedo2_getTiltAngle] = {
609
+ TILT_DIRECTION: { type: "wedo2TiltDirection", initial: "up" }
610
+ },
611
+ // Deprecated:
612
+ _a[OpCode_1.OpCode.wedo2_playNoteFor] = {
613
+ NOTE: { type: "number", initial: 60 },
614
+ DURATION: { type: "number", initial: 0.5 }
615
+ },
616
+ // Extension: Video Sensing
617
+ _a[OpCode_1.OpCode.videoSensing_whenMotionGreaterThan] = {
618
+ REFERENCE: { type: "number", initial: 10 }
619
+ },
620
+ _a[OpCode_1.OpCode.videoSensing_videoOn] = {
621
+ ATTRIBUTE: { type: "videoSensingAttribute", initial: "motion" },
622
+ SUBJECT: { type: "videoSensingSubject", initial: "this sprite" }
623
+ },
624
+ _a[OpCode_1.OpCode.videoSensing_videoToggle] = {
625
+ VIDEO_STATE: { type: "videoSensingVideoState", initial: "on" }
626
+ },
627
+ _a[OpCode_1.OpCode.videoSensing_setVideoTransparency] = {
628
+ TRANSPARENCY: { type: "number", initial: 50 }
629
+ },
630
+ _a);
631
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUNBLG1DQUFrQztBQUNsQyxnQ0FBdUM7QUFPdkM7SUFtQkUsbUJBQVksT0FRWDtRQVhNLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzdCLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBV2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFBLGVBQVUsR0FBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQWhDRCw2REFBNkQ7SUFDL0MseUJBQWUsR0FBN0IsVUFBOEIsTUFBNEIsRUFBRSxLQUFhO1FBQ3ZFLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQztZQUFFLE9BQU87UUFDNUMsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUF5RCxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVhLHNCQUFZLEdBQTFCLFVBQTJCLE1BQWM7UUFDdkMsT0FBTyxNQUFNLElBQUksa0JBQWtCLENBQUM7SUFDdEMsQ0FBQztJQTBCRCx3Q0FBd0M7SUFDakMsbUNBQWUsR0FBdEIsVUFBdUIsS0FBYTtRQUNsQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUN2QixPQUFPLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFFTSxnQ0FBWSxHQUFuQjtRQUNFLE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELHNCQUFJLDZCQUFNO2FBQVY7WUFDRTtnQkFDRSxJQUFhO2VBQ1YsTUFBTSxDQUFD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