@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.
- package/LICENSE.md +1 -1
- package/README.md +10 -6
- package/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/{react → cjs/react}/MakeCodeBlocksRendering.d.ts +2 -2
- package/dist/cjs/react/MakeCodeBlocksRendering.js +105 -0
- package/dist/cjs/react/MakeCodeBlocksRendering.js.map +1 -0
- package/dist/{react → cjs/react}/MakeCodeFrame.d.ts +2 -2
- package/dist/cjs/react/MakeCodeFrame.js +74 -0
- package/dist/cjs/react/MakeCodeFrame.js.map +1 -0
- package/dist/cjs/react/MakeCodeRenderBlocksProvider.d.ts +18 -0
- package/dist/cjs/react/MakeCodeRenderBlocksProvider.js +25 -0
- package/dist/cjs/react/MakeCodeRenderBlocksProvider.js.map +1 -0
- package/dist/{react → cjs/react}/index.d.ts +1 -1
- package/dist/cjs/react/index.js +23 -0
- package/dist/cjs/react/index.js.map +1 -0
- package/dist/cjs/react/useMakeCodeRenderBlocks.js +18 -0
- package/dist/cjs/react/useMakeCodeRenderBlocks.js.map +1 -0
- package/dist/cjs/vanilla/examples.d.ts +3 -0
- package/dist/cjs/vanilla/examples.js +20 -0
- package/dist/cjs/vanilla/examples.js.map +1 -0
- package/dist/cjs/vanilla/index.d.ts +6 -0
- package/dist/cjs/vanilla/index.js +14 -0
- package/dist/cjs/vanilla/index.js.map +1 -0
- package/dist/{vanilla → cjs/vanilla}/makecode-frame-driver.d.ts +3 -4
- package/dist/cjs/vanilla/makecode-frame-driver.js +638 -0
- package/dist/cjs/vanilla/makecode-frame-driver.js.map +1 -0
- package/dist/{vanilla → cjs/vanilla}/makecode-render-blocks.d.ts +3 -4
- package/dist/cjs/vanilla/makecode-render-blocks.js +217 -0
- package/dist/cjs/vanilla/makecode-render-blocks.js.map +1 -0
- package/dist/{vanilla → cjs/vanilla}/pxt.d.ts +88 -118
- package/dist/cjs/vanilla/pxt.js +36 -0
- package/dist/cjs/vanilla/pxt.js.map +1 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/react/MakeCodeBlocksRendering.d.ts +24 -0
- package/dist/esm/react/MakeCodeBlocksRendering.js.map +1 -0
- package/dist/esm/react/MakeCodeFrame.d.ts +38 -0
- package/dist/esm/react/MakeCodeFrame.js.map +1 -0
- package/dist/esm/react/MakeCodeRenderBlocksProvider.d.ts +18 -0
- package/dist/{react → esm/react}/MakeCodeRenderBlocksProvider.js +5 -2
- package/dist/esm/react/MakeCodeRenderBlocksProvider.js.map +1 -0
- package/dist/esm/react/index.d.ts +8 -0
- package/dist/esm/react/index.js.map +1 -0
- package/dist/esm/react/useMakeCodeRenderBlocks.d.ts +6 -0
- package/dist/{react → esm/react}/useMakeCodeRenderBlocks.js +1 -1
- package/dist/esm/react/useMakeCodeRenderBlocks.js.map +1 -0
- package/dist/esm/vanilla/examples.d.ts +3 -0
- package/dist/esm/vanilla/examples.js.map +1 -0
- package/dist/esm/vanilla/index.d.ts +6 -0
- package/dist/{vanilla → esm/vanilla}/index.js +1 -0
- package/dist/esm/vanilla/index.js.map +1 -0
- package/dist/esm/vanilla/makecode-frame-driver.d.ts +264 -0
- package/dist/{vanilla → esm/vanilla}/makecode-frame-driver.js +1 -0
- package/dist/esm/vanilla/makecode-frame-driver.js.map +1 -0
- package/dist/esm/vanilla/makecode-render-blocks.d.ts +31 -0
- package/dist/{vanilla → esm/vanilla}/makecode-render-blocks.js +1 -2
- package/dist/esm/vanilla/makecode-render-blocks.js.map +1 -0
- package/dist/esm/vanilla/pxt.d.ts +845 -0
- package/dist/esm/vanilla/pxt.js.map +1 -0
- package/package.json +38 -9
- package/typedoc.json +14 -0
- package/dist/react/MakeCodeBlocksRendering.js.map +0 -1
- package/dist/react/MakeCodeFrame.js.map +0 -1
- package/dist/react/MakeCodeRenderBlocksProvider.d.ts +0 -8
- package/dist/react/MakeCodeRenderBlocksProvider.js.map +0 -1
- package/dist/react/index.js.map +0 -1
- package/dist/react/useMakeCodeRenderBlocks.js.map +0 -1
- package/dist/vanilla/examples.d.ts +0 -3
- package/dist/vanilla/examples.js.map +0 -1
- package/dist/vanilla/index.d.ts +0 -4
- package/dist/vanilla/index.js.map +0 -1
- package/dist/vanilla/makecode-frame-driver.js.map +0 -1
- package/dist/vanilla/makecode-render-blocks.js.map +0 -1
- package/dist/vanilla/pxt.js.map +0 -1
- /package/dist/{react → cjs/react}/useMakeCodeRenderBlocks.d.ts +0 -0
- /package/dist/{react → esm/react}/MakeCodeBlocksRendering.js +0 -0
- /package/dist/{react → esm/react}/MakeCodeFrame.js +0 -0
- /package/dist/{react → esm/react}/index.js +0 -0
- /package/dist/{vanilla → esm/vanilla}/examples.js +0 -0
- /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:
|
|
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?:
|
|
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?:
|
|
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
|
|
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:
|
|
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:
|
|
223
|
+
project: MakeCodeProject;
|
|
223
224
|
}
|
|
224
225
|
export interface ImportProjectOptions {
|
|
225
|
-
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:
|
|
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
|
-
|
|
559
|
-
|
|
560
|
-
|
|
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
|
|
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:
|
|
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?:
|
|
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?:
|
|
602
|
+
platformio?: {
|
|
603
|
+
dependencies?: DependencyMap<string>;
|
|
604
|
+
};
|
|
615
605
|
compileServiceVariant?: string;
|
|
616
606
|
palette?: string[];
|
|
617
607
|
paletteNames?: string[];
|
|
618
|
-
screenSize?:
|
|
608
|
+
screenSize?: {
|
|
609
|
+
width: number;
|
|
610
|
+
height: number;
|
|
611
|
+
};
|
|
619
612
|
yotta?: YottaConfig;
|
|
620
|
-
codal?:
|
|
621
|
-
|
|
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?:
|
|
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
|
|
662
|
-
dependencies?:
|
|
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?:
|
|
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
|
-
|
|
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:
|
|
737
|
-
outputBehavior?:
|
|
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?:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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?:
|
|
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
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
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
|