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.
Files changed (35) hide show
  1. package/built/pxt.js +13 -0
  2. package/built/pxtlib.d.ts +2 -0
  3. package/built/pxtlib.js +8 -0
  4. package/built/pxtservices/assetEditorDriver.d.ts +11 -0
  5. package/built/pxtservices/editorDriver.d.ts +76 -0
  6. package/built/pxtservices/iframeDriver.d.ts +37 -0
  7. package/built/pxtservices/iframeEmbeddedClient.d.ts +19 -0
  8. package/built/pxtsim.d.ts +2 -0
  9. package/built/pxtsim.js +5 -0
  10. package/built/react-common/components/controls/LazyImage.d.ts +2 -0
  11. package/built/target.js +1 -1
  12. package/built/web/main.js +3 -3
  13. package/built/web/pxtapp.js +1 -1
  14. package/built/web/pxtasseteditor.js +2 -2
  15. package/built/web/pxtembed.js +2 -2
  16. package/built/web/pxtlib.js +1 -1
  17. package/built/web/pxtsim.js +1 -1
  18. package/built/web/pxtworker.js +1 -1
  19. package/built/web/react-common-authcode.css +1 -1
  20. package/built/web/react-common-multiplayer.css +1 -1
  21. package/built/web/react-common-skillmap.css +1 -1
  22. package/built/web/rtlreact-common-authcode.css +1 -1
  23. package/built/web/rtlreact-common-multiplayer.css +1 -1
  24. package/built/web/rtlreact-common-skillmap.css +1 -1
  25. package/built/web/rtlsemantic.css +1 -1
  26. package/built/web/runnerembed.js +2 -2
  27. package/built/web/semantic.css +1 -1
  28. package/built/web/teachertool/css/{main.0ded9c24.css → main.6eadf06f.css} +1 -1
  29. package/built/web/teachertool/js/main.2e25c841.js +2 -0
  30. package/localtypings/pxteditor.d.ts +111 -1
  31. package/package.json +1 -1
  32. package/react-common/components/controls/LazyImage.tsx +4 -4
  33. package/react-common/styles/controls/LazyImage.less +6 -4
  34. package/webapp/public/teachertool.html +1 -1
  35. 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;