pxt-core 8.2.7 → 8.2.10

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 (39) hide show
  1. package/built/pxt-common.json +1 -1
  2. package/built/pxt.js +32 -16
  3. package/built/pxtblockly.js +20 -8
  4. package/built/pxtblocks.js +20 -8
  5. package/built/pxtcompiler.js +3 -3
  6. package/built/pxtlib.js +23 -4
  7. package/built/pxtrunner.js +13 -0
  8. package/built/pxtsim.js +6 -9
  9. package/built/target.js +1 -1
  10. package/built/web/main.js +1 -1
  11. package/built/web/pxtapp.js +1 -1
  12. package/built/web/pxtblockly.js +1 -1
  13. package/built/web/pxtblocks.js +1 -1
  14. package/built/web/pxtcompiler.js +1 -1
  15. package/built/web/pxtembed.js +2 -2
  16. package/built/web/pxtlib.js +1 -1
  17. package/built/web/pxtrunner.js +1 -1
  18. package/built/web/pxtsim.js +1 -1
  19. package/built/web/pxtworker.js +1 -1
  20. package/built/web/react-common-authcode.css +83 -13
  21. package/built/web/react-common-skillmap.css +1 -1
  22. package/built/web/rtlreact-common-skillmap.css +1 -1
  23. package/built/web/rtlsemantic.css +1 -1
  24. package/built/web/semantic.css +1 -1
  25. package/built/web/skillmap/js/main.d94a2bd9.chunk.js +1 -0
  26. package/localtypings/pxtarget.d.ts +16 -0
  27. package/package.json +1 -1
  28. package/react-common/components/profile/SignInModal.tsx +2 -2
  29. package/react-common/components/share/Share.tsx +8 -21
  30. package/react-common/components/share/ShareInfo.tsx +136 -132
  31. package/react-common/components/share/SocialButton.tsx +36 -6
  32. package/react-common/components/share/ThumbnailRecorder.tsx +137 -0
  33. package/react-common/styles/controls/Button.less +30 -3
  34. package/react-common/styles/controls/Modal.less +6 -1
  35. package/react-common/styles/share/share.less +63 -7
  36. package/webapp/public/skillmap.html +1 -1
  37. package/built/web/skillmap/js/main.b87a119c.chunk.js +0 -1
  38. package/react-common/components/share/GifInfo.tsx +0 -63
  39. package/react-common/components/share/GifRecorder.tsx +0 -97
@@ -1,97 +0,0 @@
1
- import * as React from "react";
2
- import { Button } from "../controls/Button";
3
-
4
- type RecorderState = "default" | "recording" | "rendering";
5
-
6
- export interface GifRecorderProps {
7
- onScreenshot?: () => void;
8
- onRecordStart?: () => void;
9
- onRecordStop?: () => Promise<void>;
10
- onGifFrame?: (dataUri: ImageData, delay?: number) => boolean;
11
- registerSimulatorMsgHandler?: (handler: (msg: any) => void) => void;
12
- unregisterSimulatorMsgHandler?: () => void;
13
- }
14
-
15
- export const GifRecorder = (props: GifRecorderProps) => {
16
- const { onScreenshot, onRecordStart, onRecordStop, onGifFrame,
17
- registerSimulatorMsgHandler, unregisterSimulatorMsgHandler } = props;
18
- const [ recorderState, _setRecorderState ] = React.useState<RecorderState>("default");
19
- const recorderStateRef = React.useRef(recorderState);
20
- const targetTheme = pxt.appTarget.appTheme;
21
-
22
- const setRecorderState = (state: RecorderState) => {
23
- _setRecorderState(state);
24
- recorderStateRef.current = state;
25
- }
26
-
27
- const onGifRecordStop = async () => {
28
- setRecorderState("rendering");
29
- await onRecordStop();
30
- setRecorderState("default");
31
- }
32
-
33
- const handleKeyDown = (e: KeyboardEvent) => {
34
- const pressed = e.key.toLocaleLowerCase();
35
- if (targetTheme.simScreenshotKey && pressed === targetTheme.simScreenshotKey.toLocaleLowerCase()) {
36
- onScreenshot();
37
- } else if (targetTheme.simGifKey && pressed === targetTheme.simGifKey.toLocaleLowerCase()) {
38
- if (recorderStateRef.current === "recording") {
39
- onGifRecordStop();
40
- } else {
41
- onGifRecordStart();
42
- }
43
- }
44
- }
45
-
46
- const handleSimulatorMsg = (e: any) => {
47
- if (e.type === "screenshot") {
48
- if (recorderStateRef.current === "recording") {
49
- // Adds frame, returns true if we've exceeded the max frame count
50
- if (onGifFrame(e.data, e.delay)) {
51
- onGifRecordStop();
52
- }
53
- } else {
54
- onScreenshot();
55
- }
56
- } else if (e.event === "start") {
57
- onGifRecordStart();
58
- } else if (e.event === "stop") {
59
- onGifRecordStop();
60
- }
61
- }
62
-
63
- React.useEffect(() => {
64
- document.addEventListener("keydown", handleKeyDown);
65
- if (registerSimulatorMsgHandler) registerSimulatorMsgHandler(handleSimulatorMsg);
66
-
67
- return () => {
68
- document.removeEventListener("keydown", handleKeyDown);
69
- if (unregisterSimulatorMsgHandler) unregisterSimulatorMsgHandler();
70
- }
71
- }, []);
72
-
73
- const onGifRecordStart = () => {
74
- setRecorderState("recording");
75
- onRecordStart();
76
- }
77
-
78
- const screenshotLabel = lf("Take screenshot ({0})", targetTheme.simScreenshotKey);
79
- const startRecordingLabel = lf("Record game play ({0})", targetTheme.simGifKey);
80
- const stopRecordingLabel = lf("Stop recording ({0})", targetTheme.simGifKey) ;
81
-
82
- return <div className="gif-recorder">
83
- <div className="gif-recorder-label">{lf("Pick your project thumbnail")}</div>
84
- <div className="gif-recorder-actions">
85
- {!!onScreenshot && <Button className="teal inverted"
86
- title={screenshotLabel}
87
- label={screenshotLabel}
88
- leftIcon="fas fa-camera"
89
- onClick={onScreenshot} />}
90
- {!!onRecordStart && <Button className="teal inverted"
91
- title={recorderState === "recording" ? stopRecordingLabel : startRecordingLabel}
92
- label={recorderState === "recording" ? stopRecordingLabel : startRecordingLabel}
93
- leftIcon={`fas fa-${recorderState === "recording" ? "square" : "circle"}`}
94
- onClick={recorderState === "recording" ? onGifRecordStop : onGifRecordStart} />}
95
- </div>
96
- </div>
97
- }