@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,470 @@
1
+ /**
2
+ * @license
3
+ * Visual Blocks Editor
4
+ *
5
+ * Copyright 2012 Google Inc.
6
+ * https://developers.google.com/blockly/
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.operators');
24
+
25
+ goog.require('Blockly.Blocks');
26
+ goog.require('Blockly.Colours');
27
+ goog.require('Blockly.constants');
28
+ goog.require('Blockly.ScratchBlocks.VerticalExtensions');
29
+
30
+
31
+ Blockly.Blocks['operator_add'] = {
32
+ /**
33
+ * Block for adding two numbers.
34
+ * @this Blockly.Block
35
+ */
36
+ init: function() {
37
+ this.jsonInit({
38
+ "message0": Blockly.Msg.OPERATORS_ADD,
39
+ "args0": [
40
+ {
41
+ "type": "input_value",
42
+ "name": "NUM1"
43
+ },
44
+ {
45
+ "type": "input_value",
46
+ "name": "NUM2"
47
+ }
48
+ ],
49
+ "category": Blockly.Categories.operators,
50
+ "extensions": ["colours_operators", "output_number"]
51
+ });
52
+ }
53
+ };
54
+
55
+ Blockly.Blocks['operator_subtract'] = {
56
+ /**
57
+ * Block for subtracting two numbers.
58
+ * @this Blockly.Block
59
+ */
60
+ init: function() {
61
+ this.jsonInit({
62
+ "message0": Blockly.Msg.OPERATORS_SUBTRACT,
63
+ "args0": [
64
+ {
65
+ "type": "input_value",
66
+ "name": "NUM1"
67
+ },
68
+ {
69
+ "type": "input_value",
70
+ "name": "NUM2"
71
+ }
72
+ ],
73
+ "category": Blockly.Categories.operators,
74
+ "extensions": ["colours_operators", "output_number"]
75
+ });
76
+ }
77
+ };
78
+
79
+ Blockly.Blocks['operator_multiply'] = {
80
+ /**
81
+ * Block for multiplying two numbers.
82
+ * @this Blockly.Block
83
+ */
84
+ init: function() {
85
+ this.jsonInit({
86
+ "message0": Blockly.Msg.OPERATORS_MULTIPLY,
87
+ "args0": [
88
+ {
89
+ "type": "input_value",
90
+ "name": "NUM1"
91
+ },
92
+ {
93
+ "type": "input_value",
94
+ "name": "NUM2"
95
+ }
96
+ ],
97
+ "category": Blockly.Categories.operators,
98
+ "extensions": ["colours_operators", "output_number"]
99
+ });
100
+ }
101
+ };
102
+
103
+ Blockly.Blocks['operator_divide'] = {
104
+ /**
105
+ * Block for dividing two numbers.
106
+ * @this Blockly.Block
107
+ */
108
+ init: function() {
109
+ this.jsonInit({
110
+ "message0": Blockly.Msg.OPERATORS_DIVIDE,
111
+ "args0": [
112
+ {
113
+ "type": "input_value",
114
+ "name": "NUM1"
115
+ },
116
+ {
117
+ "type": "input_value",
118
+ "name": "NUM2"
119
+ }
120
+ ],
121
+ "category": Blockly.Categories.operators,
122
+ "extensions": ["colours_operators", "output_number"]
123
+ });
124
+ }
125
+ };
126
+
127
+ Blockly.Blocks['operator_random'] = {
128
+ /**
129
+ * Block for picking a random number.
130
+ * @this Blockly.Block
131
+ */
132
+ init: function() {
133
+ this.jsonInit({
134
+ "message0": Blockly.Msg.OPERATORS_RANDOM,
135
+ "args0": [
136
+ {
137
+ "type": "input_value",
138
+ "name": "FROM"
139
+ },
140
+ {
141
+ "type": "input_value",
142
+ "name": "TO"
143
+ }
144
+ ],
145
+ "category": Blockly.Categories.operators,
146
+ "extensions": ["colours_operators", "output_number"]
147
+ });
148
+ }
149
+ };
150
+
151
+ Blockly.Blocks['operator_lt'] = {
152
+ /**
153
+ * Block for less than comparator.
154
+ * @this Blockly.Block
155
+ */
156
+ init: function() {
157
+ this.jsonInit({
158
+ "message0": Blockly.Msg.OPERATORS_LT,
159
+ "args0": [
160
+ {
161
+ "type": "input_value",
162
+ "name": "OPERAND1"
163
+ },
164
+ {
165
+ "type": "input_value",
166
+ "name": "OPERAND2"
167
+ }
168
+ ],
169
+ "category": Blockly.Categories.operators,
170
+ "extensions": ["colours_operators", "output_boolean"]
171
+ });
172
+ }
173
+ };
174
+
175
+ Blockly.Blocks['operator_equals'] = {
176
+ /**
177
+ * Block for equals comparator.
178
+ * @this Blockly.Block
179
+ */
180
+ init: function() {
181
+ this.jsonInit({
182
+ "message0": Blockly.Msg.OPERATORS_EQUALS,
183
+ "args0": [
184
+ {
185
+ "type": "input_value",
186
+ "name": "OPERAND1"
187
+ },
188
+ {
189
+ "type": "input_value",
190
+ "name": "OPERAND2"
191
+ }
192
+ ],
193
+ "category": Blockly.Categories.operators,
194
+ "extensions": ["colours_operators", "output_boolean"]
195
+ });
196
+ }
197
+ };
198
+
199
+ Blockly.Blocks['operator_gt'] = {
200
+ /**
201
+ * Block for greater than comparator.
202
+ * @this Blockly.Block
203
+ */
204
+ init: function() {
205
+ this.jsonInit({
206
+ "message0": Blockly.Msg.OPERATORS_GT,
207
+ "args0": [
208
+ {
209
+ "type": "input_value",
210
+ "name": "OPERAND1"
211
+ },
212
+ {
213
+ "type": "input_value",
214
+ "name": "OPERAND2"
215
+ }
216
+ ],
217
+ "category": Blockly.Categories.operators,
218
+ "extensions": ["colours_operators", "output_boolean"]
219
+ });
220
+ }
221
+ };
222
+
223
+ Blockly.Blocks['operator_and'] = {
224
+ /**
225
+ * Block for "and" boolean comparator.
226
+ * @this Blockly.Block
227
+ */
228
+ init: function() {
229
+ this.jsonInit({
230
+ "message0": Blockly.Msg.OPERATORS_AND,
231
+ "args0": [
232
+ {
233
+ "type": "input_value",
234
+ "name": "OPERAND1",
235
+ "check": "Boolean"
236
+ },
237
+ {
238
+ "type": "input_value",
239
+ "name": "OPERAND2",
240
+ "check": "Boolean"
241
+ }
242
+ ],
243
+ "category": Blockly.Categories.operators,
244
+ "extensions": ["colours_operators", "output_boolean"]
245
+ });
246
+ }
247
+ };
248
+
249
+ Blockly.Blocks['operator_or'] = {
250
+ /**
251
+ * Block for "or" boolean comparator.
252
+ * @this Blockly.Block
253
+ */
254
+ init: function() {
255
+ this.jsonInit({
256
+ "message0": Blockly.Msg.OPERATORS_OR,
257
+ "args0": [
258
+ {
259
+ "type": "input_value",
260
+ "name": "OPERAND1",
261
+ "check": "Boolean"
262
+ },
263
+ {
264
+ "type": "input_value",
265
+ "name": "OPERAND2",
266
+ "check": "Boolean"
267
+ }
268
+ ],
269
+ "category": Blockly.Categories.operators,
270
+ "extensions": ["colours_operators", "output_boolean"]
271
+ });
272
+ }
273
+ };
274
+
275
+ Blockly.Blocks['operator_not'] = {
276
+ /**
277
+ * Block for "not" unary boolean operator.
278
+ * @this Blockly.Block
279
+ */
280
+ init: function() {
281
+ this.jsonInit({
282
+ "message0": Blockly.Msg.OPERATORS_NOT,
283
+ "args0": [
284
+ {
285
+ "type": "input_value",
286
+ "name": "OPERAND",
287
+ "check": "Boolean"
288
+ }
289
+ ],
290
+ "category": Blockly.Categories.operators,
291
+ "extensions": ["colours_operators", "output_boolean"]
292
+ });
293
+ }
294
+ };
295
+
296
+ Blockly.Blocks['operator_join'] = {
297
+ /**
298
+ * Block for string join operator.
299
+ * @this Blockly.Block
300
+ */
301
+ init: function() {
302
+ this.jsonInit({
303
+ "message0": Blockly.Msg.OPERATORS_JOIN,
304
+ "args0": [
305
+ {
306
+ "type": "input_value",
307
+ "name": "STRING1"
308
+ },
309
+ {
310
+ "type": "input_value",
311
+ "name": "STRING2"
312
+ }
313
+ ],
314
+ "category": Blockly.Categories.operators,
315
+ "extensions": ["colours_operators", "output_string"]
316
+ });
317
+ }
318
+ };
319
+
320
+ Blockly.Blocks['operator_letter_of'] = {
321
+ /**
322
+ * Block for "letter _ of _" operator.
323
+ * @this Blockly.Block
324
+ */
325
+ init: function() {
326
+ this.jsonInit({
327
+ "message0": Blockly.Msg.OPERATORS_LETTEROF,
328
+ "args0": [
329
+ {
330
+ "type": "input_value",
331
+ "name": "LETTER"
332
+ },
333
+ {
334
+ "type": "input_value",
335
+ "name": "STRING"
336
+ }
337
+ ],
338
+ "category": Blockly.Categories.operators,
339
+ "extensions": ["colours_operators", "output_string"]
340
+ });
341
+ }
342
+ };
343
+
344
+ Blockly.Blocks['operator_length'] = {
345
+ /**
346
+ * Block for string length operator.
347
+ * @this Blockly.Block
348
+ */
349
+ init: function() {
350
+ this.jsonInit({
351
+ "message0": Blockly.Msg.OPERATORS_LENGTH,
352
+ "args0": [
353
+ {
354
+ "type": "input_value",
355
+ "name": "STRING"
356
+ }
357
+ ],
358
+ "category": Blockly.Categories.operators,
359
+ "extensions": ["colours_operators", "output_string"]
360
+ });
361
+ }
362
+ };
363
+
364
+ Blockly.Blocks['operator_contains'] = {
365
+ /**
366
+ * Block for _ contains _ operator
367
+ * @this Blockly.Block
368
+ */
369
+ init: function() {
370
+ this.jsonInit({
371
+ "message0": Blockly.Msg.OPERATORS_CONTAINS,
372
+ "args0": [
373
+ {
374
+ "type": "input_value",
375
+ "name": "STRING1"
376
+ },
377
+ {
378
+ "type": "input_value",
379
+ "name": "STRING2"
380
+ }
381
+ ],
382
+ "category": Blockly.Categories.operators,
383
+ "extensions": ["colours_operators", "output_boolean"]
384
+ });
385
+ }
386
+ };
387
+
388
+ Blockly.Blocks['operator_mod'] = {
389
+ /**
390
+ * Block for mod two numbers.
391
+ * @this Blockly.Block
392
+ */
393
+ init: function() {
394
+ this.jsonInit({
395
+ "message0": Blockly.Msg.OPERATORS_MOD,
396
+ "args0": [
397
+ {
398
+ "type": "input_value",
399
+ "name": "NUM1"
400
+ },
401
+ {
402
+ "type": "input_value",
403
+ "name": "NUM2"
404
+ }
405
+ ],
406
+ "category": Blockly.Categories.operators,
407
+ "extensions": ["colours_operators", "output_number"]
408
+ });
409
+ }
410
+ };
411
+
412
+ Blockly.Blocks['operator_round'] = {
413
+ /**
414
+ * Block for rounding a numbers.
415
+ * @this Blockly.Block
416
+ */
417
+ init: function() {
418
+ this.jsonInit({
419
+ "message0": Blockly.Msg.OPERATORS_ROUND,
420
+ "args0": [
421
+ {
422
+ "type": "input_value",
423
+ "name": "NUM"
424
+ }
425
+ ],
426
+ "category": Blockly.Categories.operators,
427
+ "extensions": ["colours_operators", "output_number"]
428
+ });
429
+ }
430
+ };
431
+
432
+ Blockly.Blocks['operator_mathop'] = {
433
+ /**
434
+ * Block for "advanced" math ops on a number.
435
+ * @this Blockly.Block
436
+ */
437
+ init: function() {
438
+ this.jsonInit({
439
+ "message0": Blockly.Msg.OPERATORS_MATHOP,
440
+ "args0": [
441
+ {
442
+ "type": "field_dropdown",
443
+ "name": "OPERATOR",
444
+ "options": [
445
+ [Blockly.Msg.OPERATORS_MATHOP_ABS, 'abs'],
446
+ [Blockly.Msg.OPERATORS_MATHOP_FLOOR, 'floor'],
447
+ [Blockly.Msg.OPERATORS_MATHOP_CEILING, 'ceiling'],
448
+ [Blockly.Msg.OPERATORS_MATHOP_SQRT, 'sqrt'],
449
+ [Blockly.Msg.OPERATORS_MATHOP_SIN, 'sin'],
450
+ [Blockly.Msg.OPERATORS_MATHOP_COS, 'cos'],
451
+ [Blockly.Msg.OPERATORS_MATHOP_TAN, 'tan'],
452
+ [Blockly.Msg.OPERATORS_MATHOP_ASIN, 'asin'],
453
+ [Blockly.Msg.OPERATORS_MATHOP_ACOS, 'acos'],
454
+ [Blockly.Msg.OPERATORS_MATHOP_ATAN, 'atan'],
455
+ [Blockly.Msg.OPERATORS_MATHOP_LN, 'ln'],
456
+ [Blockly.Msg.OPERATORS_MATHOP_LOG, 'log'],
457
+ [Blockly.Msg.OPERATORS_MATHOP_EEXP, 'e ^'],
458
+ [Blockly.Msg.OPERATORS_MATHOP_10EXP, '10 ^']
459
+ ]
460
+ },
461
+ {
462
+ "type": "input_value",
463
+ "name": "NUM"
464
+ }
465
+ ],
466
+ "category": Blockly.Categories.operators,
467
+ "extensions": ["colours_operators", "output_number"]
468
+ });
469
+ }
470
+ };