@microbit/makecode-embed 0.0.0-alpha.7 → 0.2.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 (85) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +10 -6
  3. package/dist/cjs/index.d.ts +10 -0
  4. package/dist/cjs/index.js +25 -0
  5. package/dist/cjs/index.js.map +1 -0
  6. package/dist/cjs/package.json +1 -0
  7. package/dist/{react → cjs/react}/MakeCodeBlocksRendering.d.ts +2 -2
  8. package/dist/cjs/react/MakeCodeBlocksRendering.js +105 -0
  9. package/dist/cjs/react/MakeCodeBlocksRendering.js.map +1 -0
  10. package/dist/{react → cjs/react}/MakeCodeFrame.d.ts +2 -2
  11. package/dist/cjs/react/MakeCodeFrame.js +74 -0
  12. package/dist/cjs/react/MakeCodeFrame.js.map +1 -0
  13. package/dist/cjs/react/MakeCodeRenderBlocksProvider.d.ts +18 -0
  14. package/dist/cjs/react/MakeCodeRenderBlocksProvider.js +25 -0
  15. package/dist/cjs/react/MakeCodeRenderBlocksProvider.js.map +1 -0
  16. package/dist/{react → cjs/react}/index.d.ts +1 -1
  17. package/dist/cjs/react/index.js +23 -0
  18. package/dist/cjs/react/index.js.map +1 -0
  19. package/dist/cjs/react/useMakeCodeRenderBlocks.js +18 -0
  20. package/dist/cjs/react/useMakeCodeRenderBlocks.js.map +1 -0
  21. package/dist/cjs/vanilla/examples.d.ts +3 -0
  22. package/dist/cjs/vanilla/examples.js +20 -0
  23. package/dist/cjs/vanilla/examples.js.map +1 -0
  24. package/dist/cjs/vanilla/index.d.ts +6 -0
  25. package/dist/cjs/vanilla/index.js +14 -0
  26. package/dist/cjs/vanilla/index.js.map +1 -0
  27. package/dist/{vanilla → cjs/vanilla}/makecode-frame-driver.d.ts +3 -4
  28. package/dist/cjs/vanilla/makecode-frame-driver.js +638 -0
  29. package/dist/cjs/vanilla/makecode-frame-driver.js.map +1 -0
  30. package/dist/{vanilla → cjs/vanilla}/makecode-render-blocks.d.ts +3 -4
  31. package/dist/cjs/vanilla/makecode-render-blocks.js +217 -0
  32. package/dist/cjs/vanilla/makecode-render-blocks.js.map +1 -0
  33. package/dist/{vanilla → cjs/vanilla}/pxt.d.ts +88 -118
  34. package/dist/cjs/vanilla/pxt.js +36 -0
  35. package/dist/cjs/vanilla/pxt.js.map +1 -0
  36. package/dist/esm/index.d.ts +10 -0
  37. package/dist/esm/index.js +9 -0
  38. package/dist/esm/index.js.map +1 -0
  39. package/dist/esm/package.json +1 -0
  40. package/dist/esm/react/MakeCodeBlocksRendering.d.ts +24 -0
  41. package/dist/esm/react/MakeCodeBlocksRendering.js.map +1 -0
  42. package/dist/esm/react/MakeCodeFrame.d.ts +38 -0
  43. package/dist/esm/react/MakeCodeFrame.js.map +1 -0
  44. package/dist/esm/react/MakeCodeRenderBlocksProvider.d.ts +18 -0
  45. package/dist/{react → esm/react}/MakeCodeRenderBlocksProvider.js +5 -2
  46. package/dist/esm/react/MakeCodeRenderBlocksProvider.js.map +1 -0
  47. package/dist/esm/react/index.d.ts +8 -0
  48. package/dist/esm/react/index.js.map +1 -0
  49. package/dist/esm/react/useMakeCodeRenderBlocks.d.ts +6 -0
  50. package/dist/{react → esm/react}/useMakeCodeRenderBlocks.js +1 -1
  51. package/dist/esm/react/useMakeCodeRenderBlocks.js.map +1 -0
  52. package/dist/esm/vanilla/examples.d.ts +3 -0
  53. package/dist/esm/vanilla/examples.js.map +1 -0
  54. package/dist/esm/vanilla/index.d.ts +6 -0
  55. package/dist/{vanilla → esm/vanilla}/index.js +1 -0
  56. package/dist/esm/vanilla/index.js.map +1 -0
  57. package/dist/esm/vanilla/makecode-frame-driver.d.ts +264 -0
  58. package/dist/{vanilla → esm/vanilla}/makecode-frame-driver.js +1 -0
  59. package/dist/esm/vanilla/makecode-frame-driver.js.map +1 -0
  60. package/dist/esm/vanilla/makecode-render-blocks.d.ts +31 -0
  61. package/dist/{vanilla → esm/vanilla}/makecode-render-blocks.js +1 -2
  62. package/dist/esm/vanilla/makecode-render-blocks.js.map +1 -0
  63. package/dist/esm/vanilla/pxt.d.ts +845 -0
  64. package/dist/esm/vanilla/pxt.js.map +1 -0
  65. package/package.json +38 -9
  66. package/typedoc.json +14 -0
  67. package/dist/react/MakeCodeBlocksRendering.js.map +0 -1
  68. package/dist/react/MakeCodeFrame.js.map +0 -1
  69. package/dist/react/MakeCodeRenderBlocksProvider.d.ts +0 -8
  70. package/dist/react/MakeCodeRenderBlocksProvider.js.map +0 -1
  71. package/dist/react/index.js.map +0 -1
  72. package/dist/react/useMakeCodeRenderBlocks.js.map +0 -1
  73. package/dist/vanilla/examples.d.ts +0 -3
  74. package/dist/vanilla/examples.js.map +0 -1
  75. package/dist/vanilla/index.d.ts +0 -4
  76. package/dist/vanilla/index.js.map +0 -1
  77. package/dist/vanilla/makecode-frame-driver.js.map +0 -1
  78. package/dist/vanilla/makecode-render-blocks.js.map +0 -1
  79. package/dist/vanilla/pxt.js.map +0 -1
  80. /package/dist/{react → cjs/react}/useMakeCodeRenderBlocks.d.ts +0 -0
  81. /package/dist/{react → esm/react}/MakeCodeBlocksRendering.js +0 -0
  82. /package/dist/{react → esm/react}/MakeCodeFrame.js +0 -0
  83. /package/dist/{react → esm/react}/index.js +0 -0
  84. /package/dist/{vanilla → esm/vanilla}/examples.js +0 -0
  85. /package/dist/{vanilla → esm/vanilla}/pxt.js +0 -0
@@ -0,0 +1,638 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMakeCodeURL = exports.MakeCodeFrameDriver = void 0;
4
+ /**
5
+ * A driver for MakeCode.
6
+ *
7
+ * This stores state to correlate requests/responses to and from MakeCode.
8
+ */
9
+ class MakeCodeFrameDriver {
10
+ constructor(options, iframe) {
11
+ Object.defineProperty(this, "options", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: options
16
+ });
17
+ Object.defineProperty(this, "iframe", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: iframe
22
+ });
23
+ Object.defineProperty(this, "ready", {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: false
28
+ });
29
+ Object.defineProperty(this, "messageQueue", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: []
34
+ });
35
+ Object.defineProperty(this, "nextId", {
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true,
39
+ value: 0
40
+ });
41
+ Object.defineProperty(this, "pendingResponses", {
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true,
45
+ value: new Map()
46
+ });
47
+ Object.defineProperty(this, "_expectedOrigin", {
48
+ enumerable: true,
49
+ configurable: true,
50
+ writable: true,
51
+ value: void 0
52
+ });
53
+ Object.defineProperty(this, "expectedOrigin", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: () => {
58
+ if (this._expectedOrigin) {
59
+ return this._expectedOrigin;
60
+ }
61
+ const src = this.iframe()?.src;
62
+ if (src) {
63
+ this._expectedOrigin = new URL(src).origin;
64
+ return this._expectedOrigin;
65
+ }
66
+ return undefined;
67
+ }
68
+ });
69
+ Object.defineProperty(this, "listener", {
70
+ enumerable: true,
71
+ configurable: true,
72
+ writable: true,
73
+ value: (event) => {
74
+ const expectedOrigin = this.expectedOrigin();
75
+ if (!expectedOrigin || event.origin !== expectedOrigin) {
76
+ return;
77
+ }
78
+ const { data } = event;
79
+ if (typeof data !== 'object') {
80
+ return;
81
+ }
82
+ // I think 'editorcontentloaded' isn't useful here in controller scenarios but needs confirming.
83
+ // Might be the right option when waiting to render blocks or similar?
84
+ if (data.type === 'iframeclientready' ||
85
+ (data.type === 'pxthost' && data.action === 'editorcontentloaded')) {
86
+ this.ready = true;
87
+ this.messageQueue.forEach((m) => this.sendMessageNoReadyCheck(m));
88
+ this.messageQueue.length = 0;
89
+ }
90
+ if (data.type === 'pxteditor') {
91
+ // A reply to a message we sent. Some of these have useful data in a
92
+ // semi-standard resp field but others have useful top-level fields so we
93
+ // leave it to the caller to handle each message type.
94
+ const pendingResponse = this.pendingResponses.get(data.id);
95
+ if (pendingResponse) {
96
+ this.pendingResponses.delete(data.id);
97
+ const { resolve, reject } = pendingResponse;
98
+ if (data.success) {
99
+ resolve(data);
100
+ }
101
+ else {
102
+ reject(data.error ??
103
+ new Error('MakeCode response was not successful with no error specified'));
104
+ }
105
+ }
106
+ }
107
+ else if (data.type === 'pxthost') {
108
+ this.handleWorkspaceSync(data);
109
+ switch (data.action) {
110
+ case 'event': {
111
+ // Can't make these happen.
112
+ // Might require "allowSimTelemetry". But even then I can only see them fired with type: "pxtsim".
113
+ return;
114
+ }
115
+ case 'simevent': {
116
+ // So far as I can tell these don't fire.
117
+ // The logic in MakeCode doesn't seem to allow them in controller mode, only if allowParentController is set.
118
+ // In other scenarios either being true is sufficient.
119
+ return;
120
+ }
121
+ case 'tutorialevent': {
122
+ return this.options.onTutorialEvent?.(data);
123
+ }
124
+ case 'workspacesave': {
125
+ return this.options.onWorkspaceSave?.(data);
126
+ }
127
+ case 'workspaceevent': {
128
+ return this.options.onWorkspaceEvent?.(data.event);
129
+ }
130
+ case 'workspacereset': {
131
+ return this.options.onWorkspaceReset?.(data);
132
+ }
133
+ case 'workspacesync': {
134
+ return this.options.onWorkspaceSync?.(data);
135
+ }
136
+ case 'workspaceloaded': {
137
+ return this.options.onWorkspaceLoaded?.(data);
138
+ }
139
+ case 'workspacediagnostics': {
140
+ // So far as I can tell these don't fire.
141
+ // The logic in MakeCode doesn't seem to allow them in controller mode, only if allowParentController is set.
142
+ // In other scenarios either being true is sufficient.
143
+ return;
144
+ }
145
+ case 'editorcontentloaded': {
146
+ return this.options.onEditorContentLoaded?.(data);
147
+ }
148
+ case 'projectcloudstatus': {
149
+ // Requesting cloud status likely only works on the same domain as MakeCode
150
+ // so isn't implemented.
151
+ return;
152
+ }
153
+ }
154
+ }
155
+ else if ('download' in data) {
156
+ // Native app oriented event that doesn't have a 'type' field.
157
+ this.options.onDownload?.({
158
+ name: data.name,
159
+ hex: data.download,
160
+ });
161
+ }
162
+ else if ('save' in data) {
163
+ // Native app oriented event that doesn't have a 'type' field.
164
+ this.options.onSave?.({
165
+ name: data.name,
166
+ hex: data.save,
167
+ });
168
+ }
169
+ else if ('cmd' in data) {
170
+ // Native app oriented event that doesn't have a 'type' field.
171
+ switch (data.cmd) {
172
+ case 'backtap':
173
+ // MakeCode seems to send this twice for a single click but there's little we can do here.
174
+ return this.options.onBack?.();
175
+ case 'backpress':
176
+ return this.options.onBackLongPress?.();
177
+ }
178
+ }
179
+ }
180
+ });
181
+ Object.defineProperty(this, "sendRequest", {
182
+ enumerable: true,
183
+ configurable: true,
184
+ writable: true,
185
+ value: (message) => {
186
+ message.response = true;
187
+ if (!message.id) {
188
+ message.id = (this.nextId++).toString();
189
+ }
190
+ const id = message.id;
191
+ const p = new Promise((resolve, reject) => {
192
+ this.pendingResponses.set(id, { resolve, reject, message });
193
+ });
194
+ this.sendMessage(message);
195
+ return p;
196
+ }
197
+ });
198
+ Object.defineProperty(this, "sendMessage", {
199
+ enumerable: true,
200
+ configurable: true,
201
+ writable: true,
202
+ value: (message) => {
203
+ if (this.ready) {
204
+ this.sendMessageNoReadyCheck(message);
205
+ }
206
+ else {
207
+ this.messageQueue.push(message);
208
+ }
209
+ }
210
+ });
211
+ Object.defineProperty(this, "sendMessageNoReadyCheck", {
212
+ enumerable: true,
213
+ configurable: true,
214
+ writable: true,
215
+ value: (message) => {
216
+ this.iframe()?.contentWindow?.postMessage(message, '*');
217
+ }
218
+ });
219
+ }
220
+ initialize() {
221
+ window.addEventListener('message', this.listener);
222
+ // If the iframe is already loaded this will ensure we still initialize correctly
223
+ this.iframe()?.contentWindow?.postMessage({
224
+ type: 'iframeclientready',
225
+ }, '*');
226
+ }
227
+ setOptions(options) {
228
+ this.options = options;
229
+ }
230
+ dispose() {
231
+ window.removeEventListener('message', this.listener);
232
+ }
233
+ async handleWorkspaceSync(event) {
234
+ let error = undefined;
235
+ try {
236
+ if (event.action === 'workspacesync') {
237
+ const projects = await this.options.initialProjects();
238
+ const { filters, searchBar, controllerId } = this.options;
239
+ // I think the MakeCode driver waits for ready here but that doesn't work with live MakeCode.
240
+ this.sendMessageNoReadyCheck({
241
+ ...event,
242
+ success: true,
243
+ projects,
244
+ editor: {
245
+ filters,
246
+ searchBar,
247
+ controllerId,
248
+ },
249
+ });
250
+ }
251
+ else if (event.action === 'workspacesave') {
252
+ this.options.onWorkspaceSave?.(event);
253
+ }
254
+ }
255
+ catch (e) {
256
+ error = e;
257
+ console.error(e);
258
+ }
259
+ finally {
260
+ if (event.response) {
261
+ this.sendMessageNoReadyCheck({
262
+ type: 'pxthost',
263
+ id: event.id,
264
+ success: !error,
265
+ error,
266
+ });
267
+ }
268
+ }
269
+ }
270
+ /**
271
+ * Switch the MakeCode to blocks mode.
272
+ *
273
+ * You can find the current mode in the project.
274
+ */
275
+ async switchBlocks() {
276
+ await this.sendRequest({
277
+ type: 'pxteditor',
278
+ action: 'switchblocks',
279
+ });
280
+ }
281
+ /**
282
+ * Switch the MakeCode to JavaScript mode.
283
+ *
284
+ * You can find the current mode in the project.
285
+ */
286
+ async switchJavascript() {
287
+ await this.sendRequest({
288
+ type: 'pxteditor',
289
+ action: 'switchjavascript',
290
+ });
291
+ }
292
+ /**
293
+ * Switch the MakeCode to JavaScript mode.
294
+ *
295
+ * You can find the current mode in the project.
296
+ */
297
+ async switchPython() {
298
+ await this.sendRequest({
299
+ type: 'pxteditor',
300
+ action: 'switchpython',
301
+ });
302
+ }
303
+ /**
304
+ * Start the simulator.
305
+ */
306
+ async startSimulator() {
307
+ await this.sendRequest({
308
+ type: 'pxteditor',
309
+ action: 'startsimulator',
310
+ });
311
+ }
312
+ /**
313
+ * Restarts the simulator.
314
+ */
315
+ async restartSimulator() {
316
+ await this.sendRequest({
317
+ type: 'pxteditor',
318
+ action: 'restartsimulator',
319
+ });
320
+ }
321
+ /**
322
+ * Stops the simulator.
323
+ */
324
+ async stopSimulator(options) {
325
+ await this.sendRequest({
326
+ type: 'pxteditor',
327
+ action: 'stopsimulator',
328
+ ...options,
329
+ });
330
+ }
331
+ /**
332
+ * Hides the simulator. The user can reverse this via the UI.
333
+ */
334
+ async hideSimulator() {
335
+ await this.sendRequest({
336
+ type: 'pxteditor',
337
+ action: 'hidesimulator',
338
+ });
339
+ }
340
+ /**
341
+ * Show the simulator. The user can reverse this via the UI.
342
+ */
343
+ async showSimulator() {
344
+ await this.sendRequest({
345
+ type: 'pxteditor',
346
+ action: 'showsimulator',
347
+ });
348
+ }
349
+ /**
350
+ * Closes the toolbox and similar UX.
351
+ */
352
+ async closeFlyout() {
353
+ await this.sendRequest({
354
+ type: 'pxteditor',
355
+ action: 'closeflyout',
356
+ });
357
+ }
358
+ /**
359
+ * Create a new project.
360
+ */
361
+ async newProject(options) {
362
+ await this.sendRequest({
363
+ type: 'pxteditor',
364
+ action: 'newproject',
365
+ options,
366
+ });
367
+ }
368
+ /**
369
+ * Import a project.
370
+ *
371
+ * The project needs to have a header.
372
+ * Otherwise consider `newProject`
373
+ */
374
+ async importProject(options) {
375
+ await this.sendRequest({
376
+ type: 'pxteditor',
377
+ action: 'importproject',
378
+ ...options,
379
+ });
380
+ }
381
+ /**
382
+ * Create a URL that can be used to import a project into MakeCode.
383
+ *
384
+ * This can be useful if MakeCode is embedded in one application but you want to be able to export to non-embedded MakeCode.
385
+ *
386
+ * The applications must be part of the same site as the process relies on shared client-side storage.
387
+ *
388
+ * The URL must be used immediately as it won't remain valid if another call is made.
389
+ */
390
+ async importExternalProject(options) {
391
+ const response = (await this.sendRequest({
392
+ type: 'pxteditor',
393
+ action: 'importexternalproject',
394
+ ...options,
395
+ }));
396
+ return response.resp;
397
+ }
398
+ /**
399
+ * Import a tutorial from markdown text.
400
+ *
401
+ * See also `startActivity`.
402
+ */
403
+ async importTutorial(options) {
404
+ await this.sendRequest({
405
+ type: 'pxteditor',
406
+ action: 'importtutorial',
407
+ ...options,
408
+ });
409
+ }
410
+ /**
411
+ * Open a MakeCode project.
412
+ */
413
+ async openHeader(headerId) {
414
+ await this.sendRequest({
415
+ type: 'pxteditor',
416
+ action: 'openheader',
417
+ headerId,
418
+ });
419
+ }
420
+ /**
421
+ * Undo.
422
+ */
423
+ async undo() {
424
+ await this.sendRequest({
425
+ type: 'pxteditor',
426
+ action: 'undo',
427
+ });
428
+ }
429
+ /**
430
+ * Redo.
431
+ */
432
+ async redo() {
433
+ await this.sendRequest({
434
+ type: 'pxteditor',
435
+ action: 'redo',
436
+ });
437
+ }
438
+ // It's confusingly different from https://makecode.microbit.org/blocks-embed#:~:text=Render%20Blocks%20Response%20message,as%20an%20image%20data%20source
439
+ // Would be good to see if it takes all those options in practice.
440
+ async renderBlocks(options) {
441
+ const result = (await this.sendRequest({
442
+ type: 'pxteditor',
443
+ action: 'renderblocks',
444
+ ...options,
445
+ }));
446
+ return result.resp;
447
+ }
448
+ async renderPython(options) {
449
+ const { resp } = (await this.sendRequest({
450
+ type: 'pxteditor',
451
+ action: 'renderpython',
452
+ ...options,
453
+ }));
454
+ return resp;
455
+ }
456
+ async renderXml(options) {
457
+ const { resp } = (await this.sendRequest({
458
+ type: 'pxteditor',
459
+ action: 'renderxml',
460
+ ...options,
461
+ }));
462
+ return resp;
463
+ }
464
+ /**
465
+ * Renders an individual block by type (e.g. basic_show_id) to an SVG data URI.
466
+ */
467
+ async renderByBlockId(options) {
468
+ const { resp } = (await this.sendRequest({
469
+ type: 'pxteditor',
470
+ action: 'renderbyblockid',
471
+ ...options,
472
+ }));
473
+ return resp;
474
+ }
475
+ async setScale({ scale }) {
476
+ await this.sendRequest({
477
+ type: 'pxteditor',
478
+ action: 'setscale',
479
+ scale,
480
+ });
481
+ }
482
+ /**
483
+ * See https://github.com/microsoft/pxt-microbit/issues/5456
484
+ *
485
+ * Tutorial tool sharing link ID from https:*makecode.com/tutorial-tool prefixed with 'S'
486
+ * path: 'S96773-99918-18806-19059',
487
+ *
488
+ * Built-in tutorial
489
+ * path: '/projects/rock-paper-scissors',
490
+ *
491
+ * GitHub repo (no trailing .md, no blob/main cruft, tag versions)
492
+ *
493
+ * You get a series of "tutorialevent" actions tracking load and progress
494
+ * which we'd need to add support for at least to error handle the load.
495
+ */
496
+ async startActivity(options) {
497
+ await this.sendRequest({
498
+ type: 'pxteditor',
499
+ action: 'startactivity',
500
+ ...options,
501
+ });
502
+ }
503
+ async saveProject() {
504
+ await this.sendRequest({
505
+ type: 'pxteditor',
506
+ action: 'saveproject',
507
+ });
508
+ }
509
+ async compile() {
510
+ await this.sendRequest({
511
+ type: 'pxteditor',
512
+ action: 'compile',
513
+ });
514
+ }
515
+ async unloadProject() {
516
+ await this.sendRequest({
517
+ type: 'pxteditor',
518
+ action: 'unloadproject',
519
+ });
520
+ }
521
+ async shareProject(options) {
522
+ const { resp } = (await this.sendRequest({
523
+ type: 'pxteditor',
524
+ action: 'shareproject',
525
+ ...options,
526
+ }));
527
+ return resp;
528
+ }
529
+ /**
530
+ * Change the language restriction (e.g. move to just JavaScript).
531
+ */
532
+ async setLanguageRestriction(restriction) {
533
+ await this.sendRequest({
534
+ type: 'pxteditor',
535
+ action: 'setlanguagerestriction',
536
+ restriction,
537
+ });
538
+ }
539
+ async getToolboxCategories(options) {
540
+ // Oddly the type seems to be for the resp field rather than the message
541
+ const { resp: { categories }, } = (await this.sendRequest({
542
+ type: 'pxteditor',
543
+ action: 'gettoolboxcategories',
544
+ ...options,
545
+ }));
546
+ return categories;
547
+ }
548
+ async toggleDebugSloMo(options) {
549
+ await this.sendRequest({
550
+ type: 'pxteditor',
551
+ action: 'toggletrace',
552
+ ...options,
553
+ });
554
+ }
555
+ async setDebugSlowMo(options) {
556
+ await this.sendRequest({
557
+ type: 'pxteditor',
558
+ action: 'settracestate',
559
+ ...options,
560
+ });
561
+ }
562
+ async toggleHighContrast() {
563
+ await this.sendRequest({
564
+ type: 'pxteditor',
565
+ action: 'togglehighcontrast',
566
+ });
567
+ }
568
+ async setHighContrast(on) {
569
+ await this.sendRequest({
570
+ type: 'pxteditor',
571
+ action: 'sethighcontrast',
572
+ on,
573
+ });
574
+ }
575
+ async toggleGreenScreen() {
576
+ await this.sendRequest({
577
+ type: 'pxteditor',
578
+ action: 'togglegreenscreen',
579
+ });
580
+ }
581
+ async setSimulatorFullScreen(enabled) {
582
+ await this.sendRequest({
583
+ type: 'pxteditor',
584
+ action: 'setsimulatorfullscreen',
585
+ enabled,
586
+ });
587
+ }
588
+ async print() {
589
+ await this.sendRequest({
590
+ type: 'pxteditor',
591
+ action: 'print',
592
+ });
593
+ }
594
+ async pair() {
595
+ await this.sendRequest({
596
+ type: 'pxteditor',
597
+ action: 'pair',
598
+ });
599
+ }
600
+ async info() {
601
+ const { resp } = (await this.sendRequest({
602
+ type: 'pxteditor',
603
+ action: 'info',
604
+ }));
605
+ return resp;
606
+ }
607
+ /**
608
+ * Import a file.
609
+ *
610
+ * This works with hex and mkcd files.
611
+ *
612
+ * TODO: Other types may also be supported.
613
+ */
614
+ importFile(options) {
615
+ this.sendMessage({
616
+ type: 'importfile',
617
+ ...options,
618
+ });
619
+ }
620
+ }
621
+ exports.MakeCodeFrameDriver = MakeCodeFrameDriver;
622
+ const createMakeCodeURL = (baseUrl, version, lang, controller, queryParams) => {
623
+ const url = new URL(baseUrl + (version ? `/${encodeURIComponent(version)}` : ''));
624
+ if (lang) {
625
+ url.searchParams.set('lang', lang);
626
+ }
627
+ if (controller) {
628
+ url.searchParams.set('controller', controller.toString());
629
+ }
630
+ if (queryParams) {
631
+ for (const [k, v] of Object.entries(queryParams)) {
632
+ url.searchParams.set(k, v);
633
+ }
634
+ }
635
+ return url.toString();
636
+ };
637
+ exports.createMakeCodeURL = createMakeCodeURL;
638
+ //# sourceMappingURL=makecode-frame-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makecode-frame-driver.js","sourceRoot":"","sources":["../../../src/vanilla/makecode-frame-driver.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * MakeCode handling that does not depend on React.
3
3
  */
4
- import { BlockLayout, Project } from './pxt.js';
4
+ import { BlockLayout, MakeCodeProject } from './pxt.js';
5
5
  export interface MakeCodeRenderBlocksOptions {
6
6
  disabled?: boolean;
7
7
  version?: string;
@@ -13,7 +13,7 @@ export interface MakeCodeRenderBlocksReturn {
13
13
  dispose: () => void;
14
14
  }
15
15
  export interface RenderBlocksRequest {
16
- code: string | Project;
16
+ code: string | MakeCodeProject;
17
17
  options?: {
18
18
  packageId?: string;
19
19
  package?: string;
@@ -28,5 +28,4 @@ export interface RenderBlocksResponse {
28
28
  width?: number;
29
29
  height?: number;
30
30
  }
31
- declare const createMakeCodeRenderBlocks: (options: MakeCodeRenderBlocksOptions) => MakeCodeRenderBlocksReturn;
32
- export default createMakeCodeRenderBlocks;
31
+ export declare const createMakeCodeRenderBlocks: (options: MakeCodeRenderBlocksOptions) => MakeCodeRenderBlocksReturn;