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,877 @@
1
+ import SVG from "./draw.js"
2
+ import cssContent from "./style.css.js"
3
+
4
+ // Need to define here, as we cannot reference Style#makeNewIcons
5
+ // during JS loading phase.
6
+ const highContrastIcons = new Set([
7
+ "dropdownArrow",
8
+ "turnRight",
9
+ "turnLeft",
10
+ "loopArrow",
11
+ "musicBlock",
12
+ "penBlock",
13
+ "videoBlock",
14
+ "faceSensingBlock",
15
+ "ttsBlock",
16
+ "translationBlock",
17
+ ])
18
+
19
+ export default class Style {
20
+ static get cssContent() {
21
+ return cssContent
22
+ }
23
+
24
+ static makeCommonIcons() {
25
+ return [
26
+ SVG.setProps(
27
+ SVG.group([
28
+ SVG.el("path", {
29
+ d: "M20.8 3.7c-.4-.2-.9-.1-1.2.2-2 1.6-4.8 1.6-6.8 0-2.3-1.9-5.6-2.3-8.3-1v-.4c0-.6-.5-1-1-1s-1 .4-1 1v18.8c0 .5.5 1 1 1h.1c.5 0 1-.5 1-1v-6.4c1-.7 2.1-1.2 3.4-1.3 1.2 0 2.4.4 3.4 1.2 2.9 2.3 7 2.3 9.8 0 .3-.2.4-.5.4-.9V4.7c0-.5-.3-.9-.8-1zm-.3 10.2C18 16 14.4 16 11.9 14c-1.1-.9-2.5-1.4-4-1.4-1.2.1-2.3.5-3.4 1.1V4c2.5-1.4 5.5-1.1 7.7.6 2.4 1.9 5.7 1.9 8.1 0h.2l.1.1-.1 9.2z",
30
+ fill: "#45993d",
31
+ }),
32
+ SVG.el("path", {
33
+ d: "M20.6 4.8l-.1 9.1v.1c-2.5 2-6.1 2-8.6 0-1.1-.9-2.5-1.4-4-1.4-1.2.1-2.3.5-3.4 1.1V4c2.5-1.4 5.5-1.1 7.7.6 2.4 1.9 5.7 1.9 8.1 0h.2c0 .1.1.1.1.2z",
34
+ fill: "#4cbf56",
35
+ }),
36
+ ]),
37
+ {
38
+ id: "sb3-greenFlag",
39
+ },
40
+ ),
41
+
42
+ SVG.setProps(
43
+ SVG.el("polygon", {
44
+ points:
45
+ "6.6,0.5 13.12,0.5 19.5,6.6 19.5,13.12 13.12,19.5 6.6,19.5 0.5,13.12 0.5,6.6 ",
46
+ fill: "#ec5959",
47
+ stroke: "#b84848",
48
+ "stroke-linejoin": "round",
49
+ "stroke-linecap": "round",
50
+ }),
51
+ {
52
+ id: "sb3-stopSign",
53
+ },
54
+ ),
55
+
56
+ SVG.el("path", {
57
+ d: "M0 0L4 4L0 8Z",
58
+ fill: "#111",
59
+ id: "sb3-addInput",
60
+ }),
61
+ SVG.el("path", {
62
+ d: "M4 0L4 8L0 4Z",
63
+ fill: "#111",
64
+ id: "sb3-delInput",
65
+ }),
66
+
67
+ SVG.setProps(
68
+ SVG.group([
69
+ SVG.el("rect", {
70
+ x: "0",
71
+ y: "0",
72
+ width: "15",
73
+ height: "18",
74
+ fill: "#fff",
75
+ }),
76
+ SVG.el("rect", {
77
+ x: "1",
78
+ y: "1",
79
+ width: "13",
80
+ height: "4",
81
+ fill: "#ff920f",
82
+ }),
83
+ SVG.el("rect", {
84
+ x: "1",
85
+ y: "7",
86
+ width: "13",
87
+ height: "4",
88
+ fill: "#ff920f",
89
+ }),
90
+ SVG.el("rect", {
91
+ x: "1",
92
+ y: "13",
93
+ width: "13",
94
+ height: "4",
95
+ fill: "#ff920f",
96
+ }),
97
+ ]),
98
+ {
99
+ id: "sb3-list",
100
+ },
101
+ ),
102
+
103
+ SVG.el("image", {
104
+ id: "sb3-microbitBlock",
105
+ width: "40px",
106
+ height: "40px",
107
+ href: "data:image/png;base64,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",
108
+ }),
109
+ SVG.setProps(
110
+ SVG.group([
111
+ SVG.el("path", {
112
+ d: "M23.513 11.17h-.73c-.319 0-.576.213-.576.478v1.08h1.882v-1.08c0-.265-.258-.479-.576-.479",
113
+ fill: "#7C87A5",
114
+ }),
115
+ SVG.el("path", {
116
+ d: "M24.91 11.17h-.73c-.319 0-.576.213-.576.478v1.08h1.882v-1.08c0-.265-.258-.479-.576-.479z",
117
+ }),
118
+ SVG.el("path", {
119
+ d: "M9.54 11.17h-.728c-.32 0-.576.213-.576.478v1.08h1.882v-1.08c0-.265-.257-.479-.577-.479",
120
+ fill: "#7C87A5",
121
+ }),
122
+ SVG.el("path", {
123
+ d: "M10.938 11.17h-.729c-.32 0-.576.213-.576.478v1.08h1.882v-1.08c0-.265-.257-.479-.577-.479z",
124
+ }),
125
+ SVG.el("path", {
126
+ d: "M26.305 11.17h-.73c-.318 0-.574.213-.574.478v1.08h1.882v-1.08c0-.265-.26-.479-.578-.479",
127
+ fill: "#7C87A5",
128
+ }),
129
+ SVG.el("path", {
130
+ d: "M27.702 11.17h-.73c-.318 0-.574.213-.574.478v1.08h1.882v-1.08c0-.265-.26-.479-.578-.479z",
131
+ }),
132
+ SVG.el("path", {
133
+ d: "M29.101 11.17h-.73c-.318 0-.576.213-.576.478v1.08h1.882v-1.08c0-.265-.258-.479-.576-.479",
134
+ fill: "#7C87A5",
135
+ }),
136
+ SVG.el("path", {
137
+ d: "M30.498 11.17h-.73c-.318 0-.576.213-.576.478v1.08h1.882v-1.08c0-.265-.258-.479-.576-.479z",
138
+ }),
139
+ SVG.el("path", {
140
+ d: "M17.925 11.17h-.73c-.319 0-.577.213-.577.478v1.08h1.883v-1.08c0-.265-.258-.479-.576-.479",
141
+ fill: "#7C87A5",
142
+ }),
143
+ SVG.el("path", {
144
+ d: "M19.322 11.17h-.73c-.319 0-.577.213-.577.478v1.08h1.883v-1.08c0-.265-.258-.479-.576-.479z",
145
+ }),
146
+ SVG.el("path", {
147
+ d: "M20.717 11.17h-.73c-.319 0-.575.213-.575.478v1.08h1.883v-1.08c0-.265-.26-.479-.578-.479",
148
+ fill: "#7C87A5",
149
+ }),
150
+ SVG.el("path", {
151
+ d: "M22.114 11.17h-.73c-.319 0-.575.213-.575.478v1.08h1.883v-1.08c0-.265-.26-.479-.578-.479z",
152
+ }),
153
+ SVG.el("path", {
154
+ d: "M15.129 11.17H14.4c-.32 0-.576.213-.576.478v1.08h1.883v-1.08c0-.265-.258-.479-.578-.479",
155
+ fill: "#7C87A5",
156
+ }),
157
+ SVG.el("path", {
158
+ d: "M16.526 11.17h-.729c-.32 0-.576.213-.576.478v1.08h1.883v-1.08c0-.265-.258-.479-.578-.479z",
159
+ }),
160
+ SVG.el("path", {
161
+ d: "M12.335 11.17h-.73c-.319 0-.575.213-.575.478v1.08h1.882v-1.08c0-.265-.26-.479-.577-.479",
162
+ fill: "#7C87A5",
163
+ }),
164
+ SVG.el("path", {
165
+ d: "M13.732 11.17h-.73c-.319 0-.575.213-.575.478v1.08h1.883v-1.08c0-.265-.26-.479-.578-.479z",
166
+ }),
167
+ SVG.el("path", {
168
+ d: "M31.893 11.17h-.73c-.318 0-.574.213-.574.478v1.08h1.882v-1.08c0-.265-.26-.479-.578-.479",
169
+ fill: "#7C87A5",
170
+ }),
171
+ SVG.el("path", {
172
+ d: "M33.29 11.17h-.73c-.318 0-.574.213-.574.478v1.08h1.882v-1.08c0-.265-.26-.479-.578-.479z",
173
+ }),
174
+ SVG.el("path", {
175
+ d: "M33.647 28.407H15.765V12.533h17.882c.52 0 .941.445.941.992v13.89c0 .547-.421.992-.94.992",
176
+ fill: "#FFF",
177
+ }),
178
+ SVG.el("path", {
179
+ d: "M33.647 28.407H15.765V12.533h17.882c.52 0 .941.445.941.992v13.89c0 .547-.421.992-.94.992z",
180
+ stroke: "#7C87A5",
181
+ "stroke-width": ".893",
182
+ }),
183
+ SVG.el("path", {
184
+ d: "M15.765 28.407H5.412c-.52 0-.941-.445-.941-.993V16.502c0-2.19 1.686-3.969 3.764-3.969h15.06-3.766c-2.078 0-3.764 1.778-3.764 3.969v11.905z",
185
+ fill: "#FFF",
186
+ }),
187
+ SVG.el("path", {
188
+ d: "M15.765 28.407H5.412c-.52 0-.941-.445-.941-.993V16.502c0-2.19 1.686-3.969 3.764-3.969h15.06-3.766c-2.078 0-3.764 1.778-3.764 3.969v11.905z",
189
+ stroke: "#7C87A5",
190
+ "stroke-width": ".893",
191
+ }),
192
+ SVG.el("path", {
193
+ d: "M12.941 12.533H11.06c-1.559 0-2.824 1.334-2.824 2.977v1.986c0 .547.422.992.941.992H12c.52 0 .941-.445.941-.992V15.51c0-1.643 1.265-2.977 2.824-2.977h.94-3.764z",
194
+ fill: "#4C97FF",
195
+ }),
196
+ SVG.el("path", {
197
+ d: "M12.941 12.533H11.06c-1.559 0-2.824 1.334-2.824 2.977v1.986c0 .547.422.992.941.992H12c.52 0 .941-.445.941-.992V15.51c0-1.643 1.265-2.977 2.824-2.977h.94-3.764z",
198
+ stroke: "#3D79CC",
199
+ "stroke-width": ".893",
200
+ }),
201
+ SVG.el("path", {
202
+ stroke: "#7C87A5",
203
+ "stroke-width": ".893",
204
+ d: "M4.47 20.474h27.961l2.157 2.974",
205
+ }),
206
+ SVG.el("path", {
207
+ d: "M15.765 28.407H5.412c-.52 0-.941-.445-.941-.993V16.502c0-2.19 1.686-3.969 3.764-3.969h15.06-3.766c-2.078 0-3.764 1.778-3.764 3.969v11.905z",
208
+ stroke: "#7C87A5",
209
+ "stroke-width": ".893",
210
+ }),
211
+ SVG.el("path", {
212
+ d: "M21.307 18.964h-.73c-.319 0-.576.214-.576.479v1.08h1.882v-1.08c0-.265-.258-.479-.576-.479",
213
+ fill: "#7C87A5",
214
+ }),
215
+ SVG.el("path", {
216
+ d: "M21.307 18.964h-.73c-.319 0-.576.214-.576.479v1.08h1.882v-1.08c0-.265-.258-.479-.576-.479z",
217
+ }),
218
+ SVG.el("path", {
219
+ d: "M24.178 18.964h-.728c-.32 0-.576.214-.576.479v1.08h1.882v-1.08c0-.265-.258-.479-.578-.479",
220
+ fill: "#7C87A5",
221
+ }),
222
+ SVG.el("path", {
223
+ d: "M24.178 18.964h-.728c-.32 0-.576.214-.576.479v1.08h1.882v-1.08c0-.265-.258-.479-.578-.479z",
224
+ }),
225
+ SVG.el("path", {
226
+ d: "M27.051 18.964h-.73c-.318 0-.576.214-.576.479v1.08h1.882v-1.08c0-.265-.257-.479-.576-.479",
227
+ fill: "#7C87A5",
228
+ }),
229
+ SVG.el("path", {
230
+ d: "M27.051 18.964h-.73c-.318 0-.576.214-.576.479v1.08h1.882v-1.08c0-.265-.257-.479-.576-.479z",
231
+ }),
232
+ SVG.el("path", {
233
+ d: "M29.923 18.964h-.729c-.32 0-.576.214-.576.479v1.08h1.883v-1.08c0-.265-.258-.479-.578-.479",
234
+ fill: "#7C87A5",
235
+ }),
236
+ SVG.el("path", {
237
+ d: "M29.923 18.964h-.729c-.32 0-.576.214-.576.479v1.08h1.883v-1.08c0-.265-.258-.479-.578-.479z",
238
+ }),
239
+ SVG.el("path", {
240
+ d: "M33.647 28.407H15.765V20.47H32.43l2.157 2.978v3.966c0 .548-.421.993-.94.993",
241
+ fill: "#E6E7E8",
242
+ }),
243
+ SVG.el("path", {
244
+ d: "M33.647 28.407H15.765V20.47H32.43l2.157 2.978v3.966c0 .548-.421.993-.94.993z",
245
+ stroke: "#7C87A5",
246
+ "stroke-width": ".893",
247
+ }),
248
+ SVG.el("path", {
249
+ d: "M15.765 28.407H5.412c-.52 0-.941-.445-.941-.993V20.47h11.294v7.937z",
250
+ fill: "#E6E7E8",
251
+ }),
252
+ SVG.el("path", {
253
+ d: "M15.765 28.407H5.412c-.52 0-.941-.445-.941-.993V20.47h11.294v7.937z",
254
+ stroke: "#7C87A5",
255
+ "stroke-width": ".893",
256
+ }),
257
+ SVG.el("path", {
258
+ fill: "#E6E7E8",
259
+ d: "M19.53 24.438h11.294V20.47H19.529z",
260
+ }),
261
+ SVG.el("path", {
262
+ stroke: "#7C87A5",
263
+ "stroke-width": ".893",
264
+ d: "M19.53 24.438h11.294V20.47H19.529zm12.902-3.964l2.157-2.794",
265
+ }),
266
+ ]),
267
+ {
268
+ id: "sb3-wedoBlock",
269
+ fill: "none",
270
+ },
271
+ ),
272
+
273
+ SVG.setProps(
274
+ SVG.group([
275
+ SVG.el("rect", {
276
+ stroke: "#7C87A5",
277
+ fill: "#FFF",
278
+ x: ".5",
279
+ y: "3.59",
280
+ width: "28",
281
+ height: "25.81",
282
+ rx: "1",
283
+ }),
284
+ SVG.el("rect", {
285
+ stroke: "#7C87A5",
286
+ fill: "#E6E7E8",
287
+ x: "2.5",
288
+ y: ".5",
289
+ width: "24",
290
+ height: "32",
291
+ rx: "1",
292
+ }),
293
+ SVG.el("path", {
294
+ stroke: "#7C87A5",
295
+ fill: "#FFF",
296
+ d: "M2.5 14.5h24v13h-24z",
297
+ }),
298
+ SVG.el("path", {
299
+ d: "M14.5 10.5v4",
300
+ stroke: "#7C87A5",
301
+ fill: "#E6E7E8",
302
+ }),
303
+ SVG.el("rect", {
304
+ fill: "#414757",
305
+ x: "4.5",
306
+ y: "2.5",
307
+ width: "20",
308
+ height: "10",
309
+ rx: "1",
310
+ }),
311
+ SVG.el("rect", {
312
+ fill: "#7C87A5",
313
+ opacity: ".5",
314
+ x: "13.5",
315
+ y: "20.13",
316
+ width: "2",
317
+ height: "2",
318
+ rx: ".5",
319
+ }),
320
+ SVG.el("path", {
321
+ d: "M9.06 20.13h1.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1.5a1 1 0 0 1 0-2zM19.93 22.13h-1.51a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h1.5a1 1 0 0 1 .01 2zM8.23 17.5H5a.5.5 0 0 1-.5-.5v-2.5h6l-1.85 2.78a.51.51 0 0 1-.42.22zM18.15 18.85l-.5.5a.49.49 0 0 0-.15.36V20a.5.5 0 0 1-.5.5h-.5a.5.5 0 0 1-.5-.5.5.5 0 0 0-.5-.5h-2a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5H12a.5.5 0 0 1-.5-.5v-.29a.49.49 0 0 0-.15-.36l-.5-.5a.51.51 0 0 1 0-.71l1.51-1.49a.47.47 0 0 1 .35-.15h3.58a.47.47 0 0 1 .35.15l1.51 1.49a.51.51 0 0 1 0 .71zM10.85 23.45l.5-.5a.49.49 0 0 0 .15-.36v-.29a.5.5 0 0 1 .5-.5h.5a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5h.5a.5.5 0 0 1 .5.5v.29a.49.49 0 0 0 .15.36l.5.5a.5.5 0 0 1 0 .7l-1.51 1.5a.47.47 0 0 1-.35.15h-3.58a.47.47 0 0 1-.35-.15l-1.51-1.5a.5.5 0 0 1 0-.7z",
322
+ fill: "#7C87A5",
323
+ opacity: ".5",
324
+ }),
325
+ SVG.el("path", {
326
+ d: "M21.5 27.5h5v4a1 1 0 0 1-1 1h-4v-5z",
327
+ stroke: "#CC4C23",
328
+ fill: "#F15A29",
329
+ }),
330
+ ]),
331
+ {
332
+ transform: "translate(5.5 3.5)",
333
+ id: "sb3-ev3Block",
334
+ },
335
+ ),
336
+
337
+ SVG.setProps(
338
+ SVG.group([
339
+ SVG.el("path", {
340
+ d: "M35 28H5a1 1 0 0 1-1-1V12c0-.6.4-1 1-1h30c.5 0 1 .4 1 1v15c0 .5-.5 1-1 1z",
341
+ fill: "#fff",
342
+ }),
343
+ SVG.el("path", {
344
+ fill: "red",
345
+ d: "M4 25h32v2.7H4zm9-1h-2.2a1 1 0 0 1-1-1v-9.7c0-.6.4-1 1-1H13c.6 0 1 .4 1 1V23c0 .6-.5 1-1 1z",
346
+ }),
347
+ SVG.el("path", {
348
+ fill: "red",
349
+ d: "M6.1 19.3v-2.2c0-.5.4-1 1-1h9.7c.5 0 1 .5 1 1v2.2c0 .5-.5 1-1 1H7.1a1 1 0 0 1-1-1z",
350
+ }),
351
+ SVG.el("circle", { fill: "red", cx: "22.8", cy: "18.2", r: "3.4" }),
352
+ SVG.el("circle", { fill: "red", cx: "30.6", cy: "18.2", r: "3.4" }),
353
+ SVG.el("path", { fill: "red", d: "M4.2 27h31.9v.7H4.2z" }),
354
+ SVG.el("circle", {
355
+ fill: "#e0e0e0",
356
+ cx: "22.8",
357
+ cy: "18.2",
358
+ r: "2.3",
359
+ }),
360
+ SVG.el("circle", {
361
+ fill: "#e0e0e0",
362
+ cx: "30.6",
363
+ cy: "18.2",
364
+ r: "2.3",
365
+ }),
366
+ SVG.el("path", {
367
+ fill: "#e0e0e0",
368
+ d: "M12.5 22.9h-1.2c-.3 0-.5-.2-.5-.5V14c0-.3.2-.5.5-.5h1.2c.3 0 .5.2.5.5v8.4c0 .3-.2.5-.5.5z",
369
+ }),
370
+ SVG.el("path", {
371
+ fill: "#e0e0e0",
372
+ d: "M7.2 18.7v-1.2c0-.3.2-.5.5-.5h8.4c.3 0 .5.2.5.5v1.2c0 .3-.2.5-.5.5H7.7c-.3 0-.5-.2-.5-.5zM4 26h32v2H4z",
373
+ }),
374
+ SVG.el("path", {
375
+ stroke: "#666",
376
+ "stroke-width": ".5",
377
+ d: "M35.2 27.9H4.8a1 1 0 0 1-1-1V12.1c0-.6.5-1 1-1h30.5c.5 0 1 .4 1 1V27a1 1 0 0 1-1.1.9z",
378
+ }),
379
+ SVG.el("path", {
380
+ stroke: "#666",
381
+ "stroke-width": ".5",
382
+ d: "M35.2 27.9H4.8a1 1 0 0 1-1-1V12.1c0-.6.5-1 1-1h30.5c.5 0 1 .4 1 1V27a1 1 0 0 1-1.1.9z",
383
+ }),
384
+ ]),
385
+ {
386
+ id: "sb3-makeymakeyBlock",
387
+ fill: "none",
388
+ },
389
+ ),
390
+ SVG.el("image", {
391
+ id: "sb3-gdxforBlock",
392
+ width: "40px",
393
+ height: "40px",
394
+ href: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAABAlBMVEUAAAABAQEAAAB9h6YAAAAAAAAAAAB8iKZ7iKaAjKvm5+h+iqhcXFxGR0d8iKbj5OV9iKZ8h6be3+Db3d19h6acnJ0AAAB7nrDh4uPh4uN9iabZ2tt9iKbX19nJycnExsZ8iKe+wMC7vL2Eka/g4ePU1dV8iKZ9iKZ9iKd+iKitra2RkZGLjo5wcHCLi7l0oqJV//9csdZ8h6WFkq//vwDm5+iEka79vgJ6iql9iaaHk6tgq9Btm71+iadmo8dzk7OCj6yAjKp/iqhiqc1qnsB4jKtgrNFwl7d1tLTgtCxpocN0krJ2j65ossWNtZSbt4LAulHWsDnasTTuvhXzvg9zk7TzqAfaAAAAMXRSTlMAJiLoFBwI8q4a+0c4M/nr3tnQwKxYDAnk2726tbGMh4J9dinXq56ddG9nT01ACwsDk/+seAAAAidJREFUWMPt2Olu2kAUhuE5NvuaBAhZm7TpvufgMXaBbmAghOzp/d9KD7RW6yaqPeL7YVV9/471aBgfCXnUH7ULNhtkF96qv1dgwwoxoM08cDsJcwfMdgwonoiJPRFjQXkscQM3Adhxk4NuJwkoDx0nSp5NDTiae958NEaBwzkvC4YYcOxx7fCoeJhnrwcBv7H9TklFm08R4JD5SEkiMg8B4IjXwsV1HgHAPu+EizsQcMbr2B0OufZz7X0NcIZSwC9+rD3nADI2/fCtrHEfAvZ8Liqp6PuIwZZO+ZmSnspcY8AZ55WU5xkElDwuK1Vm7xgFTjhfLud5AgPHAUvBGARKvYnnTXpp/gvAg9PLyykSPLt1nNszIHjuSOdAcNp1nO4UeYYXNzcX0UH62P+0AnjH8lgCgL8s/+uXzwZgrOV2JAMwxpIMwRjLHIyxzMEYyxyMWgAwYiHAzm99iLQ6eOJEul4d7Ea6WhG8W7rAE+fertHgVXp+clpB9Oet64M/wH2TKwI/FrRFTH6JIZ6NvmZpxoDtptlFULOtzGPWy+4/r//gvwKGgcC90NtTqIg2dIuyClaWDvTjKlDMLba4UaUMcIuVbd0gyiGwjGVlFuKWfkQZhEfSQnypd8mCvOHGvkA5quo6EQSs6yrlNumN3obs0KKGHJ70QD+hLOQMW7r0sFI5KJVeY+bGkr1JopKlEG0StXbrW/uvQGMookXLLPFAZYTMJju/7z6rRW1MZcnIAAAAAElFTkSuQmCC",
395
+ }),
396
+ SVG.el("image", {
397
+ id: "sb3-boostBlock",
398
+ width: "40px",
399
+ height: "40px",
400
+ href: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQBAMAAAB8P++eAAAAKlBMVEUAAAD///98h6Xm5+iVnrb/Zhq+w9L5hk73+Pnf4eSQmbLr7Ozo39vp184hSCf6AAAAAXRSTlMAQObYZgAAAOFJREFUSMftlDEOgjAUhonhAi1sLvIk7NDJDTYu0LhzBzcXruHoDTyFB/BCNi30KU3InzioSb++hAS+vPfKa5pEIpHvk7a8gpf8ISWINtlg4i7ZFOKVTBlqsUR+ItYZJG7VzQQgMqGYd7zWRArpULEAe5Q/J9JMj4rluC7uleNw7TFRXcoREDnlinjX57eUsvRTn8+AE0/6OKV0g5buYTTyWFFr/XAp3aDzed4yFJWnKbhPbtaXXohDNYlDJWz4zSxEokkkEjb496AiVtqAbIYgYNGWBmhgES+NX6SRSORfeAJMWajr95DdqQAAAABJRU5ErkJggg==",
401
+ }),
402
+ ]
403
+ }
404
+ static makeOriginalIcons() {
405
+ return [
406
+ ...Style.makeCommonIcons(),
407
+ SVG.setProps(
408
+ SVG.group([
409
+ SVG.el("path", {
410
+ d: "M12.71 2.44A2.41 2.41 0 0 1 12 4.16L8.08 8.08a2.45 2.45 0 0 1-3.45 0L.72 4.16A2.42 2.42 0 0 1 0 2.44 2.48 2.48 0 0 1 .71.71C1 .47 1.43 0 6.36 0s5.39.46 5.64.71a2.44 2.44 0 0 1 .71 1.73z",
411
+ fill: "#231f20",
412
+ opacity: ".1",
413
+ }),
414
+ SVG.el("path", {
415
+ d: "M6.36 7.79a1.43 1.43 0 0 1-1-.42L1.42 3.45a1.44 1.44 0 0 1 0-2c.56-.56 9.31-.56 9.87 0a1.44 1.44 0 0 1 0 2L7.37 7.37a1.43 1.43 0 0 1-1.01.42z",
416
+ fill: "#fff",
417
+ }),
418
+ ]),
419
+ {
420
+ id: "sb3-dropdownArrow",
421
+ transform: "scale(0.94413847364)", // 12 / 12.71
422
+ },
423
+ ),
424
+
425
+ SVG.setProps(
426
+ SVG.group([
427
+ SVG.el("path", {
428
+ d: "M22.68 12.2a1.6 1.6 0 0 1-1.27.63h-7.69a1.59 1.59 0 0 1-1.16-2.58l1.12-1.41a4.82 4.82 0 0 0-3.14-.77 4.31 4.31 0 0 0-2 .8A4.25 4.25 0 0 0 7.2 10.6a5.06 5.06 0 0 0 .54 4.62A5.58 5.58 0 0 0 12 17.74a2.26 2.26 0 0 1-.16 4.52A10.25 10.25 0 0 1 3.74 18a10.14 10.14 0 0 1-1.49-9.22 9.7 9.7 0 0 1 2.83-4.14A9.92 9.92 0 0 1 9.66 2.5a10.66 10.66 0 0 1 7.72 1.68l1.08-1.35a1.57 1.57 0 0 1 1.24-.6 1.6 1.6 0 0 1 1.54 1.21l1.7 7.37a1.57 1.57 0 0 1-.26 1.39z",
429
+ fill: "#3d79cc",
430
+ }),
431
+ SVG.el("path", {
432
+ d: "M21.38 11.83h-7.61a.59.59 0 0 1-.43-1l1.75-2.19a5.9 5.9 0 0 0-4.7-1.58 5.07 5.07 0 0 0-4.11 3.17A6 6 0 0 0 7 15.77a6.51 6.51 0 0 0 5 2.92 1.31 1.31 0 0 1-.08 2.62 9.3 9.3 0 0 1-7.35-3.82 9.16 9.16 0 0 1-1.4-8.37A8.51 8.51 0 0 1 5.71 5.4a8.76 8.76 0 0 1 4.11-1.92 9.71 9.71 0 0 1 7.75 2.07l1.67-2.1a.59.59 0 0 1 1 .21L22 11.08a.59.59 0 0 1-.62.75z",
433
+ fill: "#fff",
434
+ }),
435
+ ]),
436
+ {
437
+ id: "sb3-turnRight",
438
+ },
439
+ ),
440
+
441
+ SVG.setProps(
442
+ SVG.group([
443
+ SVG.el("path", {
444
+ d: "M20.34 18.21a10.24 10.24 0 0 1-8.1 4.22 2.26 2.26 0 0 1-.16-4.52 5.58 5.58 0 0 0 4.25-2.53 5.06 5.06 0 0 0 .54-4.62A4.25 4.25 0 0 0 15.55 9a4.31 4.31 0 0 0-2-.8 4.82 4.82 0 0 0-3.15.8l1.12 1.41A1.59 1.59 0 0 1 10.36 13H2.67a1.56 1.56 0 0 1-1.26-.63A1.54 1.54 0 0 1 1.13 11l1.72-7.43A1.59 1.59 0 0 1 4.38 2.4a1.57 1.57 0 0 1 1.24.6L6.7 4.35a10.66 10.66 0 0 1 7.72-1.68A9.88 9.88 0 0 1 19 4.81 9.61 9.61 0 0 1 21.83 9a10.08 10.08 0 0 1-1.49 9.21z",
445
+ fill: "#3d79cc",
446
+ }),
447
+ SVG.el("path", {
448
+ d: "M19.56 17.65a9.29 9.29 0 0 1-7.35 3.83 1.31 1.31 0 0 1-.08-2.62 6.53 6.53 0 0 0 5-2.92 6.05 6.05 0 0 0 .67-5.51 5.32 5.32 0 0 0-1.64-2.16 5.21 5.21 0 0 0-2.48-1A5.86 5.86 0 0 0 9 8.84L10.74 11a.59.59 0 0 1-.43 1H2.7a.6.6 0 0 1-.6-.75l1.71-7.42a.59.59 0 0 1 1-.21l1.67 2.1a9.71 9.71 0 0 1 7.75-2.07 8.84 8.84 0 0 1 4.12 1.92 8.68 8.68 0 0 1 2.54 3.72 9.14 9.14 0 0 1-1.33 8.36z",
449
+ fill: "#fff",
450
+ }),
451
+ ]),
452
+ {
453
+ id: "sb3-turnLeft",
454
+ },
455
+ ),
456
+
457
+ SVG.setProps(
458
+ SVG.group([
459
+ SVG.el("path", {
460
+ d: "M23.3 11c-.3.6-.9 1-1.5 1h-1.6c-.1 1.3-.5 2.5-1.1 3.6-.9 1.7-2.3 3.2-4.1 4.1-1.7.9-3.6 1.2-5.5.9-1.8-.3-3.5-1.1-4.9-2.3-.7-.7-.7-1.9 0-2.6.6-.6 1.6-.7 2.3-.2H7c.9.6 1.9.9 2.9.9s1.9-.3 2.7-.9c1.1-.8 1.8-2.1 1.8-3.5h-1.5c-.9 0-1.7-.7-1.7-1.7 0-.4.2-.9.5-1.2l4.4-4.4c.7-.6 1.7-.6 2.4 0L23 9.2c.5.5.6 1.2.3 1.8z",
461
+ fill: "#cf8b17",
462
+ }),
463
+ SVG.el("path", {
464
+ d: "M21.8 11h-2.6c0 1.5-.3 2.9-1 4.2-.8 1.6-2.1 2.8-3.7 3.6-1.5.8-3.3 1.1-4.9.8-1.6-.2-3.2-1-4.4-2.1-.4-.3-.4-.9-.1-1.2.3-.4.9-.4 1.2-.1 1 .7 2.2 1.1 3.4 1.1s2.3-.3 3.3-1c.9-.6 1.6-1.5 2-2.6.3-.9.4-1.8.2-2.8h-2.4c-.4 0-.7-.3-.7-.7 0-.2.1-.3.2-.4l4.4-4.4c.3-.3.7-.3.9 0L22 9.8c.3.3.4.6.3.9s-.3.3-.5.3z",
465
+ fill: "#fff",
466
+ }),
467
+ ]),
468
+ {
469
+ id: "sb3-loopArrow",
470
+ },
471
+ ),
472
+
473
+ SVG.setProps(
474
+ SVG.group([
475
+ SVG.el("path", {
476
+ d: "M28.456 21.675c-.009-.312-.087-.825-.256-1.702-.096-.495-.612-3.022-.753-3.73-.395-1.98-.76-3.92-1.142-6.113-.732-4.223-.693-6.05.344-6.527.502-.23 1.06-.081 1.842.35.413.227 2.181 1.365 2.07 1.296 1.993 1.243 3.463 1.775 4.928 1.549 1.527-.237 2.505-.06 2.877.618.348.635.015 1.416-.729 2.18-1.473 1.516-3.976 2.514-5.849 2.023-.822-.218-1.238-.464-2.38-1.266a9.737 9.737 0 0 0-.095-.066c.047.593.264 1.74.717 3.803.294 1.336 2.079 9.187 2.637 11.674l.002.012c.529 2.637-1.872 4.724-5.235 4.724-3.29 0-6.363-1.988-6.862-4.528-.53-2.64 1.873-4.734 5.233-4.734a8.411 8.411 0 0 1 2.65.437zM11.46 27.666c-.01-.319-.091-.84-.266-1.738-.09-.46-.595-2.937-.753-3.727-.39-1.96-.752-3.892-1.131-6.07-.732-4.224-.692-6.052.344-6.527.502-.23 1.06-.082 1.841.349.414.228 2.181 1.365 2.07 1.296 1.992 1.243 3.461 1.775 4.925 1.549 1.525-.24 2.504-.064 2.876.614.348.635.015 1.415-.728 2.18-1.474 1.517-3.977 2.513-5.847 2.017-.822-.218-1.237-.463-2.38-1.266a9.729 9.729 0 0 0-.094-.065c.047.593.264 1.74.717 3.802.294 1.337 2.078 9.19 2.636 11.675l.003.013c.517 2.638-1.884 4.732-5.234 4.732-3.286 0-6.359-1.993-6.87-4.54-.518-2.639 1.885-4.73 5.242-4.73.904 0 1.802.15 2.65.436z",
477
+ stroke: "#000",
478
+ "stroke-opacity": ".1",
479
+ }),
480
+ SVG.el("path", {
481
+ d: "M32.18 25.874C32.636 28.157 30.512 30 27.433 30c-3.07 0-5.923-1.843-6.372-4.126-.458-2.285 1.665-4.136 4.743-4.136.647 0 1.283.084 1.89.234a7 7 0 0 1 .938.302c.87-.02-.104-2.294-1.835-12.229-2.134-12.303 3.06-1.87 8.768-2.753 5.708-.885.076 4.82-3.65 3.844-3.724-.987-4.65-7.153.263 14.738zm-16.998 5.99C15.63 34.148 13.507 36 10.439 36c-3.068 0-5.92-1.852-6.379-4.136-.448-2.284 1.674-4.135 4.751-4.135 1.002 0 1.974.197 2.854.544.822-.055-.15-2.377-1.862-12.228-2.133-12.303 3.059-1.87 8.764-2.753 5.706-.894.076 4.821-3.648 3.834-3.723-.987-4.648-7.152.263 14.738z",
482
+ fill: "#FFF",
483
+ }),
484
+ ]),
485
+ {
486
+ id: "sb3-musicBlock",
487
+ fill: "none",
488
+ },
489
+ ),
490
+
491
+ SVG.setProps(
492
+ SVG.group([
493
+ SVG.el("path", {
494
+ d: "M8.753 34.602l-4.251 1.779 1.784-4.236c1.218-2.892 2.907-5.423 5.03-7.538L31.066 4.93c.846-.842 2.65-.41 4.032.967 1.38 1.375 1.816 3.173.97 4.015L16.318 29.59c-2.123 2.116-4.664 3.799-7.565 5.012",
495
+ fill: "#FFF",
496
+ }),
497
+ SVG.el("path", {
498
+ d: "M29.41 6.111s-4.45-2.379-8.202 5.771c-1.734 3.766-4.35 1.546-4.35 1.546",
499
+ }),
500
+ SVG.el("path", {
501
+ d: "M36.42 8.825c0 .463-.14.873-.432 1.164l-9.335 9.301c.282-.29.41-.668.41-1.12 0-.874-.507-1.963-1.406-2.868-1.362-1.358-3.147-1.8-4.002-.99L30.99 5.01c.844-.84 2.65-.41 4.035.96.898.904 1.396 1.982 1.396 2.855M10.515 33.774a23.74 23.74 0 0 1-1.764.83L4.5 36.382l1.786-4.235c.258-.604.529-1.186.833-1.757.69.183 1.449.625 2.109 1.282.659.658 1.102 1.412 1.287 2.102",
502
+ fill: "#4C97FF",
503
+ }),
504
+ SVG.el("path", {
505
+ d: "M36.498 8.748c0 .464-.141.874-.433 1.165l-19.742 19.68c-2.131 2.111-4.673 3.793-7.572 5.01L4.5 36.381l.974-2.317 1.925-.808c2.899-1.218 5.441-2.899 7.572-5.01l19.742-19.68c.292-.292.432-.702.432-1.165 0-.647-.27-1.4-.779-2.123.249.172.498.377.736.614.898.905 1.396 1.983 1.396 2.856",
506
+ fill: "#575E75",
507
+ opacity: ".15",
508
+ }),
509
+ SVG.el("path", {
510
+ d: "M18.45 12.831a.904.904 0 1 1-1.807 0 .904.904 0 0 1 1.807 0z",
511
+ fill: "#575E75",
512
+ }),
513
+ ]),
514
+ {
515
+ id: "sb3-penBlock",
516
+ stroke: "#575E75",
517
+ fill: "none",
518
+ "stroke-linejoin": "round",
519
+ },
520
+ ),
521
+
522
+ SVG.setProps(
523
+ SVG.group([
524
+ SVG.el("circle", {
525
+ opacity: 0.25,
526
+ cx: 32,
527
+ cy: 16,
528
+ r: 4.5,
529
+ }),
530
+ SVG.el("circle", {
531
+ opacity: 0.5,
532
+ cx: 32,
533
+ cy: 12,
534
+ r: 4.5,
535
+ }),
536
+ SVG.el("circle", {
537
+ opacity: 0.75,
538
+ cx: 32,
539
+ cy: 8,
540
+ r: 4.5,
541
+ }),
542
+ SVG.el("circle", {
543
+ cx: 32,
544
+ cy: 4,
545
+ r: 4.5,
546
+ }),
547
+ SVG.el("path", {
548
+ d: "M22.672 4.42l-6.172 4V6.1c0-2.01-1.563-3.6-3.5-3.6H4.1C2.076 2.5.5 4.076.5 6.1V14c0 1.927 1.584 3.512 3.6 3.6H13c1.902 0 3.5-1.653 3.5-3.6v-2.283l6.257 3.754.097.075c.02.02.098.054.146.054.267 0 .5-.217.5-.5V4.8c0 .037-.056-.094-.129-.243-.145-.242-.43-.299-.7-.137z",
549
+ fill: "#4D4D4D",
550
+ "stroke-linejoin": "round",
551
+ }),
552
+ ]),
553
+ {
554
+ id: "sb3-videoBlock",
555
+ stroke: "#000",
556
+ fill: "#FFF",
557
+ "stroke-opacity": 0.15,
558
+ },
559
+ ),
560
+
561
+ SVG.setProps(
562
+ SVG.group([
563
+ SVG.el("circle", {
564
+ cx: 8.35,
565
+ cy: 9.65,
566
+ r: 0.97,
567
+ fill: "#FFF",
568
+ }),
569
+ SVG.el("circle", {
570
+ cx: 14.19,
571
+ cy: 9.65,
572
+ r: 0.97,
573
+ fill: "#FFF",
574
+ }),
575
+ SVG.el("path", {
576
+ d: "M11.27 4.14c-3.94 0-7.13 3.19-7.13 7.13s3.19 7.13 7.13 7.13 7.13-3.19 7.13-7.13-3.19-7.13-7.13-7.13m0 1.3c3.22 0 5.84 2.61 5.84 5.84s-2.61 5.84-5.84 5.84-5.84-2.61-5.84-5.84 2.61-5.84 5.84-5.84",
577
+ fill: "#FFF",
578
+ }),
579
+ SVG.el("path", {
580
+ d: "M17.57 13.88c.57-.15 1.02-.6 1.17-1.17l.35-1.3c.16-.61 1.04-.61 1.2 0l.35 1.3c.15.57.6 1.02 1.18 1.17l1.3.35c.61.16.61 1.04 0 1.2l-1.3.35c-.57.15-1.02.6-1.18 1.17l-.35 1.3c-.17.62-1.04.62-1.2 0l-.35-1.3c-.15-.57-.6-1.02-1.17-1.17l-1.3-.35c-.61-.17-.61-1.04 0-1.2l1.3-.35Zm-16-11.43c.43-.12.76-.45.88-.88l.26-.98c.12-.46.78-.46.9 0l.26.98c.12.43.45.76.88.88l.98.26c.46.12.46.78 0 .9l-.98.26c-.43.11-.77.45-.88.88l-.26.98c-.12.46-.78.46-.9 0l-.26-.98a1.26 1.26 0 0 0-.88-.88l-.98-.26c-.46-.12-.46-.78 0-.9z",
581
+ fill: "#ffbf00",
582
+ "fill-rule": "evenodd",
583
+ stroke: "#0b8e69",
584
+ "stroke-miterlimit": "2",
585
+ "stroke-width": ".5",
586
+ }),
587
+ SVG.el("path", {
588
+ d: "M12.68 12.53c.2-.3.6-.38.9-.18s.38.6.18.9c-.56.83-1.41 1.26-2.48 1.26s-1.93-.43-2.48-1.26c-.2-.3-.12-.7.18-.9s.7-.12.9.18c.31.46.75.68 1.41.68s1.1-.22 1.41-.68Z",
589
+ fill: "#FFF",
590
+ }),
591
+ SVG.el("path", {
592
+ d: "M20.89 6.06a.57.57 0 0 1-.57-.57V2.2h-3.31c-.31 0-.57-.25-.57-.57s.25-.57.57-.57h3.88c.31 0 .57.25.57.57v3.86c0 .31-.25.57-.57.57M5.44 21.46H1.59a.57.57 0 0 1-.57-.57v-3.82c0-.31.25-.57.57-.57s.57.25.57.57v3.25h3.28c.31 0 .57.25.57.57s-.25.57-.57.57",
593
+ fill: "#0b8e69",
594
+ }),
595
+ ]),
596
+ {
597
+ id: "sb3-faceSensingBlock",
598
+ transform: "scale(1.67785234899 1.67785234899)", // 40 / 23.84
599
+ },
600
+ ),
601
+
602
+ SVG.setProps(
603
+ SVG.group([
604
+ SVG.el("path", {
605
+ d: "M25.644 20.5c-1.667 1.937-4.539 3.429-5.977 3.429a1.25 1.25 0 0 1-.557-.137c-.372-.186-.61-.542-.61-1.03 0-.105.017-.207.05-.308.076-.236.624-.986.727-1.173.27-.484.462-1.075.566-1.865A8.5 8.5 0 0 1 24 3.5h4a8.5 8.5 0 1 1 0 17h-2.356z",
606
+ fill: "#FFF",
607
+ }),
608
+ SVG.el("path", {
609
+ d: "M15.5 21.67c0-1.016-1.494-1.586-2.387-.782l-2.7 2.163A5.958 5.958 0 0 1 6.7 24.33h-.4c-1.035 0-1.8.69-1.8 1.573v4.235c0 .883.765 1.572 1.8 1.572h.4c1.458 0 2.754.423 3.82 1.287l2.598 2.161c.908.75 2.382.188 2.382-.876V21.67z",
610
+ fill: "#4D4D4D",
611
+ }),
612
+ ]),
613
+ {
614
+ id: "sb3-ttsBlock",
615
+ stroke: "#000",
616
+ "stroke-opacity": 0.15,
617
+ },
618
+ ),
619
+
620
+ SVG.el("image", {
621
+ id: "sb3-translateBlock",
622
+ width: "40px",
623
+ height: "40px",
624
+ href: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAA21BMVEUAAAAAAAAAAAAAAADS0tIAAABHR0cAAADX19cAAAAAAACkpKRqamq2traurq6WlpbV1dWEhITHx8fPz8/Ly8vDw8O9vb0AAABMTEz////Z2dlXXnVMl//g4ODu7u7m5ub4+PhPmf/x8fH09PT6+vri4uNRmv/r6+1uqv/0+P9Ynv/p8v+rrrphZ33S5f+51v9ho/+1uMKBhpfH3v+Wmqhrcoacxf+Pvv/KzNSgpLGLkKDd6/+rzf9npv/AwsuDtv98s/90rv9jpP9GieeOrtm5ubl2fI7Z4u56otk5hEFfAAAAGXRSTlMAJhgM1wYyHvIkEWpBhXhc5U+uybyhk0YvleQYgwAABDpJREFUWMPtmNl6mzAQhQMCBAYbvLX1GIwxi7e2TtosTdKk+/L+T1QBVoQtJHDby5yLROYTPzOagSM4e9az6oVUrDgKxh39//Bwb+QBkTZ2VL3hypYilKWicpY6gmWcTCbxIoSh0xHjOkZXA4m0rlGcrcBsslcSmrYq4qm2GczmE6Hms6A8W4GQHZ1BTxXweuTCErGz1TEEaTpLymML6HVq87VhIWPRs21yNu679guNXn9hOnWVMUwanzxG0yCTdYQQts195umwJmnUDSatFHQRPaVvljkl4CAuRlWrCfD9uiZEbR+ObrnjfRDhwHUtdAi0gK/vLtts+VqDVfIMjZSmLEycBuD1D4kK8MHc+Ju3/FFQaHdXc4rBU/8NiCE+OJyAIQKuz32qjA7O1xzwqMtiUETAXeRzinZcyoPgsPpDcco3q9WD729WhTI/e1itbriUzwwtqPI0Q5et4ZoA6SDj1pCWOeB44qJ88aOiIB8j/xMH5IiUJwG+jfyHPMCNH20FQEpkPGnbnBeFuI78Fd82VWJCeTyQCzHb3pMCb8VAQhxBCkPKkzf2Z9J9mR9dCxqb3tBO17EoTw4ky0f0VXSnUCGE6LDp1tvlwK0cyNQMJA1DlL3Px8TenvTjpcAN5cD7VVSsoR992c4oS+aGcuDbzxFBfVqvv5L/375DCzeUAXfnOW5TJHudffvdzg3FwPdZvnbX6/LXr+9t3ZCzAAaMNh/X9BdAWzcUm9T2vnrpk91QbqOhLEDeDZuNHkBSX94Nm7ciAJOWAkW8WZIDl1MikAD57ZwceJsDL0VAfsPJwgzzO5cHvsmBb2IJkAlhB5InntlXlJcc8MO00GMzsHTbsMJDdU+hOxIeCfKuXYQu7ZJ5oDmExwPjfAEvyZ9lGyDW9tOWMH6l1z4nLwjrQ572RRugAvMS57mq4MH7czq9Kgpz1QZoDcI4DsHrWUjw4E1JbLeTSZ5z2gLYMTTwBnaOEwBvS1Ke86UUyF7isKpLrIHkSvVGBORdUQx8nFb0KAUy38aSCO8I510hMrhrBOrGEFIYGToPZM+Fn+XwiraiAMh2Uwnb+3DAC9Z/t3TIA2W7MwZkYbH+uZIC+f0jD3z9+vXF05hIAJTtcK3TLIDnMSLnhqeZlDo8eksYqH/3UskWPz7aCuDTX3urMiA5ejHCp7+YV4W9gxBnMFJP/XRwKNT3IEhLZpIGQMp86seNY6LlutRQgrFr6dLPLyELjm44eemIWt6C+JP0A1HffCIm4GDEw2jvpNTxbIwQ0kUTUYUYkgYTSXfMBU1Ee+G6fSwkOlpA/RFcJCR2erRHkllKSjNWhdd+NQbqkJrgunyPhKBIprpeiZyLZtEeCRNWQdlUZPU8yF1yYJ1J1HGGEC5iknS8pN0tRtoDDzTSNDLpqjMu2s4b9fBZg/TcJVHjrA7GSl/JZz7rWbX6A0ZzUfwVEqfrAAAAAElFTkSuQmCC",
625
+ }),
626
+ ]
627
+ }
628
+
629
+ static makeHighContrastIcons() {
630
+ // Make sure to update the highContrastIcons set above!
631
+ return [
632
+ ...Style.makeCommonIcons(),
633
+ // https://github.com/scratchfoundation/scratch-gui/tree/beta/src/lib/themes/high-contrast/blocks-media
634
+ SVG.setProps(
635
+ SVG.group([
636
+ SVG.el("path", {
637
+ d: "M12.71 2.44A2.41 2.41 0 0 1 12 4.16L8.08 8.08a2.45 2.45 0 0 1-3.45 0L.72 4.16A2.42 2.42 0 0 1 0 2.44 2.48 2.48 0 0 1 .71.71C1 .47 1.43 0 6.36 0s5.39.46 5.64.71a2.44 2.44 0 0 1 .71 1.73z",
638
+ fill: "#231f20",
639
+ opacity: ".1",
640
+ }),
641
+ SVG.el("path", {
642
+ d: "M6.36 7.79a1.43 1.43 0 0 1-1-.42L1.42 3.45a1.44 1.44 0 0 1 0-2c.56-.56 9.31-.56 9.87 0a1.44 1.44 0 0 1 0 2L7.37 7.37a1.43 1.43 0 0 1-1.01.42z",
643
+ fill: "#000",
644
+ }),
645
+ ]),
646
+ {
647
+ id: "sb3-dropdownArrow-high-contrast",
648
+ transform: "scale(0.944)",
649
+ },
650
+ ),
651
+
652
+ SVG.setProps(
653
+ SVG.group([
654
+ SVG.el("path", {
655
+ d: "M22.68 12.2a1.6 1.6 0 0 1-1.27.63h-7.69a1.59 1.59 0 0 1-1.16-2.58l1.12-1.41a4.82 4.82 0 0 0-3.14-.77 4.31 4.31 0 0 0-2 .8A4.25 4.25 0 0 0 7.2 10.6a5.06 5.06 0 0 0 .54 4.62A5.58 5.58 0 0 0 12 17.74a2.26 2.26 0 0 1-.16 4.52A10.25 10.25 0 0 1 3.74 18a10.14 10.14 0 0 1-1.49-9.22 9.7 9.7 0 0 1 2.83-4.14A9.92 9.92 0 0 1 9.66 2.5a10.66 10.66 0 0 1 7.72 1.68l1.08-1.35a1.57 1.57 0 0 1 1.24-.6 1.6 1.6 0 0 1 1.54 1.21l1.7 7.37a1.57 1.57 0 0 1-.26 1.39z",
656
+ fill: "#000",
657
+ }),
658
+ SVG.el("path", {
659
+ d: "M21.38 11.83h-7.61a.59.59 0 0 1-.43-1l1.75-2.19a5.9 5.9 0 0 0-4.7-1.58 5.07 5.07 0 0 0-4.11 3.17A6 6 0 0 0 7 15.77a6.51 6.51 0 0 0 5 2.92 1.31 1.31 0 0 1-.08 2.62 9.3 9.3 0 0 1-7.35-3.82 9.16 9.16 0 0 1-1.4-8.37A8.51 8.51 0 0 1 5.71 5.4a8.76 8.76 0 0 1 4.11-1.92 9.71 9.71 0 0 1 7.75 2.07l1.67-2.1a.59.59 0 0 1 1 .21L22 11.08a.59.59 0 0 1-.62.75z",
660
+ fill: "#000",
661
+ }),
662
+ ]),
663
+ {
664
+ id: "sb3-turnRight-high-contrast",
665
+ },
666
+ ),
667
+ SVG.setProps(
668
+ SVG.group([
669
+ SVG.el("path", {
670
+ d: "M20.34 18.21a10.24 10.24 0 0 1-8.1 4.22 2.26 2.26 0 0 1-.16-4.52 5.58 5.58 0 0 0 4.25-2.53 5.06 5.06 0 0 0 .54-4.62A4.25 4.25 0 0 0 15.55 9a4.31 4.31 0 0 0-2-.8 4.82 4.82 0 0 0-3.15.8l1.12 1.41A1.59 1.59 0 0 1 10.36 13H2.67a1.56 1.56 0 0 1-1.26-.63A1.54 1.54 0 0 1 1.13 11l1.72-7.43A1.59 1.59 0 0 1 4.38 2.4a1.57 1.57 0 0 1 1.24.6L6.7 4.35a10.66 10.66 0 0 1 7.72-1.68A9.88 9.88 0 0 1 19 4.81 9.61 9.61 0 0 1 21.83 9a10.08 10.08 0 0 1-1.49 9.21z",
671
+ fill: "#000",
672
+ }),
673
+ SVG.el("path", {
674
+ d: "M19.56 17.65a9.29 9.29 0 0 1-7.35 3.83 1.31 1.31 0 0 1-.08-2.62 6.53 6.53 0 0 0 5-2.92 6.05 6.05 0 0 0 .67-5.51 5.32 5.32 0 0 0-1.64-2.16 5.21 5.21 0 0 0-2.48-1A5.86 5.86 0 0 0 9 8.84L10.74 11a.59.59 0 0 1-.43 1H2.7a.6.6 0 0 1-.6-.75l1.71-7.42a.59.59 0 0 1 1-.21l1.67 2.1a9.71 9.71 0 0 1 7.75-2.07 8.84 8.84 0 0 1 4.12 1.92 8.68 8.68 0 0 1 2.54 3.72 9.14 9.14 0 0 1-1.33 8.36z",
675
+ fill: "#000",
676
+ }),
677
+ ]),
678
+ {
679
+ id: "sb3-turnLeft-high-contrast",
680
+ },
681
+ ),
682
+ SVG.setProps(
683
+ SVG.group([
684
+ SVG.el("path", {
685
+ d: "M23.3 11c-.3.6-.9 1-1.5 1h-1.6c-.1 1.3-.5 2.5-1.1 3.6-.9 1.7-2.3 3.2-4.1 4.1-1.7.9-3.6 1.2-5.5.9-1.8-.3-3.5-1.1-4.9-2.3-.7-.7-.7-1.9 0-2.6.6-.6 1.6-.7 2.3-.2H7c.9.6 1.9.9 2.9.9s1.9-.3 2.7-.9c1.1-.8 1.8-2.1 1.8-3.5h-1.5c-.9 0-1.7-.7-1.7-1.7 0-.4.2-.9.5-1.2l4.4-4.4c.7-.6 1.7-.6 2.4 0L23 9.2c.5.5.6 1.2.3 1.8z",
686
+ fill: "#000",
687
+ }),
688
+ SVG.el("path", {
689
+ d: "M21.8 11h-2.6c0 1.5-.3 2.9-1 4.2-.8 1.6-2.1 2.8-3.7 3.6-1.5.8-3.3 1.1-4.9.8-1.6-.2-3.2-1-4.4-2.1-.4-.3-.4-.9-.1-1.2.3-.4.9-.4 1.2-.1 1 .7 2.2 1.1 3.4 1.1s2.3-.3 3.3-1c.9-.6 1.6-1.5 2-2.6.3-.9.4-1.8.2-2.8h-2.4c-.4 0-.7-.3-.7-.7 0-.2.1-.3.2-.4l4.4-4.4c.3-.3.7-.3.9 0L22 9.8c.3.3.4.6.3.9s-.3.3-.5.3z",
690
+ fill: "#000",
691
+ }),
692
+ ]),
693
+ {
694
+ id: "sb3-loopArrow-high-contrast",
695
+ },
696
+ ),
697
+
698
+ // https://github.com/scratchfoundation/scratch-gui/tree/beta/src/lib/themes/high-contrast/extensions
699
+ SVG.setProps(
700
+ SVG.group([
701
+ SVG.el("path", {
702
+ d: "M28.456 21.675c-.009-.312-.087-.825-.256-1.702-.096-.495-.612-3.022-.753-3.73-.395-1.98-.76-3.92-1.142-6.113-.732-4.223-.693-6.05.344-6.527.502-.23 1.06-.081 1.842.35.413.227 2.181 1.365 2.07 1.296 1.993 1.243 3.463 1.775 4.928 1.549 1.527-.237 2.505-.06 2.877.618.348.635.015 1.416-.729 2.18-1.473 1.516-3.976 2.514-5.849 2.023-.822-.218-1.238-.464-2.38-1.266a9.737 9.737 0 0 0-.095-.066c.047.593.264 1.74.717 3.803.294 1.336 2.079 9.187 2.637 11.674l.002.012c.529 2.637-1.872 4.724-5.235 4.724-3.29 0-6.363-1.988-6.862-4.528-.53-2.64 1.873-4.734 5.233-4.734a8.411 8.411 0 0 1 2.65.437zM11.46 27.666c-.01-.319-.091-.84-.266-1.738-.09-.46-.595-2.937-.753-3.727-.39-1.96-.752-3.892-1.131-6.07-.732-4.224-.692-6.052.344-6.527.502-.23 1.06-.082 1.841.349.414.228 2.181 1.365 2.07 1.296 1.992 1.243 3.461 1.775 4.925 1.549 1.525-.24 2.504-.064 2.876.614.348.635.015 1.415-.728 2.18-1.474 1.517-3.977 2.513-5.847 2.017-.822-.218-1.237-.463-2.38-1.266a9.729 9.729 0 0 0-.094-.065c.047.593.264 1.74.717 3.802.294 1.337 2.078 9.19 2.636 11.675l.003.013c.517 2.638-1.884 4.732-5.234 4.732-3.286 0-6.359-1.993-6.87-4.54-.518-2.639 1.885-4.73 5.242-4.73.904 0 1.802.15 2.65.436z",
703
+ stroke: "#000",
704
+ }),
705
+ SVG.el("path", {
706
+ d: "M32.18 25.874C32.636 28.157 30.512 30 27.433 30c-3.07 0-5.923-1.843-6.372-4.126-.458-2.285 1.665-4.136 4.743-4.136.647 0 1.283.084 1.89.234a7 7 0 0 1 .938.302c.87-.02-.104-2.294-1.835-12.229-2.134-12.303 3.06-1.87 8.768-2.753 5.708-.885.076 4.82-3.65 3.844-3.724-.987-4.65-7.153.263 14.738zm-16.998 5.99C15.63 34.148 13.507 36 10.439 36c-3.068 0-5.92-1.852-6.379-4.136-.448-2.284 1.674-4.135 4.751-4.135 1.002 0 1.974.197 2.854.544.822-.055-.15-2.377-1.862-12.228-2.133-12.303 3.059-1.87 8.764-2.753 5.706-.894.076 4.821-3.648 3.834-3.723-.987-4.648-7.152.263 14.738z",
707
+ fill: "#000",
708
+ }),
709
+ ]),
710
+ {
711
+ id: "sb3-musicBlock-high-contrast",
712
+ fill: "none",
713
+ },
714
+ ),
715
+ SVG.setProps(
716
+ SVG.group([
717
+ SVG.el("path", {
718
+ d: "M8.753 34.602l-4.251 1.779 1.784-4.236c1.218-2.892 2.907-5.423 5.03-7.538L31.066 4.93c.846-.842 2.65-.41 4.032.967 1.38 1.375 1.816 3.173.97 4.015L16.318 29.59c-2.123 2.116-4.664 3.799-7.565 5.012",
719
+ fill: "#FFF",
720
+ }),
721
+ SVG.el("path", {
722
+ d: "M29.41 6.111s-4.45-2.379-8.202 5.771c-1.734 3.766-4.35 1.546-4.35 1.546",
723
+ }),
724
+ SVG.el("path", {
725
+ d: "M36.42 8.825c0 .463-.14.873-.432 1.164l-9.335 9.301c.282-.29.41-.668.41-1.12 0-.874-.507-1.963-1.406-2.868-1.362-1.358-3.147-1.8-4.002-.99L30.99 5.01c.844-.84 2.65-.41 4.035.96.898.904 1.396 1.982 1.396 2.855M10.515 33.774a23.74 23.74 0 0 1-1.764.83L4.5 36.382l1.786-4.235c.258-.604.529-1.186.833-1.757.69.183 1.449.625 2.109 1.282.659.658 1.102 1.412 1.287 2.102",
726
+ fill: "#4C97FF",
727
+ }),
728
+ SVG.el("path", {
729
+ d: "M36.498 8.748c0 .464-.141.874-.433 1.165l-19.742 19.68c-2.131 2.111-4.673 3.793-7.572 5.01L4.5 36.381l.974-2.317 1.925-.808c2.899-1.218 5.441-2.899 7.572-5.01l19.742-19.68c.292-.292.432-.702.432-1.165 0-.647-.27-1.4-.779-2.123.249.172.498.377.736.614.898.905 1.396 1.983 1.396 2.856",
730
+ fill: "#0b8e69",
731
+ opacity: ".15",
732
+ }),
733
+ SVG.el("path", {
734
+ d: "M18.45 12.831a.904.904 0 1 1-1.807 0 .904.904 0 0 1 1.807 0z",
735
+ fill: "#0b8e69",
736
+ }),
737
+ ]),
738
+ {
739
+ id: "sb3-penBlock-high-contrast",
740
+ stroke: "#0b8e69",
741
+ fill: "none",
742
+ "stroke-linejoin": "round",
743
+ },
744
+ ),
745
+ SVG.setProps(
746
+ SVG.group([
747
+ SVG.el("circle", {
748
+ opacity: 0.25,
749
+ cx: 32,
750
+ cy: 16,
751
+ r: 4.5,
752
+ }),
753
+ SVG.el("circle", {
754
+ opacity: 0.5,
755
+ cx: 32,
756
+ cy: 12,
757
+ r: 4.5,
758
+ }),
759
+ SVG.el("circle", {
760
+ opacity: 0.75,
761
+ cx: 32,
762
+ cy: 8,
763
+ r: 4.5,
764
+ }),
765
+ SVG.el("circle", {
766
+ cx: 32,
767
+ cy: 4,
768
+ r: 4.5,
769
+ }),
770
+ SVG.el("path", {
771
+ d: "M22.672 4.42l-6.172 4V6.1c0-2.01-1.563-3.6-3.5-3.6H4.1C2.076 2.5.5 4.076.5 6.1V14c0 1.927 1.584 3.512 3.6 3.6H13c1.902 0 3.5-1.653 3.5-3.6v-2.283l6.257 3.754.097.075c.02.02.098.054.146.054.267 0 .5-.217.5-.5V4.8c0 .037-.056-.094-.129-.243-.145-.242-.43-.299-.7-.137z",
772
+ fill: "#000",
773
+ "stroke-linejoin": "round",
774
+ }),
775
+ ]),
776
+ {
777
+ id: "sb3-videoBlock-high-contrast",
778
+ stroke: "#0b8e69",
779
+ fill: "#FFF",
780
+ "stroke-opacity": 0.15,
781
+ },
782
+ ),
783
+ SVG.setProps(
784
+ SVG.group([
785
+ SVG.el("circle", {
786
+ fill: "#231f20",
787
+ cx: 8.35,
788
+ cy: 9.65,
789
+ r: 0.97,
790
+ }),
791
+ SVG.el("circle", {
792
+ fill: "#231f20",
793
+ cx: 14.19,
794
+ cy: 9.65,
795
+ r: 0.97,
796
+ }),
797
+ SVG.el("path", {
798
+ d: "M11.27 4.14c-3.94 0-7.13 3.19-7.13 7.13s3.19 7.13 7.13 7.13 7.13-3.19 7.13-7.13-3.19-7.13-7.13-7.13m0 1.3c3.22 0 5.84 2.61 5.84 5.84s-2.61 5.84-5.84 5.84-5.84-2.61-5.84-5.84 2.61-5.84 5.84-5.84",
799
+ fill: "#231f20",
800
+ }),
801
+ SVG.el("path", {
802
+ d: "M17.57 13.88c.57-.15 1.02-.6 1.17-1.17l.35-1.3c.16-.61 1.04-.61 1.2 0l.35 1.3c.15.57.6 1.02 1.18 1.17l1.3.35c.61.16.61 1.04 0 1.2l-1.3.35c-.57.15-1.02.6-1.18 1.17l-.35 1.3c-.17.62-1.04.62-1.2 0l-.35-1.3c-.15-.57-.6-1.02-1.17-1.17l-1.3-.35c-.61-.17-.61-1.04 0-1.2l1.3-.35Zm-16-11.43c.43-.12.76-.45.88-.88l.26-.98c.12-.46.78-.46.9 0l.26.98c.12.43.45.76.88.88l.98.26c.46.12.46.78 0 .9l-.98.26c-.43.11-.77.45-.88.88l-.26.98c-.12.46-.78.46-.9 0l-.26-.98a1.26 1.26 0 0 0-.88-.88l-.98-.26c-.46-.12-.46-.78 0-.9z",
803
+ fill: "#ffbf00",
804
+ "fill-rule": "evenodd",
805
+ stroke: "#0b8e69",
806
+ "stroke-miterlimit": "2",
807
+ "stroke-width": ".5",
808
+ }),
809
+ SVG.el("path", {
810
+ d: "M12.68 12.53c.2-.3.6-.38.9-.18s.38.6.18.9c-.56.83-1.41 1.26-2.48 1.26s-1.93-.43-2.48-1.26c-.2-.3-.12-.7.18-.9s.7-.12.9.18c.31.46.75.68 1.41.68s1.1-.22 1.41-.68Z",
811
+ fill: "#231f20",
812
+ }),
813
+ SVG.el("path", {
814
+ d: "M20.89 6.06a.57.57 0 0 1-.57-.57V2.2h-3.31c-.31 0-.57-.25-.57-.57s.25-.57.57-.57h3.88c.31 0 .57.25.57.57v3.86c0 .31-.25.57-.57.57M5.44 21.46H1.59a.57.57 0 0 1-.57-.57v-3.82c0-.31.25-.57.57-.57s.57.25.57.57v3.25h3.28c.31 0 .57.25.57.57s-.25.57-.57.57",
815
+ fill: "#0b8e69",
816
+ }),
817
+ ]),
818
+ {
819
+ id: "sb3-faceSensingBlock-high-contrast",
820
+ transform: "scale(1.67785234899 1.67785234899)", // 40 / 23.84
821
+ },
822
+ ),
823
+ SVG.setProps(
824
+ SVG.group([
825
+ SVG.el("path", {
826
+ d: "M25.644 20.5c-1.667 1.937-4.539 3.429-5.977 3.429a1.25 1.25 0 0 1-.557-.137c-.372-.186-.61-.542-.61-1.03 0-.105.017-.207.05-.308.076-.236.624-.986.727-1.173.27-.484.462-1.075.566-1.865A8.5 8.5 0 0 1 24 3.5h4a8.5 8.5 0 1 1 0 17h-2.356z",
827
+ fill: "#FFF",
828
+ stroke: "#0b8e69",
829
+ }),
830
+ SVG.el("path", {
831
+ d: "M15.5 21.67c0-1.016-1.494-1.586-2.387-.782l-2.7 2.163A5.958 5.958 0 0 1 6.7 24.33h-.4c-1.035 0-1.8.69-1.8 1.573v4.235c0 .883.765 1.572 1.8 1.572h.4c1.458 0 2.754.423 3.82 1.287l2.598 2.161c.908.75 2.382.188 2.382-.876V21.67z",
832
+ fill: "#000",
833
+ }),
834
+ ]),
835
+ {
836
+ id: "sb3-ttsBlock-high-contrast",
837
+ "stroke-opacity": 0.15,
838
+ },
839
+ ),
840
+
841
+ // The original icon is in PNG, but the high contrast version uses SVG.
842
+ // For consistency we use PNG in both places.
843
+ // https://github.com/scratchfoundation/scratch-gui/blob/beta/src/lib/themes/high-contrast/extensions/translateIcon.svg
844
+ // Exported via Inkscape and compressed
845
+ SVG.el("image", {
846
+ id: "sb3-translateBlock-high-contrast",
847
+ width: "40px",
848
+ height: "40px",
849
+ href: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxoAAARjCAMAAADfFKLnAAABhlBMVEUAAAALjWkOj2oLjmkAAAAQj2wkmnkYlHILj2kLjmkAAAAAAABsu6VouaIJjmgimncAAAAAAAALjml0v6kAAAAAAAAAAAAATzhjt6A9pogVk28XlHAVk28ZlHEAAAAAAAAAAAANj2oAAAAJj2oAAAAAAAByvahsu6VVsZcqnXwAAAAAAAAAAAAMj2oQkWsAAAAPkGwAAABHqo4AAAAclnMcl3MKj2kXlHIXk3EAAAALj2gAAAD///8AAAB9w6+ExrONyrmHyLWrzv/3+/r8/v6Fx7VpqP/0+fh7s/9Ml//4/PvK59/4+//u9f/l8P/V5v9vrP9an/9Smv/o6OjMzMwrKysDAwPp8//e7P+w0f+axf9xrf9kpf9jpP9ho/9Nl//e3t7E5Nu+4dfT09OUzb2QzLuZmZlMrJKGhoYpnHxlZWVgYGBCQkINDQ30+P/J4P/D3P+11P+Nvf90rv9Jlvby8vLc3Nyl1cik1ce+vr6DxrKlpaWfn58xnJZBpJWJiYl+fn4fHx9PedmHAAAAPHRSTlMAd4OAxg/0wohyDv78+Tj16Ik6+ux+WAb79e7mvbCemW1rZDYXC/n39PTw39u8t7RVNvX11NLDm5qOWx0x5AFdAAAGd0lEQVR42uzbV3faQBCG4XGChMEU4wLujntv6WXXIUAwxd3Gvfea3nv+eQaBcgS5ztV8zwWMfsB7js7uiAAAAAAAAP6fgKfCwRMg1l49OBzqJgC5DLfZO+nQa7oNovq2Ia2rJwhArFZ/QpVI+Fspr57b8BKAUAEzrgpmXhSHjBmgvDGtQwQglKdWFaU27KnWQ0TekEvruvYwAYh08ym3ML0ei8V2NvlnfZofn98gorC2DBKASFYaq8md9MLW1kJ6O7lqp9Hj0qzqFgGIxGlYtjeUepPkwU6D20AZIJidRmxhZnbxtTMN8rpQBshlpzGdTL2dTzjSYJEnBCCVnYaaS++uqb9pAEhnpzGXXFycn1PZo2g0ejpiL410EYBQhTRepnZTs2vz776f+yYd/EG3QQAiWVd+s+nNV/yX+NEQVyXiDS0EIFKNmeAEZlRe9jyuysSDNQQgkrsvo4qOfOofvgoCEMloNWs/cgNTx9FT+7RqaUV/KI7PcFoFYgVG+7iMxpbK+19UwU+tfyENEC/SvK+yAw8cdxy5XO53AmmAdI8bD/qbxh13HMv67Ex/RhogXVfzvQ6DHGlc6L09fYk0AJgjjalrza7fIw2QrjtSksZXfXFycqm/IQ0QrrPK5XWmcbWylD+/vUIaIFtnldaFNjx+lbd8qNjhMq78QDQug7l6eAwE46pMxsSiCAhVpy1hYu7y9cKM300AMoXbOQ5XyEvMaAn6opbjKQ7jkw9L6SBZSOsxe66pqLSMNnIb/hG8TYFk3mqt66nMw4Gs2m+OEIBgE9zGcFtZHeNN/Qe3OwhAsu5HQ3fq2qiU0XG3Cd+GAwAAAAD8YQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2IMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUV9uBAAAAAAADI/7URVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWFPTgQAAAAAADyf20EVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhDw4EAAAAAID8XxtBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXYgwMBAAAAACD/10ZQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRX24EAAAAAAAMj/tRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYU9OBAAAAAAAPJ/bQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWEPDgQAAAAAgPxfG0FVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdiDAwEAAAAAIP/XRlBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFfbgQAAAAAAAyP+1EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVhT04EAAAAAAA8n9tBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYQ8OBAAAAACA/F8bQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV2oNDAgAAAABB/1/7wgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMArKwCvdMdAc1YAAAAASUVORK5CYII=",
850
+ }),
851
+ ]
852
+ }
853
+
854
+ /**
855
+ * @return the icon name with suffix, if a high contrast icon is defined
856
+ */
857
+ static iconName(name, iconStyle) {
858
+ if (iconStyle === "high-contrast" && highContrastIcons.has(name)) {
859
+ return `${name}-high-contrast`
860
+ }
861
+
862
+ return name
863
+ }
864
+
865
+ static makeStyle() {
866
+ const style = SVG.el("style")
867
+ style.appendChild(SVG.cdata(Style.cssContent))
868
+ return style
869
+ }
870
+
871
+ static get defaultFont() {
872
+ return "500 12pt Helvetica Neue, Helvetica, sans-serif"
873
+ }
874
+ static get commentFont() {
875
+ return "400 12pt Helvetica Neue, Helvetica, sans-serif"
876
+ }
877
+ }