@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,217 @@
1
+ "use strict";
2
+ /**
3
+ * MakeCode handling that does not depend on React.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createMakeCodeRenderBlocks = void 0;
7
+ const disposedMessage = 'Disposed';
8
+ const makecodeFailedToLoadMessage = 'Failed to load MakeCode to render blocks.';
9
+ const createMakeCodeRenderBlocks = (options) => {
10
+ const defaultedOptions = {
11
+ ...options,
12
+ };
13
+ const makecodeOrigin = 'https://makecode.microbit.org';
14
+ let iframe;
15
+ let status = 'loading';
16
+ const requestStatus = {
17
+ nextRequest: 0,
18
+ pendingRequests: {},
19
+ };
20
+ const pendingRequests = requestStatus.pendingRequests;
21
+ const failAllPending = (errorMessage) => {
22
+ Object.keys(requestStatus.pendingRequests).forEach((k) => {
23
+ const { promise } = pendingRequests[k];
24
+ delete pendingRequests[k];
25
+ promise.reject(errorMessage);
26
+ });
27
+ };
28
+ const sendPendingIfReady = () => {
29
+ if (status === 'ready') {
30
+ // Possible that dispose has been called by the time we process the message,
31
+ // in which case do nothing.
32
+ if (iframe) {
33
+ Object.values(pendingRequests).forEach((rr) => ensureMessageSent(rr));
34
+ }
35
+ }
36
+ else if (status === 'error') {
37
+ failAllPending(makecodeFailedToLoadMessage);
38
+ }
39
+ else if (status === 'disabled') {
40
+ failAllPending('renderBlocks will always fail when explicitly disabled');
41
+ }
42
+ else {
43
+ // We're loading, we'll send these when done.
44
+ }
45
+ };
46
+ const ensureMessageSent = (rr) => {
47
+ if (!rr.sent) {
48
+ rr.sent = true;
49
+ const { req } = rr;
50
+ iframe.contentWindow.postMessage(req, makecodeOrigin);
51
+ }
52
+ };
53
+ const findBestCode = (code, ignoreBlocks) => {
54
+ if (typeof code === 'string') {
55
+ return { code, type: 'text' };
56
+ }
57
+ if (code.text) {
58
+ const blocks = code.text['main.blocks'];
59
+ const text = code.text['main.ts'];
60
+ if (blocks && !ignoreBlocks) {
61
+ return {
62
+ code: blocks,
63
+ type: 'blocks',
64
+ };
65
+ }
66
+ if (text) {
67
+ return {
68
+ code: text,
69
+ type: 'text',
70
+ };
71
+ }
72
+ }
73
+ return { code: '', type: 'text' };
74
+ };
75
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
76
+ let errorTimeout;
77
+ const handleMessage = (ev) => {
78
+ const msg = ev.data;
79
+ if (ev.source !== iframe?.contentWindow || msg.source !== 'makecode') {
80
+ return;
81
+ }
82
+ switch (msg.type) {
83
+ case 'renderready': {
84
+ window.clearTimeout(errorTimeout);
85
+ status = 'ready';
86
+ sendPendingIfReady();
87
+ break;
88
+ }
89
+ case 'renderblocks': {
90
+ const id = msg.id;
91
+ const matchingRequest = pendingRequests[id];
92
+ if (!matchingRequest) {
93
+ return;
94
+ }
95
+ const result = msg;
96
+ // This currently happens for extension blocks.
97
+ // We retry with text based rendering.
98
+ // MakeCode beta appears to do this internally.
99
+ if (!result.error &&
100
+ !result.width &&
101
+ !result.height &&
102
+ !result.svg &&
103
+ !result.uri) {
104
+ if (matchingRequest.type === 'blocks') {
105
+ matchingRequest.sent = false;
106
+ matchingRequest.type = 'text';
107
+ matchingRequest.req.code = findBestCode(matchingRequest.input, true).code;
108
+ ensureMessageSent(matchingRequest);
109
+ return;
110
+ }
111
+ else {
112
+ result.error = 'Internal MakeCode failure.';
113
+ }
114
+ }
115
+ delete pendingRequests[id];
116
+ if (result.error) {
117
+ matchingRequest.promise.reject(result.error);
118
+ }
119
+ else {
120
+ matchingRequest.promise.resolve(msg);
121
+ }
122
+ break;
123
+ }
124
+ }
125
+ };
126
+ return {
127
+ initialize: () => {
128
+ if (options.disabled) {
129
+ return;
130
+ }
131
+ window.addEventListener('message', handleMessage);
132
+ iframe = createIframe(makecodeOrigin, defaultedOptions);
133
+ errorTimeout = setTimeout(() => {
134
+ failAllPending(makecodeFailedToLoadMessage);
135
+ status = 'error';
136
+ }, 30000);
137
+ },
138
+ dispose: () => {
139
+ window.clearTimeout(errorTimeout);
140
+ window.removeEventListener('message', handleMessage);
141
+ if (iframe && iframe.parentNode) {
142
+ iframe.parentNode.removeChild(iframe);
143
+ }
144
+ iframe = undefined;
145
+ failAllPending(disposedMessage);
146
+ },
147
+ renderBlocks: (req) => {
148
+ const id = requestStatus.nextRequest++ + '';
149
+ const { code, type } = findBestCode(req.code);
150
+ const makecodeRequest = {
151
+ id,
152
+ code,
153
+ type: 'renderblocks',
154
+ options: {
155
+ ...req.options,
156
+ // To include files to filesystem
157
+ assets: typeof req.code === 'object' ? req.code.text : undefined,
158
+ package: defaultPackageFromDependencies(req),
159
+ },
160
+ };
161
+ return new Promise((resolve, reject) => {
162
+ pendingRequests[id] = {
163
+ type,
164
+ input: req.code,
165
+ sent: false,
166
+ req: makecodeRequest,
167
+ promise: { resolve, reject },
168
+ };
169
+ sendPendingIfReady();
170
+ });
171
+ },
172
+ };
173
+ };
174
+ exports.createMakeCodeRenderBlocks = createMakeCodeRenderBlocks;
175
+ function defaultPackageFromDependencies(req) {
176
+ // Package can encode the extensions used in a comma separated list in this format:
177
+ // automationbit=github:pimoroni/pxt-automationbit#v0.0.2
178
+ // We can find that list from the JSON passed (but not from blocks or text)
179
+ const _package = req.options && req.options.package ? req.options.package : undefined;
180
+ if (typeof _package === 'undefined' &&
181
+ typeof req.code === 'object' &&
182
+ req.code.text['pxt.json']) {
183
+ const parsed = JSON.parse(req.code.text['pxt.json']);
184
+ if (typeof parsed === 'object') {
185
+ // Cope with extensions with spaces in their names. Otherwise pxt rejects
186
+ // adding the dependency even if it would in normal usage.
187
+ // https://github.com/microbit-foundation/classroom-management-tool/issues/463
188
+ const sanitizedName = (s) => s.replace(/[^a-zA-Z0-9_-]/g, '_');
189
+ const dependencies = parsed.dependencies || {};
190
+ const result = Object.keys(dependencies)
191
+ .map((name) => `${sanitizedName(name)}=${dependencies[name]}`)
192
+ .join(',');
193
+ return result;
194
+ }
195
+ }
196
+ return _package;
197
+ }
198
+ function createIframe(makecodeOrigin, { lang, version }) {
199
+ const query = `?render=1${lang ? `&lang=${encodeURIComponent(lang)}` : ''}`;
200
+ const src = [makecodeOrigin, version, '--docs'].filter(Boolean).join('/') + query;
201
+ const f = document.createElement('iframe');
202
+ f.style.position = 'absolute';
203
+ f.style.width = '1px';
204
+ f.style.height = '1px';
205
+ f.style.border = '0';
206
+ f.style.clip = 'rect(0 0 0 0)';
207
+ f.style.margin = '-1px';
208
+ f.style.padding = '0';
209
+ f.style.overflow = 'hidden';
210
+ f.style.whiteSpace = 'nowrap';
211
+ f.setAttribute('loading', 'eager');
212
+ f.setAttribute('aria-hidden', 'true');
213
+ f.src = src;
214
+ document.body.appendChild(f);
215
+ return f;
216
+ }
217
+ //# sourceMappingURL=makecode-render-blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makecode-render-blocks.js","sourceRoot":"","sources":["../../../src/vanilla/makecode-render-blocks.ts"],"names":[],"mappings":"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"}
@@ -16,14 +16,13 @@
16
16
  * Modifications are Copright (c) Micro:bit Educational Foundation and contributors
17
17
  * 2024.
18
18
  */
19
- export interface JsonScriptMeta {
20
- blocksWidth?: number;
21
- blocksHeight?: number;
22
- versions?: TargetVersions;
23
- }
24
19
  export interface InstallHeader {
25
20
  name: string;
26
- meta: JsonScriptMeta;
21
+ meta: {
22
+ blocksWidth?: number;
23
+ blocksHeight?: number;
24
+ versions?: TargetVersions;
25
+ };
27
26
  editor: string;
28
27
  board?: string;
29
28
  temporary?: boolean;
@@ -31,14 +30,20 @@ export interface InstallHeader {
31
30
  targetVersion: string;
32
31
  pubId: string;
33
32
  pubCurrent: boolean;
34
- pubVersions?: PublishVersion[];
33
+ pubVersions?: {
34
+ id: string;
35
+ type: 'snapshot' | 'permalink';
36
+ }[];
35
37
  pubPermalink?: string;
36
38
  anonymousSharePreference?: boolean;
37
39
  githubId?: string;
38
40
  githubTag?: string;
39
41
  githubCurrent?: boolean;
40
42
  tutorial?: TutorialOptions;
41
- tutorialCompleted?: TutorialCompletionInfo;
43
+ tutorialCompleted?: {
44
+ id: string;
45
+ steps: number;
46
+ };
42
47
  extensionUnderTest?: string;
43
48
  cloudUserId?: string;
44
49
  isSkillmapProject?: boolean;
@@ -58,12 +63,8 @@ export interface Header extends InstallHeader {
58
63
  isBackup?: boolean;
59
64
  _rev: string;
60
65
  }
61
- interface PublishVersion {
62
- id: string;
63
- type: 'snapshot' | 'permalink';
64
- }
65
66
  export type ScriptText = Record<string, string>;
66
- export interface Project {
67
+ export interface MakeCodeProject {
67
68
  header?: Header;
68
69
  text?: ScriptText;
69
70
  }
@@ -213,16 +214,16 @@ export interface EditorSyncState {
213
214
  searchBar?: boolean;
214
215
  }
215
216
  export interface EditorWorkspaceSyncResponse extends EditorMessageResponse {
216
- projects: Project[];
217
+ projects: MakeCodeProject[];
217
218
  editor?: EditorSyncState;
218
219
  controllerId?: string;
219
220
  }
220
221
  export interface EditorWorkspaceSaveRequest extends EditorMessageRequest {
221
222
  action: 'workspacesave';
222
- project: Project;
223
+ project: MakeCodeProject;
223
224
  }
224
225
  export interface ImportProjectOptions {
225
- project: Project;
226
+ project: MakeCodeProject;
226
227
  filters?: ProjectFilters;
227
228
  searchBar?: boolean;
228
229
  }
@@ -230,7 +231,7 @@ export interface EditorMessageImportProjectRequest extends EditorMessageRequest,
230
231
  action: 'importproject';
231
232
  }
232
233
  export interface ImportExternalProjectOptions {
233
- project: Project;
234
+ project: MakeCodeProject;
234
235
  }
235
236
  export interface EditorMessageImportExternalProjectRequest extends EditorMessageRequest, ImportExternalProjectOptions {
236
237
  action: 'importexternalproject';
@@ -395,7 +396,7 @@ export interface EditorMessageServiceWorkerRegisteredRequest extends EditorMessa
395
396
  export interface EditorMessageGetToolboxCategoriesResponse {
396
397
  categories: ToolboxCategoryDefinition[];
397
398
  }
398
- interface ProjectTemplate {
399
+ export interface ProjectTemplate {
399
400
  id: string;
400
401
  config: PackageConfig;
401
402
  files: Record<string, string>;
@@ -555,21 +556,12 @@ export interface ToolboxBlockDefinition {
555
556
  blockId?: string;
556
557
  }
557
558
  export type CloudStatus = 'none' | 'synced' | 'justSynced' | 'offline' | 'syncing' | 'conflict' | 'localEdits';
558
- interface TargetVersions {
559
- target: string;
560
- targetId?: string;
561
- targetWebsite?: string;
562
- pxt?: string;
563
- tag?: string;
564
- branch?: string;
565
- commits?: string;
566
- }
567
- type CodeCardType = 'file' | 'example' | 'codeExample' | 'tutorial' | 'side' | 'template' | 'package' | 'hw' | 'forumUrl' | 'forumExample' | 'sharedExample' | 'link';
568
- type CodeCardEditorType = 'blocks' | 'js' | 'py';
569
- interface Map<T> {
559
+ export type CodeCardType = 'file' | 'example' | 'codeExample' | 'tutorial' | 'side' | 'template' | 'package' | 'hw' | 'forumUrl' | 'forumExample' | 'sharedExample' | 'link';
560
+ export type CodeCardEditorType = 'blocks' | 'js' | 'py';
561
+ export interface DependencyMap<T> {
570
562
  [index: string]: T;
571
563
  }
572
- interface TargetVersions {
564
+ export interface TargetVersions {
573
565
  target: string;
574
566
  targetId?: string;
575
567
  targetWebsite?: string;
@@ -578,11 +570,7 @@ interface TargetVersions {
578
570
  branch?: string;
579
571
  commits?: string;
580
572
  }
581
- interface Size {
582
- width: number;
583
- height: number;
584
- }
585
- interface CodeCardAction {
573
+ export interface CodeCardAction {
586
574
  url: string;
587
575
  editor?: CodeCardEditorType;
588
576
  cardType?: CodeCardType;
@@ -590,20 +578,20 @@ interface CodeCardAction {
590
578
  /**
591
579
  * The schema for the pxt.json package files
592
580
  */
593
- interface PackageConfig {
581
+ export interface PackageConfig {
594
582
  name: string;
595
583
  version?: string;
596
584
  icon?: string;
597
585
  documentation?: string;
598
586
  targetVersions?: TargetVersions;
599
587
  description?: string;
600
- dependencies: Map<string>;
588
+ dependencies: DependencyMap<string>;
601
589
  license?: string;
602
590
  authors?: string[];
603
591
  files: string[];
604
592
  simFiles?: string[];
605
593
  testFiles?: string[];
606
- fileDependencies?: Map<string>;
594
+ fileDependencies?: DependencyMap<string>;
607
595
  preferredEditor?: string;
608
596
  languageRestriction?: LanguageRestriction;
609
597
  testDependencies?: Record<string, string>;
@@ -611,14 +599,21 @@ interface PackageConfig {
611
599
  public?: boolean;
612
600
  partial?: boolean;
613
601
  binaryonly?: boolean;
614
- platformio?: PlatformIOConfig;
602
+ platformio?: {
603
+ dependencies?: DependencyMap<string>;
604
+ };
615
605
  compileServiceVariant?: string;
616
606
  palette?: string[];
617
607
  paletteNames?: string[];
618
- screenSize?: Size;
608
+ screenSize?: {
609
+ width: number;
610
+ height: number;
611
+ };
619
612
  yotta?: YottaConfig;
620
- codal?: CodalConfig;
621
- npmDependencies?: Map<string>;
613
+ codal?: {
614
+ libraries?: string[];
615
+ };
616
+ npmDependencies?: DependencyMap<string>;
622
617
  card?: CodeCard;
623
618
  additionalFilePath?: string;
624
619
  additionalFilePaths?: string[];
@@ -647,9 +642,9 @@ interface PackageConfig {
647
642
  disableTargetTemplateFiles?: boolean;
648
643
  theme?: string | Record<string, string>;
649
644
  assetPack?: boolean;
650
- assetPacks?: Map<boolean>;
645
+ assetPacks?: DependencyMap<boolean>;
651
646
  }
652
- interface PackageExtension {
647
+ export interface PackageExtension {
653
648
  namespace?: string;
654
649
  group?: string;
655
650
  label?: string;
@@ -658,28 +653,21 @@ interface PackageExtension {
658
653
  url?: string;
659
654
  localUrl?: string;
660
655
  }
661
- interface PlatformIOConfig {
662
- dependencies?: Map<string>;
663
- }
664
- interface CompilationConfig {
665
- description: string;
666
- config: any;
667
- }
668
- interface CodalConfig {
669
- libraries?: string[];
670
- }
671
- interface YottaConfig {
672
- dependencies?: Map<string>;
656
+ export interface YottaConfig {
657
+ dependencies?: DependencyMap<string>;
673
658
  config?: any;
674
659
  /**
675
660
  * Overridable config flags
676
661
  */
677
662
  optionalConfig?: any;
678
- userConfigs?: CompilationConfig[];
663
+ userConfigs?: {
664
+ description: string;
665
+ config: any;
666
+ }[];
679
667
  configIsJustDefaults?: boolean;
680
668
  ignoreConflicts?: boolean;
681
669
  }
682
- interface CodeCard {
670
+ export interface CodeCard {
683
671
  name?: string;
684
672
  shortName?: string;
685
673
  title?: string;
@@ -726,65 +714,55 @@ interface CodeCard {
726
714
  className?: string;
727
715
  variant?: string;
728
716
  }
729
- type SnippetOutputType = 'blocks';
730
- type SnippetOutputBehavior = /*assumed default*/ 'merge' | 'replace';
731
- interface SnippetConfig {
717
+ export interface SnippetConfig {
732
718
  name: string;
733
719
  namespace: string;
734
720
  group?: string;
735
721
  label: string;
736
- outputType: SnippetOutputType;
737
- outputBehavior?: SnippetOutputBehavior;
722
+ outputType: 'blocks';
723
+ outputBehavior?: /*assumed default*/ 'merge' | 'replace';
738
724
  initialOutput?: string;
739
725
  questions: SnippetQuestions[];
740
726
  }
741
- type SnippetAnswerTypes = 'number' | 'text' | 'variableName' | 'dropdown' | 'spriteEditor' | 'yesno' | string;
742
- interface SnippetGoToOptions {
727
+ export type SnippetAnswerTypes = 'number' | 'text' | 'variableName' | 'dropdown' | 'spriteEditor' | 'yesno' | string;
728
+ export interface SnippetGoToOptions {
743
729
  question?: number;
744
- validate?: SnippetValidate;
730
+ validate?: {
731
+ regex?: {
732
+ token: string;
733
+ regex: string;
734
+ match?: SnippetParameters;
735
+ noMatch?: SnippetParameters;
736
+ };
737
+ };
745
738
  parameters?: SnippetParameters[];
746
739
  }
747
- interface SnippetParameters {
740
+ export interface SnippetParameters {
748
741
  token?: string;
749
742
  answer?: string;
750
743
  question: number;
751
744
  }
752
- interface SnippetInputAnswerSingular {
745
+ export type SnippetQuestionInput = {
746
+ label?: string;
747
+ } & ({
753
748
  answerToken: string;
754
749
  defaultAnswer: SnippetAnswerTypes;
755
- }
756
- interface SnippetInputAnswerPlural {
750
+ } | {
757
751
  answerTokens: string[];
758
752
  defaultAnswers: SnippetAnswerTypes[];
759
- }
760
- interface SnippetInputOtherType {
753
+ }) & ({
761
754
  type: string;
762
- }
763
- interface SnippetInputNumberType {
755
+ } | {
764
756
  type: 'number' | 'positionPicker';
765
757
  max?: number;
766
758
  min?: number;
767
- }
768
- interface SnippetInputDropdownType {
759
+ } | {
769
760
  type: 'dropdown';
770
761
  options: Record<string, string>;
771
- }
772
- interface SnippetInputYesNoType {
762
+ } | {
773
763
  type: 'yesno';
774
- }
775
- type SnippetQuestionInput = {
776
- label?: string;
777
- } & (SnippetInputAnswerSingular | SnippetInputAnswerPlural) & (SnippetInputOtherType | SnippetInputNumberType | SnippetInputDropdownType | SnippetInputYesNoType);
778
- interface SnippetValidateRegex {
779
- token: string;
780
- regex: string;
781
- match?: SnippetParameters;
782
- noMatch?: SnippetParameters;
783
- }
784
- interface SnippetValidate {
785
- regex?: SnippetValidateRegex;
786
- }
787
- interface SnippetQuestions {
764
+ });
765
+ export interface SnippetQuestions {
788
766
  title: string;
789
767
  output?: string;
790
768
  outputConditionalOnAnswer?: string;
@@ -793,7 +771,7 @@ interface SnippetQuestions {
793
771
  inputs: SnippetQuestionInput[];
794
772
  hint?: string;
795
773
  }
796
- interface TutorialOptions {
774
+ export interface TutorialOptions {
797
775
  tutorial?: string;
798
776
  tutorialName?: string;
799
777
  tutorialReportId?: string;
@@ -820,7 +798,7 @@ interface TutorialOptions {
820
798
  globalValidationConfig?: CodeValidationConfig;
821
799
  simTheme?: Partial<PackageConfig>;
822
800
  }
823
- interface TutorialStepInfo {
801
+ export interface TutorialStepInfo {
824
802
  showHint?: boolean;
825
803
  showDialog?: boolean;
826
804
  resetDiff?: boolean;
@@ -833,19 +811,14 @@ interface TutorialStepInfo {
833
811
  localBlockConfig?: TutorialBlockConfig;
834
812
  localValidationConfig?: CodeValidationConfig;
835
813
  }
836
- interface TutorialCompletionInfo {
837
- id: string;
838
- steps: number;
839
- }
840
- interface TutorialBlockConfigEntry {
841
- blockId?: string;
842
- xml?: string;
843
- }
844
- interface TutorialBlockConfig {
814
+ export interface TutorialBlockConfig {
845
815
  md?: string;
846
- blocks?: TutorialBlockConfigEntry[];
816
+ blocks?: {
817
+ blockId?: string;
818
+ xml?: string;
819
+ }[];
847
820
  }
848
- interface TutorialMetadata {
821
+ export interface TutorialMetadata {
849
822
  activities?: boolean;
850
823
  explicitHints?: boolean;
851
824
  flyoutOnly?: boolean;
@@ -857,19 +830,16 @@ interface TutorialMetadata {
857
830
  autoexpandOff?: boolean;
858
831
  preferredEditor?: string;
859
832
  }
860
- interface TutorialActivityInfo {
833
+ export interface TutorialActivityInfo {
861
834
  name: string;
862
835
  step: number;
863
836
  }
864
- interface CodeValidatorBaseProperties {
865
- enabled?: string;
866
- markers?: string;
867
- }
868
- interface CodeValidatorMetadata {
869
- validatorType: string;
870
- properties: CodeValidatorBaseProperties;
871
- }
872
- interface CodeValidationConfig {
873
- validatorsMetadata: CodeValidatorMetadata[];
837
+ export interface CodeValidationConfig {
838
+ validatorsMetadata: {
839
+ validatorType: string;
840
+ properties: {
841
+ enabled?: string;
842
+ markers?: string;
843
+ };
844
+ }[];
874
845
  }
875
- export {};
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ /**
3
+ * MakeCode/pxt types needed for the iframe messages.
4
+ *
5
+ * These are substantially derived from the PXT project. The types are hard to use
6
+ * directly due to logical splits that make sense for MakeCode internally, but not
7
+ * for this interface, and TypeScript features that make them hard to reuse in a
8
+ * library context: namespaces and const enums.
9
+ *
10
+ * We've also extracted interfaces for the request parameters separately from the
11
+ * request metadata and corrected some types that don't appear to behave as
12
+ * described.
13
+ *
14
+ * Original is Copyright (c) Microsoft Corporation
15
+ * MIT licensed: https://github.com/microsoft/pxt/blob/master/LICENSE
16
+ *
17
+ * Modifications are Copright (c) Micro:bit Educational Foundation and contributors
18
+ * 2024.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.BlockLayout = exports.FilterState = void 0;
22
+ var FilterState;
23
+ (function (FilterState) {
24
+ FilterState[FilterState["Hidden"] = 0] = "Hidden";
25
+ FilterState[FilterState["Visible"] = 1] = "Visible";
26
+ FilterState[FilterState["Disabled"] = 2] = "Disabled";
27
+ })(FilterState || (exports.FilterState = FilterState = {}));
28
+ var BlockLayout;
29
+ (function (BlockLayout) {
30
+ BlockLayout[BlockLayout["None"] = 0] = "None";
31
+ BlockLayout[BlockLayout["Align"] = 1] = "Align";
32
+ // Shuffle deprecated
33
+ BlockLayout[BlockLayout["Clean"] = 3] = "Clean";
34
+ BlockLayout[BlockLayout["Flow"] = 4] = "Flow";
35
+ })(BlockLayout || (exports.BlockLayout = BlockLayout = {}));
36
+ //# sourceMappingURL=pxt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pxt.js","sourceRoot":"","sources":["../../../src/vanilla/pxt.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AA6mBH,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,iDAAU,CAAA;IACV,mDAAW,CAAA;IACX,qDAAY,CAAA;AACd,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAED,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,6CAAQ,CAAA;IACR,+CAAS,CAAA;IACT,qBAAqB;IACrB,+CAAS,CAAA;IACT,6CAAQ,CAAA;AACV,CAAC,EANW,WAAW,2BAAX,WAAW,QAMtB"}
@@ -0,0 +1,10 @@
1
+ export { default as MakeCodeFrame, type MakeCodeFrameProps, } from './react/MakeCodeFrame.js';
2
+ export { default as useMakeCodeRenderBlocks, type UseMakeCodeRenderBlocksReturn, } from './react/useMakeCodeRenderBlocks.js';
3
+ export { MakeCodeRenderBlocksProvider } from './react/MakeCodeRenderBlocksProvider.js';
4
+ export { default as MakeCodeBlocksRendering, type MakeCodeBlocksRenderingProps, } from './react/MakeCodeBlocksRendering.js';
5
+ export { defaultMakeCodeProject, emptyMakeCodeProject, } from './vanilla/examples.js';
6
+ export { MakeCodeFrameDriver, createMakeCodeURL, } from './vanilla/makecode-frame-driver.js';
7
+ export { BlockLayout } from './vanilla/pxt.js';
8
+ export { createMakeCodeRenderBlocks } from './vanilla/makecode-render-blocks.js';
9
+ export type { MakeCodeRenderBlocksOptions, MakeCodeRenderBlocksReturn, RenderBlocksResponse, RenderBlocksRequest, } from './vanilla/makecode-render-blocks.js';
10
+ export type { CreateEvent, EditorContentLoadedRequest, EditorEvent, EditorMessageTutorialCompletedEventRequest, EditorMessageTutorialEventRequest, EditorMessageTutorialExitEventRequest, EditorMessageTutorialLoadedEventRequest, EditorMessageTutorialProgressEventRequest, EditorWorkspaceSaveRequest, EditorWorkspaceSyncRequest, ImportExternalProjectOptions, ImportFileOptions, ImportProjectOptions, InfoMessage, LanguageRestriction, MakeCodeProject, ProjectCreationOptions, ProjectFilters, RenderBlocksOptions, RenderByBlockIdOptions, RenderXmlOptions, ShareResult, StartActivityOptions, ToolboxBlockDefinition, ToolboxCategoryDefinition, UIEvent, } from './vanilla/pxt.js';
@@ -0,0 +1,9 @@
1
+ export { default as MakeCodeFrame, } from './react/MakeCodeFrame.js';
2
+ export { default as useMakeCodeRenderBlocks, } from './react/useMakeCodeRenderBlocks.js';
3
+ export { MakeCodeRenderBlocksProvider } from './react/MakeCodeRenderBlocksProvider.js';
4
+ export { default as MakeCodeBlocksRendering, } from './react/MakeCodeBlocksRendering.js';
5
+ export { defaultMakeCodeProject, emptyMakeCodeProject, } from './vanilla/examples.js';
6
+ export { MakeCodeFrameDriver, createMakeCodeURL, } from './vanilla/makecode-frame-driver.js';
7
+ export { BlockLayout } from './vanilla/pxt.js';
8
+ export { createMakeCodeRenderBlocks } from './vanilla/makecode-render-blocks.js';
9
+ //# sourceMappingURL=index.js.map