pxt-core 10.0.14 → 10.0.15
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/built/pxt.js +13 -0
- package/built/pxtlib.d.ts +2 -0
- package/built/pxtlib.js +8 -0
- package/built/pxtservices/assetEditorDriver.d.ts +11 -0
- package/built/pxtservices/editorDriver.d.ts +76 -0
- package/built/pxtservices/iframeDriver.d.ts +37 -0
- package/built/pxtservices/iframeEmbeddedClient.d.ts +19 -0
- package/built/pxtsim.d.ts +2 -0
- package/built/pxtsim.js +5 -0
- package/built/react-common/components/controls/LazyImage.d.ts +2 -0
- package/built/target.js +1 -1
- package/built/web/main.js +3 -3
- package/built/web/pxtapp.js +1 -1
- package/built/web/pxtasseteditor.js +2 -2
- package/built/web/pxtembed.js +2 -2
- package/built/web/pxtlib.js +1 -1
- package/built/web/pxtsim.js +1 -1
- package/built/web/pxtworker.js +1 -1
- package/built/web/react-common-authcode.css +1 -1
- package/built/web/react-common-multiplayer.css +1 -1
- package/built/web/react-common-skillmap.css +1 -1
- package/built/web/rtlreact-common-authcode.css +1 -1
- package/built/web/rtlreact-common-multiplayer.css +1 -1
- package/built/web/rtlreact-common-skillmap.css +1 -1
- package/built/web/rtlsemantic.css +1 -1
- package/built/web/runnerembed.js +2 -2
- package/built/web/semantic.css +1 -1
- package/built/web/teachertool/css/{main.0ded9c24.css → main.6eadf06f.css} +1 -1
- package/built/web/teachertool/js/main.2e25c841.js +2 -0
- package/localtypings/pxteditor.d.ts +111 -1
- package/package.json +1 -1
- package/react-common/components/controls/LazyImage.tsx +4 -4
- package/react-common/styles/controls/LazyImage.less +6 -4
- package/webapp/public/teachertool.html +1 -1
- package/built/web/teachertool/js/main.46a42d64.js +0 -2
package/built/pxt.js
CHANGED
|
@@ -100259,6 +100259,14 @@ var ts;
|
|
|
100259
100259
|
return (n || "").split(/(?=[A-Z])/g).join(" ").toLowerCase();
|
|
100260
100260
|
}
|
|
100261
100261
|
Util.uncapitalize = uncapitalize;
|
|
100262
|
+
function camelCaseToLowercaseWithSpaces(n) {
|
|
100263
|
+
return n.replace(/([A-Z])/gm, ' $1').toLocaleLowerCase().trim();
|
|
100264
|
+
}
|
|
100265
|
+
Util.camelCaseToLowercaseWithSpaces = camelCaseToLowercaseWithSpaces;
|
|
100266
|
+
function snakeCaseToLowercaseWithSpaces(n) {
|
|
100267
|
+
return n.replace(/_/g, ' ').toLocaleLowerCase().trim();
|
|
100268
|
+
}
|
|
100269
|
+
Util.snakeCaseToLowercaseWithSpaces = snakeCaseToLowercaseWithSpaces;
|
|
100262
100270
|
function range(len) {
|
|
100263
100271
|
let r = [];
|
|
100264
100272
|
for (let i = 0; i < len; ++i)
|
|
@@ -159069,6 +159077,11 @@ var pxsim;
|
|
|
159069
159077
|
highlightBoardPin(pinNm) {
|
|
159070
159078
|
this.boardView.highlightPin(pinNm);
|
|
159071
159079
|
}
|
|
159080
|
+
removeEventListeners() {
|
|
159081
|
+
if (this.boardView.removeEventListeners) {
|
|
159082
|
+
this.boardView.removeEventListeners();
|
|
159083
|
+
}
|
|
159084
|
+
}
|
|
159072
159085
|
highlightBreadboardPin(rowCol) {
|
|
159073
159086
|
this.breadboard.highlightLoc(rowCol);
|
|
159074
159087
|
}
|
package/built/pxtlib.d.ts
CHANGED
|
@@ -432,6 +432,8 @@ declare namespace ts.pxtc.Util {
|
|
|
432
432
|
export let getRandomBuf: (buf: Uint8Array) => void;
|
|
433
433
|
export function capitalize(n: string): string;
|
|
434
434
|
export function uncapitalize(n: string): string;
|
|
435
|
+
export function camelCaseToLowercaseWithSpaces(n: string): string;
|
|
436
|
+
export function snakeCaseToLowercaseWithSpaces(n: string): string;
|
|
435
437
|
export function range(len: number): number[];
|
|
436
438
|
export function multipartPostAsync(uri: string, data?: any, filename?: string, filecontents?: string): Promise<HttpResponse>;
|
|
437
439
|
export function toDataUri(data: string, mimetype?: string): string;
|
package/built/pxtlib.js
CHANGED
|
@@ -2573,6 +2573,14 @@ var ts;
|
|
|
2573
2573
|
return (n || "").split(/(?=[A-Z])/g).join(" ").toLowerCase();
|
|
2574
2574
|
}
|
|
2575
2575
|
Util.uncapitalize = uncapitalize;
|
|
2576
|
+
function camelCaseToLowercaseWithSpaces(n) {
|
|
2577
|
+
return n.replace(/([A-Z])/gm, ' $1').toLocaleLowerCase().trim();
|
|
2578
|
+
}
|
|
2579
|
+
Util.camelCaseToLowercaseWithSpaces = camelCaseToLowercaseWithSpaces;
|
|
2580
|
+
function snakeCaseToLowercaseWithSpaces(n) {
|
|
2581
|
+
return n.replace(/_/g, ' ').toLocaleLowerCase().trim();
|
|
2582
|
+
}
|
|
2583
|
+
Util.snakeCaseToLowercaseWithSpaces = snakeCaseToLowercaseWithSpaces;
|
|
2576
2584
|
function range(len) {
|
|
2577
2585
|
let r = [];
|
|
2578
2586
|
for (let i = 0; i < len; ++i)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IframeDriver } from "./iframeDriver";
|
|
2
|
+
export declare class AssetEditorDriver extends IframeDriver {
|
|
3
|
+
constructor(frame: HTMLIFrameElement);
|
|
4
|
+
openAsset(assetId: string, assetType: pxt.AssetType, files: pxt.Map<string>, palette?: string[]): Promise<void>;
|
|
5
|
+
createAsset(assetType: pxt.AssetType, files: pxt.Map<string>, displayName?: string, palette?: string[]): Promise<void>;
|
|
6
|
+
saveAsset(): Promise<pxt.Map<string>>;
|
|
7
|
+
duplicateAsset(assetId: string, assetType: pxt.AssetType, files: pxt.Map<string>, palette?: string[]): Promise<void>;
|
|
8
|
+
addEventListener(event: "ready", handler: (ev: pxt.editor.AssetEditorReadyEvent) => void): void;
|
|
9
|
+
addEventListener(event: "done-clicked", handler: (ev: pxt.editor.AssetEditorRequestSaveEvent) => void): void;
|
|
10
|
+
protected handleMessage(event: MessageEvent<any>): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/// <reference path="../../localtypings/pxteditor.d.ts" />
|
|
2
|
+
import { IframeDriver } from "./iframeDriver";
|
|
3
|
+
declare const MessageReceivedEvent = "message";
|
|
4
|
+
declare const MessageSentEvent = "sent";
|
|
5
|
+
export interface IframeWorkspaceStatus {
|
|
6
|
+
projects: pxt.workspace.Project[];
|
|
7
|
+
editor?: pxt.editor.EditorSyncState;
|
|
8
|
+
controllerId?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface IFrameWorkspaceHost {
|
|
11
|
+
saveProject(project: pxt.workspace.Project): Promise<void>;
|
|
12
|
+
getWorkspaceProjects(): Promise<IframeWorkspaceStatus>;
|
|
13
|
+
resetWorkspace(): Promise<void>;
|
|
14
|
+
onWorkspaceLoaded?(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Manages communication with the editor iframe.
|
|
18
|
+
*/
|
|
19
|
+
export declare class EditorDriver extends IframeDriver {
|
|
20
|
+
iframe: HTMLIFrameElement;
|
|
21
|
+
host?: IFrameWorkspaceHost;
|
|
22
|
+
constructor(iframe: HTMLIFrameElement, host?: IFrameWorkspaceHost);
|
|
23
|
+
switchEditorLanguage(lang: "typescript" | "blocks" | "python"): Promise<void>;
|
|
24
|
+
setLanguageRestriction(restriction: pxt.editor.LanguageRestriction): Promise<void>;
|
|
25
|
+
startSimulator(): Promise<void>;
|
|
26
|
+
stopSimulator(unload?: boolean): Promise<void>;
|
|
27
|
+
restartSimulator(): Promise<void>;
|
|
28
|
+
hideSimulator(): Promise<void>;
|
|
29
|
+
showSimulator(): Promise<void>;
|
|
30
|
+
setSimulatorFullscreen(on: boolean): Promise<void>;
|
|
31
|
+
closeFlyout(): Promise<void>;
|
|
32
|
+
unloadProject(): Promise<void>;
|
|
33
|
+
saveProject(): Promise<void>;
|
|
34
|
+
undo(): Promise<void>;
|
|
35
|
+
redo(): Promise<void>;
|
|
36
|
+
setHighContrast(on: boolean): Promise<void>;
|
|
37
|
+
toggleHighContrast(): Promise<void>;
|
|
38
|
+
toggleGreenScreen(): Promise<void>;
|
|
39
|
+
toggleSloMo(intervalSpeed?: number): Promise<void>;
|
|
40
|
+
setSloMoEnabled(enabled: boolean, intervalSpeed?: number): Promise<void>;
|
|
41
|
+
printProject(): Promise<void>;
|
|
42
|
+
getInfo(): Promise<pxt.editor.InfoMessage>;
|
|
43
|
+
newProject(options: pxt.editor.ProjectCreationOptions): Promise<void>;
|
|
44
|
+
importProject(project: pxt.workspace.Project, filters?: pxt.editor.ProjectFilters, searchBar?: boolean): Promise<void>;
|
|
45
|
+
openHeader(headerId: string): Promise<void>;
|
|
46
|
+
shareHeader(headerId: string, projectName: string): Promise<pxt.editor.ShareData>;
|
|
47
|
+
startActivity(activityType: "tutorial" | "example" | "recipe", path: string, title?: string, previousProjectHeaderId?: string, carryoverPreviousCode?: boolean): Promise<void>;
|
|
48
|
+
importTutorial(markdown: string): Promise<void>;
|
|
49
|
+
pair(): Promise<void>;
|
|
50
|
+
decompileToBlocks(ts: string, snippetMode?: boolean, layout?: pxt.editor.BlockLayout): Promise<pxt.editor.EditorMessageRenderBlocksResponse>;
|
|
51
|
+
decompileToPython(ts: string): Promise<string>;
|
|
52
|
+
renderXml(xml: string): Promise<any>;
|
|
53
|
+
renderByBlockId(blockId: string): Promise<any>;
|
|
54
|
+
getToolboxCategories(advanced?: boolean): Promise<pxt.editor.ToolboxCategoryDefinition[]>;
|
|
55
|
+
runValidatorPlan(validatorPlan: pxt.blocks.ValidatorPlan, planLib: pxt.blocks.ValidatorPlan[]): Promise<pxt.blocks.EvaluationResult>;
|
|
56
|
+
saveLocalProjectsToCloud(headerIds: string[]): Promise<pxt.editor.EditorMessageSaveLocalProjectsToCloudResponse>;
|
|
57
|
+
convertCloudProjectsToLocal(userId: string): Promise<void>;
|
|
58
|
+
requestProjectCloudStatus(headerIds: string[]): Promise<void>;
|
|
59
|
+
addEventListener(event: typeof MessageSentEvent, handler: (ev: pxt.editor.EditorMessage) => void): void;
|
|
60
|
+
addEventListener(event: typeof MessageReceivedEvent, handler: (ev: pxt.editor.EditorMessage) => void): void;
|
|
61
|
+
addEventListener(event: "event", handler: (ev: pxt.editor.EditorMessageEventRequest) => void): void;
|
|
62
|
+
addEventListener(event: "simevent", handler: (ev: pxt.editor.EditorSimulatorEvent) => void): void;
|
|
63
|
+
addEventListener(event: "tutorialevent", handler: (ev: pxt.editor.EditorMessageTutorialEventRequest) => void): void;
|
|
64
|
+
addEventListener(event: "workspacesave", handler: (ev: pxt.editor.EditorWorkspaceSaveRequest) => void): void;
|
|
65
|
+
addEventListener(event: "workspaceevent", handler: (ev: pxt.editor.EditorWorkspaceEvent) => void): void;
|
|
66
|
+
addEventListener(event: "workspacereset", handler: (ev: pxt.editor.EditorWorkspaceSyncRequest) => void): void;
|
|
67
|
+
addEventListener(event: "workspacesync", handler: (ev: pxt.editor.EditorWorkspaceSyncRequest) => void): void;
|
|
68
|
+
addEventListener(event: "workspaceloaded", handler: (ev: pxt.editor.EditorWorkspaceSyncRequest) => void): void;
|
|
69
|
+
addEventListener(event: "workspacediagnostics", handler: (ev: pxt.editor.EditorWorkspaceDiagnostics) => void): void;
|
|
70
|
+
addEventListener(event: "editorcontentloaded", handler: (ev: pxt.editor.EditorContentLoadedRequest) => void): void;
|
|
71
|
+
addEventListener(event: "projectcloudstatus", handler: (ev: pxt.editor.EditorMessageProjectCloudStatus) => void): void;
|
|
72
|
+
sendMessage(message: pxt.editor.EditorMessageRequest): Promise<pxt.editor.EditorMessageResponse>;
|
|
73
|
+
protected handleMessage(event: MessageEvent): void;
|
|
74
|
+
protected handleWorkspaceSync(event: pxt.editor.EditorWorkspaceSyncRequest | pxt.editor.EditorWorkspaceSaveRequest): Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/// <reference path="../../localtypings/pxteditor.d.ts" />
|
|
2
|
+
declare type MessageHandler = (response: any) => void;
|
|
3
|
+
interface PendingMessage {
|
|
4
|
+
original: pxt.editor.EditorMessageRequest;
|
|
5
|
+
resolve: MessageHandler;
|
|
6
|
+
reject: MessageHandler;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Abstract class for driving communication with an embedded iframe
|
|
10
|
+
*/
|
|
11
|
+
export declare abstract class IframeDriver {
|
|
12
|
+
iframe: HTMLIFrameElement;
|
|
13
|
+
protected readyForMessages: boolean;
|
|
14
|
+
protected messageQueue: pxt.editor.EditorMessageRequest[];
|
|
15
|
+
protected nextId: number;
|
|
16
|
+
protected pendingMessages: {
|
|
17
|
+
[index: string]: PendingMessage;
|
|
18
|
+
};
|
|
19
|
+
protected editorEventListeners: {
|
|
20
|
+
[index: string]: MessageHandler[];
|
|
21
|
+
};
|
|
22
|
+
protected port: MessagePort;
|
|
23
|
+
protected portRequestPending: boolean;
|
|
24
|
+
protected frameId: string;
|
|
25
|
+
constructor(iframe: HTMLIFrameElement);
|
|
26
|
+
protected abstract handleMessage(message: MessageEvent): void;
|
|
27
|
+
dispose(): void;
|
|
28
|
+
addEventListener(event: string, handler: (ev: any) => void): void;
|
|
29
|
+
removeEventListener(event: string, handler: (ev: any) => void): void;
|
|
30
|
+
protected onMessageReceived: (event: MessageEvent) => void;
|
|
31
|
+
protected resolvePendingMessage(event: MessageEvent): void;
|
|
32
|
+
protected fireEvent(event: string, data: any): void;
|
|
33
|
+
protected sendRequest(message: any): Promise<unknown>;
|
|
34
|
+
protected sendMessageCore(message?: any): void;
|
|
35
|
+
protected createMessagePort(): void;
|
|
36
|
+
}
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
declare type IframeClientSetMessagePortRequest = {
|
|
2
|
+
type: "iframeclientsetmessageport";
|
|
3
|
+
};
|
|
4
|
+
declare type IFrameClientReadyMessage = {
|
|
5
|
+
type: "iframeclientready";
|
|
6
|
+
};
|
|
7
|
+
export declare type IframeClientMessage = IframeClientSetMessagePortRequest | IFrameClientReadyMessage;
|
|
8
|
+
export declare class IFrameEmbeddedClient {
|
|
9
|
+
protected messageHandler: (message: MessageEvent) => void;
|
|
10
|
+
protected frameId: string | undefined;
|
|
11
|
+
protected port: MessagePort;
|
|
12
|
+
constructor(messageHandler: (message: MessageEvent) => void);
|
|
13
|
+
dispose(): void;
|
|
14
|
+
postMessage(message: any): void;
|
|
15
|
+
protected onMessageReceived: (event: MessageEvent) => void;
|
|
16
|
+
protected postMessageCore(message: any): void;
|
|
17
|
+
protected sendReadyMessage(): void;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
package/built/pxtsim.d.ts
CHANGED
|
@@ -1588,6 +1588,7 @@ declare namespace pxsim.visuals {
|
|
|
1588
1588
|
getCoord(pinNm: string): Coord;
|
|
1589
1589
|
getPinDist(): number;
|
|
1590
1590
|
highlightPin(pinNm: string): void;
|
|
1591
|
+
removeEventListeners?(): void;
|
|
1591
1592
|
}
|
|
1592
1593
|
function rgbToHsl(rgb: [number, number, number]): [number, number, number];
|
|
1593
1594
|
}
|
|
@@ -1995,6 +1996,7 @@ declare namespace pxsim.visuals {
|
|
|
1995
1996
|
private state;
|
|
1996
1997
|
constructor(view: BoardView, opts: BoardHostOpts);
|
|
1997
1998
|
highlightBoardPin(pinNm: string): void;
|
|
1999
|
+
removeEventListeners(): void;
|
|
1998
2000
|
highlightBreadboardPin(rowCol: BBLoc): void;
|
|
1999
2001
|
highlightWire(wire: Wire): void;
|
|
2000
2002
|
getView(): SVGElement;
|
package/built/pxtsim.js
CHANGED
|
@@ -9804,6 +9804,11 @@ var pxsim;
|
|
|
9804
9804
|
highlightBoardPin(pinNm) {
|
|
9805
9805
|
this.boardView.highlightPin(pinNm);
|
|
9806
9806
|
}
|
|
9807
|
+
removeEventListeners() {
|
|
9808
|
+
if (this.boardView.removeEventListeners) {
|
|
9809
|
+
this.boardView.removeEventListeners();
|
|
9810
|
+
}
|
|
9811
|
+
}
|
|
9807
9812
|
highlightBreadboardPin(rowCol) {
|
|
9808
9813
|
this.breadboard.highlightLoc(rowCol);
|
|
9809
9814
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { ControlProps } from "../util";
|
|
2
3
|
export interface LazyImageProps extends ControlProps {
|
|
3
4
|
src: string;
|
|
4
5
|
alt: string;
|
|
5
6
|
title?: string;
|
|
7
|
+
loadingElement?: JSX.Element;
|
|
6
8
|
}
|
|
7
9
|
export declare const LazyImage: (props: LazyImageProps) => JSX.Element;
|