pxt-core 8.2.15 → 8.2.17

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 (33) hide show
  1. package/built/cli.js +76 -73
  2. package/built/pxt.js +76 -73
  3. package/built/pxtlib.d.ts +1 -0
  4. package/built/server.js +4 -0
  5. package/built/target.js +1 -1
  6. package/built/web/ai.0.js +1 -1
  7. package/built/web/main.js +1 -1
  8. package/built/web/multiplayer/css/main.b0b14e9a.css +2 -0
  9. package/built/web/multiplayer/js/main.448c5eda.js +2 -0
  10. package/built/web/pxtasseteditor.js +1 -1
  11. package/built/web/react-common-authcode.css +4 -6973
  12. package/built/web/react-common-multiplayer.css +13 -0
  13. package/built/web/rtlreact-common-authcode.css +13 -0
  14. package/built/web/rtlreact-common-multiplayer.css +13 -0
  15. package/built/web/rtlsemantic.css +1 -1
  16. package/built/web/semantic.css +1 -1
  17. package/built/web/skillmap/css/main.242f7a98.css +1 -0
  18. package/built/web/skillmap/js/main.f143771a.js +2 -0
  19. package/package.json +53 -51
  20. package/react-common/components/controls/Modal.tsx +2 -0
  21. package/react-common/components/profile/UserPane.tsx +0 -1
  22. package/react-common/styles/react-common-authcode-core.less +1 -1
  23. package/react-common/styles/react-common-authcode.less +1 -1
  24. package/react-common/styles/react-common-multiplayer-core.less +10 -0
  25. package/react-common/styles/react-common-multiplayer.less +12 -0
  26. package/theme/tutorial-sidebar.less +12 -0
  27. package/webapp/package.json +15 -0
  28. package/webapp/public/multiplayer.html +1 -0
  29. package/webapp/public/skillmap.html +1 -32
  30. package/built/web/skillmap/css/main.3684f34d.chunk.css +0 -1
  31. package/built/web/skillmap/js/2.960f04a5.chunk.js +0 -2
  32. package/built/web/skillmap/js/main.44b2383f.chunk.js +0 -1
  33. package/built/web/skillmap/js/runtime-main.37bd2885.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pxt-core",
3
- "version": "8.2.15",
3
+ "version": "8.2.17",
4
4
  "description": "Microsoft MakeCode provides Blocks / JavaScript / Python tools and editors",
5
5
  "keywords": [
6
6
  "TypeScript",
@@ -38,6 +38,8 @@
38
38
  "built/web/skillmap/js/*.js",
39
39
  "built/web/authcode/css/*.css",
40
40
  "built/web/authcode/js/*.js",
41
+ "built/web/multiplayer/css/*.css",
42
+ "built/web/multiplayer/js/*.js",
41
43
  "pxtcompiler/ext-typescript/lib/lib.d.ts",
42
44
  "pxtcompiler/ext-typescript/lib/typescript.js",
43
45
  "pxtcompiler/ext-typescript/lib/typescriptServices.d.ts",
@@ -60,67 +62,53 @@
60
62
  "npm": ">=3.0.0"
61
63
  },
62
64
  "dependencies": {
63
- "@blockly/keyboard-navigation": "^0.1.18",
64
- "@blockly/plugin-workspace-search": "^4.0.10",
65
- "@fortawesome/fontawesome-free": "^5.15.4",
66
- "@microsoft/immersive-reader-sdk": "1.1.0",
67
- "@zip.js/zip.js": "2.4.20",
68
- "applicationinsights-js": "^1.0.20",
69
- "browserify": "16.2.3",
70
- "chai": "^3.5.0",
71
- "cssnano": "4.1.10",
72
- "dashjs": "^4.4.0",
73
- "dompurify": "2.0.17",
65
+ "dashjs": "4.4.0",
74
66
  "faye-websocket": "0.11.1",
75
- "karma": "6.3.10",
76
- "karma-chai": "0.1.0",
77
- "karma-chrome-launcher": "3.1.0",
78
- "karma-mocha": "2.0.1",
79
- "less": "3.13.1",
80
- "lzma": "2.3.2",
81
- "marked": "0.3.19",
82
- "mocha": "5.1.0",
83
- "pngjs": "3.4.0",
84
- "postcss": "6.0.21",
85
- "promise.prototype.finally": "^3.1.2",
86
- "puppeteer": "13.0.1",
87
- "request": "2.88.0",
88
- "rimraf": "2.5.4",
89
- "rtlcss": "2.2.1",
90
- "sanitize-html": "2.3.2",
91
- "semantic-ui-less": "2.4.1",
92
- "terser": "5.6.0"
67
+ "marked": "0.3.19"
93
68
  },
94
69
  "lazyDependencies": {
95
- "node-hid": "^0.7.2",
96
- "webusb": "^1.1.1"
70
+ "node-hid": "0.7.2",
71
+ "webusb": "1.1.1"
72
+ },
73
+ "peerDependencies": {
74
+ "react": "17.0.2",
75
+ "react-dom": "17.0.2"
97
76
  },
98
77
  "devDependencies": {
99
- "@microsoft/eslint-plugin-sdl": "^0.1.5",
78
+ "@blockly/keyboard-navigation": "0.1.18",
79
+ "@blockly/plugin-workspace-search": "4.0.10",
80
+ "@fortawesome/fontawesome-free": "5.15.4",
81
+ "@microsoft/eslint-plugin-sdl": "0.1.5",
82
+ "@microsoft/immersive-reader-sdk": "1.1.0",
100
83
  "@types/chai": "4.0.6",
101
84
  "@types/fuse": "2.5.2",
102
85
  "@types/highlight.js": "9.12.2",
103
86
  "@types/jquery": "3.3.29",
104
87
  "@types/marked": "0.3.0",
105
88
  "@types/mocha": "2.2.44",
106
- "@types/node": "10.14.2",
107
89
  "@types/react": "17.0.50",
108
90
  "@types/react-dom": "17.0.17",
109
91
  "@types/react-modal": "3.1.2",
110
92
  "@types/react-redux": "5.0.19",
111
93
  "@types/react-tooltip": "3.3.6",
112
94
  "@types/request": "2.48.5",
113
- "@types/resize-observer-browser": "^0.1.5",
95
+ "@types/resize-observer-browser": "0.1.5",
114
96
  "@types/web-bluetooth": "0.0.4",
115
- "@typescript-eslint/eslint-plugin": "^4.20.0",
116
- "@typescript-eslint/parser": "^4.20.0",
117
- "@vusion/webfonts-generator": "^0.7.1",
118
- "crypto-js": "^3.1.9-1",
97
+ "@typescript-eslint/eslint-plugin": "4.20.0",
98
+ "@typescript-eslint/parser": "4.20.0",
99
+ "@vusion/webfonts-generator": "0.7.1",
100
+ "@zip.js/zip.js": "2.4.20",
101
+ "applicationinsights-js": "1.0.20",
102
+ "browserify": "17.0.0",
103
+ "chai": "3.5.0",
104
+ "crypto-js": "3.1.9-1",
105
+ "cssnano": "4.1.10",
106
+ "dompurify": "2.0.17",
119
107
  "envify": "4.1.0",
120
- "eslint": "^7.23.0",
121
- "eslint-plugin-import": "^2.22.1",
122
- "eslint-plugin-jsx-a11y": "^6.4.1",
123
- "eslint-plugin-react": "^7.23.1",
108
+ "eslint": "7.23.0",
109
+ "eslint-plugin-import": "2.22.1",
110
+ "eslint-plugin-jsx-a11y": "6.4.1",
111
+ "eslint-plugin-react": "7.23.1",
124
112
  "fuse.js": "3.2.0",
125
113
  "gulp": "4.0.0",
126
114
  "gulp-concat": "2.6.1",
@@ -129,20 +117,33 @@
129
117
  "gulp-typescript": "5.0.1",
130
118
  "highlight.js": "9.12.0",
131
119
  "jquery": "3.5.0",
120
+ "karma": "6.3.10",
121
+ "karma-chai": "0.1.0",
122
+ "karma-chrome-launcher": "3.1.0",
123
+ "karma-mocha": "2.0.1",
124
+ "less": "3.13.1",
125
+ "lzma": "2.3.2",
132
126
  "merge-stream": "2.0.0",
127
+ "mocha": "5.1.0",
133
128
  "monaco-editor": "0.24.0",
129
+ "pngjs": "3.4.0",
130
+ "postcss": "6.0.21",
134
131
  "pouchdb": "7.2.1",
135
132
  "pouchdb-adapter-memory": "7.2.1",
133
+ "promise.prototype.finally": "3.1.2",
134
+ "puppeteer": "13.0.1",
136
135
  "pxt-blockly": "4.0.15",
137
- "react": "17.0.2",
138
- "react-dom": "17.0.2",
139
- "react-modal": "3.3.2",
140
- "react-redux": "5.1.2",
141
- "react-tooltip": "3.9.0",
142
- "redux": "3.7.2",
136
+ "request": "2.88.0",
137
+ "rimraf": "2.5.4",
138
+ "rtlcss": "2.2.1",
139
+ "sanitize-html": "2.3.2",
140
+ "semantic-ui-less": "2.4.1",
143
141
  "smoothie": "1.35.0",
142
+ "terser": "5.6.0",
144
143
  "typescript": "4.8.3",
145
- "uglifyify": "5.0.2"
144
+ "uglifyify": "5.0.2",
145
+ "vinyl": "2.2.1",
146
+ "vinyl-source-stream": "^2.0.0"
146
147
  },
147
148
  "scripts": {
148
149
  "build": "gulp",
@@ -157,6 +158,7 @@
157
158
  "test:fmt": "gulp testfmt",
158
159
  "test:lang": "gulp testlang",
159
160
  "update": "gulp update",
160
- "watch-streamer": "cd docs/static/streamer && tsc -t es6 --watch"
161
+ "watch-streamer": "cd docs/static/streamer && tsc -t es6 --watch",
162
+ "postinstall": "cd webapp && npm install && cd .. && cd skillmap && npm install && cd .. && cd authcode && npm install && cd .. && cd multiplayer && npm install && cd .."
161
163
  }
162
164
  }
@@ -1,3 +1,5 @@
1
+ /// <reference path="../types.d.ts" />
2
+
1
3
  import * as React from "react";
2
4
  import * as ReactDOM from "react-dom";
3
5
  import { classList, ContainerProps } from "../util";
@@ -1,5 +1,4 @@
1
1
  /// <reference path="../types.d.ts" />
2
- /// <reference path="../../../localtypings/react.d.ts" />
3
2
 
4
3
  import * as React from "react";
5
4
  import { fireClickOnEnter, CheckboxStatus } from "../util";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file is the same as react-common-skillmap.less except it doesn't import any
2
+ * This file is the same as react-common-authcode.less except it doesn't import any
3
3
  * variables from the target. This is used for pxt-core's css build
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Used for building react-common-skillmap.css
2
+ * Used for building react-common-authcode.css
3
3
  */
4
4
 
5
5
  // Import variables from pxt-core
@@ -0,0 +1,10 @@
1
+ /**
2
+ * This file is the same as react-common-multiplayer.less except it doesn't import any
3
+ * variables from the target. This is used for pxt-core's css build
4
+ */
5
+
6
+ // Import variables from pxt-core
7
+ @import "themes/default/globals/site.variables";
8
+ @import "themes/pxt/globals/site.variables";
9
+
10
+ @import "react-common.less";
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Used for building react-common-multiplayer.css
3
+ */
4
+
5
+ // Import variables from pxt-core
6
+ @import "themes/default/globals/site.variables";
7
+ @import "themes/pxt/globals/site.variables";
8
+
9
+ // Import the variables from the target
10
+ @import "site/globals/site.variables";
11
+
12
+ @import "react-common.less";
@@ -95,6 +95,11 @@
95
95
  }
96
96
  }
97
97
 
98
+ .tutorial-controls {
99
+ border-top: 2px solid @tutorialGrayOffset;
100
+ margin-top: 1rem;
101
+ }
102
+
98
103
  /*******************************
99
104
  Exit Tutorial
100
105
  *******************************/
@@ -554,6 +559,7 @@
554
559
  .tutorial-step-label {
555
560
  font-size: 1rem;
556
561
  justify-content: space-between;
562
+ margin-bottom: 1.5rem;
557
563
  }
558
564
 
559
565
  /* Short Deskstop Only */
@@ -687,6 +693,7 @@
687
693
  display: flex;
688
694
  align-items: center;
689
695
  margin: 0;
696
+ margin-top: 0.5rem;
690
697
 
691
698
  > .ui.button {
692
699
  width: unset;
@@ -798,6 +805,11 @@
798
805
  .ui.button:not(:hover) {
799
806
  background-color: @tutorialTabletSimulatorButtonColor;
800
807
  }
808
+
809
+ > .ui.button:last-child {
810
+ margin-top: 0.75rem;
811
+ margin-bottom: 0.75rem;
812
+ }
801
813
  }
802
814
  }
803
815
 
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "webapp",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "dependencies": {
6
+ "@types/node": "10.14.2",
7
+ "dashjs": "4.4.0",
8
+ "react": "17.0.2",
9
+ "react-dom": "17.0.2",
10
+ "react-modal": "3.3.2",
11
+ "react-redux": "5.1.2",
12
+ "react-tooltip": "3.9.0",
13
+ "redux": "3.7.2"
14
+ }
15
+ }
@@ -0,0 +1 @@
1
+ <!doctype html><html lang="@locale@"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>MakeCode Arcade Multiplayer</title><link rel="stylesheet" data-rtl="/blb/rtlsemantic.css" href="/blb/semantic.css"><link rel="stylesheet" href="/blb/icons.css"><link rel="stylesheet" href="/blb/react-common-multiplayer.css"><script defer="defer" src="/blb/multiplayer/js/main.448c5eda.js"></script><link href="/blb/multiplayer/css/main.b0b14e9a.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><script type="text/javascript" src="/blb/target.js"></script><script type="text/javascript" src="/blb/pxtlib.js"></script><div id="root"></div><script>var pxtConfig=null</script></body></html>
@@ -1,32 +1 @@
1
- <!doctype html>
2
- <html lang="@locale@">
3
- <head>
4
- <meta charset="utf-8"/>
5
- <meta name="viewport" content="width=device-width,initial-scale=1"/>
6
- <title>MakeCode Skill Map</title>
7
- <link rel="stylesheet" data-rtl="/blb/rtlsemantic.css" href="/blb/semantic.css">
8
- <link rel="stylesheet" href="/blb/icons.css">
9
- <link rel="stylesheet" href="/blb/react-common-skillmap.css">
10
- <link href="/blb/skillmap/css/main.3684f34d.chunk.css" rel="stylesheet"></head>
11
- <body>
12
- <noscript>You need to enable JavaScript to run this app.</noscript>
13
-
14
- <!-- @include tracking.html -->
15
- <!-- @include tickevent.html -->
16
-
17
- <!-- target.js is generated by the CLI -->
18
- <script type="text/javascript" src="/blb/target.js"></script>
19
- <script type="text/javascript" src="/blb/pxtlib.js"></script>
20
-
21
- <div id="root"></div>
22
-
23
-
24
- <script>var pxtConfig=null</script>
25
-
26
- <!-- begin usabilla live embed code -->
27
- <script type="text/javascript">window.lightningjs||function(e){function n(n,i){return i&&(i+=(/\?/.test(i)?"&":"?")+"lv=1"),e[n]||function(){var a=window,r=document,o=n,d=r.location.protocol,s="load",l=0;!function(){function n(){c.P(s),c.w=1,e[o]("_load")}e[o]=function(){function n(){return n.id=i,e[o].apply(n,arguments)}var t,i=++l;return t=this&&this!=a&&this.id||0,(c.s=c.s||[]).push([i,t,arguments]),n.then=function(e,t,a){var r=c.fh[i]=c.fh[i]||[],o=c.eh[i]=c.eh[i]||[],d=c.ph[i]=c.ph[i]||[];return e&&r.push(e),t&&o.push(t),a&&d.push(a),n},n};var c=e[o]._={};c.fh={},c.eh={},c.ph={},c.l=i?i.replace(/^\/\//,("https:"==d?d:"http:")+"//"):i,c.p={0:+new Date},c.P=function(e){c.p[e]=new Date-c.p[0]},c.w&&n(),a.addEventListener?a.addEventListener(s,n,!1):a.attachEvent("on"+s,n);var u=function(){function e(){return["<head></head><",n,' onload="var d=',f,";d.getElementsByTagName('head')[0].",d,"(d.",s,"('script')).",l,"='",c.l,"'\"></",n,">"].join("")}var n="body",i=r[n];if(!i)return setTimeout(u,100);c.P(1);var a,d="appendChild",s="createElement",l="src",h=r[s]("div"),p=h[d](r[s]("div")),v=r[s]("iframe"),f="document";h.style.display="none",i.insertBefore(h,i.firstChild).id=t+"-"+o,v.frameBorder="0",v.id=t+"-frame-"+o,/MSIE[ ]+6/.test(navigator.userAgent)&&(v[l]="javascript:false"),v.allowTransparency="true",p[d](v);try{v.contentWindow[f].open()}catch(e){c.domain=r.domain,a="javascript:var d="+f+".open();d.domain='"+r.domain+"';",v[l]=a+"void(0);"}try{var w=v.contentWindow[f];w.write(e()),w.close()}catch(n){v[l]=a+'d.write("'+e().replace(/"/g,String.fromCharCode(92)+'"')+'");d.close();'}c.P(2)};c.l&&setTimeout(u,0)}()}(),e[n].lv="1",e[n]}var t="lightningjs",i=window[t]=n(t);i.require=n,i.modules=e}({}),window.usabilla_live=lightningjs.require("usabilla_live","//w.usabilla.com/1bba04d66c15.js")</script>
28
- <!-- end usabilla live embed code -->
29
-
30
- <!-- @include thin-footer.html -->
31
- <script>!function(e){function r(r){for(var n,l,i=r[0],a=r[1],p=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(f&&f(r);s.length;)s.shift()();return u.push.apply(u,p||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var a=t[i];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={1:0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this.webpackJsonpskillsmap=this.webpackJsonpskillsmap||[],a=i.push.bind(i);i.push=r,i=i.slice();for(var p=0;p<i.length;p++)r(i[p]);var f=a;t()}([])</script><script src="/blb/skillmap/js/2.960f04a5.chunk.js"></script><script src="/blb/skillmap/js/main.44b2383f.chunk.js"></script></body>
32
- </html>
1
+ <!doctype html><html lang="@locale@"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>MakeCode Skill Map</title><link rel="stylesheet" data-rtl="/blb/rtlsemantic.css" href="/blb/semantic.css"><link rel="stylesheet" href="/blb/icons.css"><link rel="stylesheet" href="/blb/react-common-skillmap.css"><script defer="defer" src="/blb/skillmap/js/main.f143771a.js"></script><link href="/blb/skillmap/css/main.242f7a98.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><script type="text/javascript" src="/blb/target.js"></script><script type="text/javascript" src="/blb/pxtlib.js"></script><div id="root"></div><script>var pxtConfig=null</script><script type="text/javascript">window.lightningjs||function(e){function n(n,i){return i&&(i+=(/\?/.test(i)?"&":"?")+"lv=1"),e[n]||function(){var a=window,r=document,o=n,d=r.location.protocol,s="load",l=0;!function(){function n(){c.P(s),c.w=1,e[o]("_load")}e[o]=function(){function n(){return n.id=i,e[o].apply(n,arguments)}var t,i=++l;return t=this&&this!=a&&this.id||0,(c.s=c.s||[]).push([i,t,arguments]),n.then=function(e,t,a){var r=c.fh[i]=c.fh[i]||[],o=c.eh[i]=c.eh[i]||[],d=c.ph[i]=c.ph[i]||[];return e&&r.push(e),t&&o.push(t),a&&d.push(a),n},n};var c=e[o]._={};c.fh={},c.eh={},c.ph={},c.l=i?i.replace(/^\/\//,("https:"==d?d:"http:")+"//"):i,c.p={0:+new Date},c.P=function(e){c.p[e]=new Date-c.p[0]},c.w&&n(),a.addEventListener?a.addEventListener(s,n,!1):a.attachEvent("on"+s,n);var u=function(){function e(){return["<head></head><",n,' onload="var d=',f,";d.getElementsByTagName('head')[0].",d,"(d.",s,"('script')).",l,"='",c.l,"'\"></",n,">"].join("")}var n="body",i=r[n];if(!i)return setTimeout(u,100);c.P(1);var a,d="appendChild",s="createElement",l="src",h=r[s]("div"),p=h[d](r[s]("div")),v=r[s]("iframe"),f="document";h.style.display="none",i.insertBefore(h,i.firstChild).id=t+"-"+o,v.frameBorder="0",v.id=t+"-frame-"+o,/MSIE[ ]+6/.test(navigator.userAgent)&&(v[l]="javascript:false"),v.allowTransparency="true",p[d](v);try{v.contentWindow[f].open()}catch(e){c.domain=r.domain,a="javascript:var d="+f+".open();d.domain='"+r.domain+"';",v[l]=a+"void(0);"}try{var w=v.contentWindow[f];w.write(e()),w.close()}catch(n){v[l]=a+'d.write("'+e().replace(/"/g,String.fromCharCode(92)+'"')+'");d.close();'}c.P(2)};c.l&&setTimeout(u,0)}()}(),e[n].lv="1",e[n]}var t="lightningjs",i=window[t]=n(t);i.require=n,i.modules=e}({}),window.usabilla_live=lightningjs.require("usabilla_live","//w.usabilla.com/1bba04d66c15.js")</script></body></html>
@@ -1 +0,0 @@
1
- .share-disclaimer{box-shadow:inset 0 0 0 1px #a9d5de,0 0 0 0 transparent;background-color:#f8ffff;color:#276f86;padding:1rem;border-radius:.25rem;margin:1rem 0 1.5rem}.share-loader{display:flex;justify-content:center;align-items:center;margin-bottom:1.5rem}.share-loader .common-spinner{margin-right:.5rem}.share-loader span{height:20px}.share-input{margin:1rem 0}.delete .checkbox{padding-top:1rem}.profiledialog .ui.card{margin:0 14px 14px 0;border-radius:0;color:#000;border:1px solid #000!important;background-color:#fff}.profiledialog button{margin:0}.profiledialog label.title{font-weight:700}.profiledialog p.value{white-space:nowrap}.profiledialog p.description,.profiledialog p.value{text-overflow:ellipsis;overflow:hidden}.profiledialog div.header-text{font-size:20px;white-space:nowrap;grid-row-start:1;grid-row-end:1;grid-column-start:1;grid-column-end:2;justify-self:start}.profiledialog div.profile-pic{grid-row-start:1;grid-row-end:1;grid-column-start:2;grid-column-end:2;justify-self:end}.profiledialog .ui.card.panel{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:350px;max-width:500px;padding:14px;display:inline-grid;grid-row-gap:20px;row-gap:20px;grid-template-rows:auto;grid-template-columns:auto}.profiledialog .ui.card.panel div.row{grid-column-end:2}.profiledialog .ui.card.panel div.row,.profiledialog .ui.card.panel div.row-span-two{grid-row-start:auto;grid-row-end:auto;grid-column-start:1;justify-self:start;max-width:100%}.profiledialog .ui.card.panel div.row-span-two{grid-column-end:3}.certificate-reward{display:flex;flex-direction:column;align-items:center;margin-top:1rem}.certificate-reward img{max-width:50%}.badge-modal-image{margin-top:1rem}.completion-reward{margin:1rem 0;width:100%}.confetti-container{position:absolute;width:100%;height:100%;overflow:hidden;z-index:100}.confetti{width:10px;height:10px;background-color:#249ca3;position:absolute;left:50%;top:-15px;-webkit-animation:confetti 2.5s linear -2s infinite;animation:confetti 2.5s linear -2s infinite;-webkit-transform-origin:left top;transform-origin:left top;z-index:110}.confetti.reverse{-webkit-animation:confetti-reverse 2.5s linear -2s infinite;animation:confetti-reverse 2.5s linear -2s infinite}.color-0{background-color:#ff2121}.color-1{background-color:#ff93c4}.color-2{background-color:#ff8135}.color-3{background-color:#fff609}.color-4{background-color:#249ca3}.color-5{background-color:#78dc52}.color-6{background-color:#003fad}.color-7{background-color:#87f2ff}.color-8{background-color:#8e2ec4}.high-contrast .confetti{display:none}.high-contrast .common-modal-container.sign-in .icon.cloud-user{-webkit-filter:invert();filter:invert()}@-webkit-keyframes confetti{0%{-webkit-transform:rotate(15deg) rotateY(0deg) translate(0);transform:rotate(15deg) rotateY(0deg) translate(0)}25%{-webkit-transform:rotate(5deg) rotateY(1turn) translate(-1vw,20vh);transform:rotate(5deg) rotateY(1turn) translate(-1vw,20vh)}50%{-webkit-transform:rotate(15deg) rotateY(2turn) translate(1vw,50vh);transform:rotate(15deg) rotateY(2turn) translate(1vw,50vh)}75%{-webkit-transform:rotate(5deg) rotateY(3turn) translate(-1vw,80vh);transform:rotate(5deg) rotateY(3turn) translate(-1vw,80vh)}to{-webkit-transform:rotate(15deg) rotateY(4turn) translate(1vw,110vh);transform:rotate(15deg) rotateY(4turn) translate(1vw,110vh)}}@keyframes confetti{0%{-webkit-transform:rotate(15deg) rotateY(0deg) translate(0);transform:rotate(15deg) rotateY(0deg) translate(0)}25%{-webkit-transform:rotate(5deg) rotateY(1turn) translate(-1vw,20vh);transform:rotate(5deg) rotateY(1turn) translate(-1vw,20vh)}50%{-webkit-transform:rotate(15deg) rotateY(2turn) translate(1vw,50vh);transform:rotate(15deg) rotateY(2turn) translate(1vw,50vh)}75%{-webkit-transform:rotate(5deg) rotateY(3turn) translate(-1vw,80vh);transform:rotate(5deg) rotateY(3turn) translate(-1vw,80vh)}to{-webkit-transform:rotate(15deg) rotateY(4turn) translate(1vw,110vh);transform:rotate(15deg) rotateY(4turn) translate(1vw,110vh)}}@-webkit-keyframes confetti-reverse{0%{-webkit-transform:rotate(5deg) rotateY(0deg) translate(0);transform:rotate(5deg) rotateY(0deg) translate(0)}25%{-webkit-transform:rotate(15deg) rotateY(1turn) translate(1vw,20vh);transform:rotate(15deg) rotateY(1turn) translate(1vw,20vh)}50%{-webkit-transform:rotate(5deg) rotateY(2turn) translate(-1vw,50vh);transform:rotate(5deg) rotateY(2turn) translate(-1vw,50vh)}75%{-webkit-transform:rotate(15deg) rotateY(3turn) translate(1vw,80vh);transform:rotate(15deg) rotateY(3turn) translate(1vw,80vh)}to{-webkit-transform:rotate(5deg) rotateY(4turn) translate(-1vw,110vh);transform:rotate(5deg) rotateY(4turn) translate(-1vw,110vh)}}@keyframes confetti-reverse{0%{-webkit-transform:rotate(5deg) rotateY(0deg) translate(0);transform:rotate(5deg) rotateY(0deg) translate(0)}25%{-webkit-transform:rotate(15deg) rotateY(1turn) translate(1vw,20vh);transform:rotate(15deg) rotateY(1turn) translate(1vw,20vh)}50%{-webkit-transform:rotate(5deg) rotateY(2turn) translate(-1vw,50vh);transform:rotate(5deg) rotateY(2turn) translate(-1vw,50vh)}75%{-webkit-transform:rotate(15deg) rotateY(3turn) translate(1vw,80vh);transform:rotate(15deg) rotateY(3turn) translate(1vw,80vh)}to{-webkit-transform:rotate(5deg) rotateY(4turn) translate(-1vw,110vh);transform:rotate(5deg) rotateY(4turn) translate(-1vw,110vh)}}.makecode-frame,.makecode-frame-outer{width:100%;height:100%}.makecode-frame-outer{overflow:hidden;position:relative}.makecode-frame-loader{position:absolute;width:100%;height:100%;background-color:var(--body-background-color);z-index:var(--frame-loader-zindex);text-align:center;display:flex;align-items:center;flex-direction:column;justify-content:center}.makecode-frame-loader.hidden{display:none}.makecode-frame-loader img{max-width:200px;vertical-align:middle;-webkit-animation:loader-pxt 2s linear infinite;animation:loader-pxt 2s linear infinite}.makecode-frame-loader-bar{border:1px solid var(--black);width:10rem;height:1.5rem;margin-bottom:1rem}.makecode-frame-loader-fill{background-color:var(--primary-color);height:100%;width:1rem;transition:width .5s ease-out}.high-contrast .makecode-frame-loader,.high-contrast .makecode-frame-loader-bar{background-color:var(--high-contrast-background);border-color:var(--high-contrast-text)}.high-contrast .makecode-frame-loader img{-webkit-filter:grayscale(100%) brightness(60%) contrast(400%);filter:grayscale(100%) brightness(60%) contrast(400%);animation:none;-webkit-animation:none}.high-contrast .makecode-frame-loader-fill{background-color:var(--high-contrast-text)}@-webkit-keyframes loader-pxt{0%{-webkit-transform:perspective(160px) rotateX(0deg) rotateY(0deg);transform:perspective(160px) rotateX(0deg) rotateY(0deg)}15%{-webkit-transform:perspective(160px) rotateX(0deg) rotateY(-5deg);transform:perspective(160px) rotateX(0deg) rotateY(-5deg)}50%{-webkit-transform:perspective(160px) rotateX(0deg) rotateY(5deg);transform:perspective(160px) rotateX(0deg) rotateY(5deg)}to{-webkit-transform:perspective(160px) rotateX(0deg) rotateY(0deg);transform:perspective(160px) rotateX(0deg) rotateY(0deg)}}@keyframes loader-pxt{0%{-webkit-transform:perspective(160px) rotateX(0deg) rotateY(0deg);transform:perspective(160px) rotateX(0deg) rotateY(0deg)}15%{-webkit-transform:perspective(160px) rotateX(0deg) rotateY(-5deg);transform:perspective(160px) rotateX(0deg) rotateY(-5deg)}50%{-webkit-transform:perspective(160px) rotateX(0deg) rotateY(5deg);transform:perspective(160px) rotateX(0deg) rotateY(5deg)}to{-webkit-transform:perspective(160px) rotateX(0deg) rotateY(0deg);transform:perspective(160px) rotateX(0deg) rotateY(0deg)}}.selected .highlight{stroke-width:4px;fill:transparent}.graph-icon{font-family:"Font Awesome 5 Free"}.graph-icon,.graph-icon-x{font-size:1.75rem;opacity:.8}.graph-icon-x{font-family:xicon}.graph-activity.hover .graph-icon,.graph-activity.hover .graph-icon-x{opacity:1}.graph-status-icon{font-family:"Font Awesome 5 Free";font-size:1rem}.graph-activity{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.graph-activity:focus-within .focus-outline{stroke-width:4px;fill:transparent;stroke:#00f}.common-button.graph-node-button{height:100%;width:100%;margin:0;padding:0;opacity:0}.high-contrast .graph-activity.hover{outline:var(--high-contrast-focus-outline)}.high-contrast .graph-activity:focus-within .focus-outline{stroke-width:4px;fill:transparent;stroke:#fff}.skill-graph-wrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1 1}.skill-graph-content{position:relative;display:flex;flex-direction:column;width:90%;z-index:var(--above-graph-zindex)}.skill-graph-activities{z-index:var(--graph-backround-zindex);-webkit-user-select:none;-ms-user-select:none;user-select:none}.has-background .skill-graph-activities{position:absolute;width:100%;height:100%}.skill-graph-content:not(.has-background) .skill-graph-background{position:absolute}.skill-graph-activities svg,.skill-graph-background img{object-fit:contain;width:100%;max-height:100%}.high-contrast .skill-graph-background{visibility:hidden}.high-contrast .skill-map-container{background-color:var(--high-contrast-background)!important}.high-contrast .graph-activity circle,.high-contrast .graph-activity path,.high-contrast .graph-activity rect{fill:var(--high-contrast-background);stroke:var(--high-contrast-text);opacity:1}.high-contrast .graph-activity text{fill:var(--high-contrast-text);opacity:1}.high-contrast .graph-activity .highlight{stroke:var(--high-contrast-highlight)}.high-contrast .skill-graph>g{opacity:1}.high-contrast .skill-graph-path-border{stroke:var(--high-contrast-text)}.high-contrast .skill-graph-path{stroke:var(--high-contrast-background)}.info-panel{display:flex;flex-direction:column;align-items:stretch;width:20rem;margin:1rem;z-index:var(--above-graph-zindex);background-color:var(--body-background-color)}.info-panel>.info-panel-image{width:100%;height:12rem;display:flex;justify-content:center;align-items:center;overflow:hidden;text-align:center;background-color:var(--primary-color);border:1px solid #000}.info-panel-image img{width:100%}.info-panel-image i{color:var(--white);font-size:5rem;line-height:5rem;vertical-align:top}.info-panel-content{padding:1rem;flex-grow:100;border:1px solid #000;overflow-y:auto}.info-panel-content>div{flex-shrink:0;margin-bottom:.5rem}.info-panel-content>.info-panel-tags,.info-panel-content>.tablet-spacer{margin:0}.info-panel-content>.info-panel-label,.info-panel-content>.info-panel-link,.info-panel-content>.info-panel-title{margin-bottom:1rem}.info-panel-title{font-size:1.2rem;font-weight:700;text-align:center;overflow:hidden;text-overflow:ellipsis}.info-panel-subtitle{font-size:.8rem}.info-panel-label,.info-panel-subtitle{text-align:center;text-transform:uppercase}.info-panel-label{padding:.5rem;background-color:var(--inactive-color)}.info-panel-link{display:block;width:100%;text-align:center}.info-panel-detail{display:flex;font-size:.8rem;text-transform:uppercase;justify-content:space-between}.info-panel-tags{display:flex;flex-wrap:wrap}.info-panel-tags>div{color:var(--active-color);border:1px solid var(--active-color);padding:.2rem .5rem;font-size:.8rem;margin:0 .5rem .5rem 0;white-space:nowrap;-webkit-user-select:none;-ms-user-select:none;user-select:none}.info-panel .sign-in-button.inverted{width:100%;background-color:var(--body-background-color)}.info-panel .actions{display:flex;flex-direction:column}.info-panel .actions .common-button{margin-bottom:.5rem}.info-panel .actions .common-button.inverted{background-color:var(--body-background-color)}.locked.action-button,.locked.action-button:hover{color:var(--inactive-color);background-color:transparent;border-color:var(--inactive-color);cursor:default}.cloud-action{margin-top:1rem;display:flex;flex-direction:column}.cloud-indicator{display:flex;color:#2ea9b0}.cloud-indicator>.xicon{margin-right:.5rem}.high-contrast .info-panel-content,.high-contrast .info-panel-image,.high-contrast .info-panel-label,.high-contrast .info-panel-tags>div{color:var(--high-contrast-text);border:1px solid var(--high-contrast-text);background-color:var(--high-contrast-background)}.high-contrast .cloud-indicator{color:var(--high-contrast-text)}.high-contrast .info-panel .actions .common-button{background-color:var(--high-contrast-background)}@media only screen and (max-width:991px){.info-panel{flex-direction:row;width:unset;height:18rem}.info-panel>.info-panel-image{height:100%;width:16rem;flex-direction:column}.info-panel-image img{height:100%;width:unset}.info-panel-content{position:relative;display:flex;flex-direction:column;flex:1 1}.info-panel-content>.info-panel-title{margin-bottom:.5rem}.info-panel-content>.info-panel-subtitle{margin:0}.info-panel-content>.info-panel-label{margin:1rem}.info-panel-subtitle,.info-panel-title{text-align:left}.info-panel-label{position:absolute;right:0;top:0;width:12rem;padding:.5rem 1rem}.info-panel-link{text-align:left}.info-panel .actions{display:flex;flex-direction:row;justify-content:space-evenly;margin-bottom:0}.info-panel .actions.grid{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:.5rem;row-gap:.5rem}.info-panel .common-button{flex:0.5 1;margin-right:1rem;margin-bottom:0}.info-panel .common-button:last-child,.info-panel .grid .common-button:nth-child(2){margin-right:0}.info-panel .sign-in-button{min-height:3rem}}@media only screen and (max-width:762px){.info-panel>.info-panel-image{display:none}.info-panel-label{width:unset}}:root{--black:#000;--white:#fff;--primary-color:#aa278f;--secondary-color:#eac6eb;--tertiary-color:#850a6b;--hover-color:var(--secondary-color);--active-color:var(--tertiary-color);--inactive-color:var(--secondary-color);--inactive-hover-color:#6e6e6e;--invert-active-color:#fff;--invert-hover-text-color:#850a6b;--body-background-color:#f9f9f9;--default-card-color:#ccc;--card-hover-color:#bfbfbf;--card-border-color:#e9eef2;--dropdown-hover-color:#ccc;--inverted-text-color:var(--white);--subtitle-text-color:#6e6e6e;--header-height:4rem;--header-padding-top:1rem;--body-font-family:"Share Tech Mono",Monaco,Menlo,"Ubuntu Mono",Consolas,source-code-pro,monospace;--feature-text-font:Segoe UI,Tahoma,Geneva,Verdana;--frame-loader-zindex:30;--above-frame-zindex:50;--modal-dimmer-zindex:100;--fullscreen-modal-zindex:90;--graph-backround-zindex:10;--above-graph-zindex:20;--high-contrast-text:var(--white);--high-contrast-background:var(--black);--high-contrast-highlight:#ff0;--high-contrast-focus-outline:2px solid var(--high-contrast-highlight);--high-contrast-hyperlink:#807fff}body{position:relative;margin:0;font-family:"Share Tech Mono",Monaco,Menlo,"Ubuntu Mono",Consolas,source-code-pro,monospace;font-family:var(--body-font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f9f9f9;background-color:var(--body-background-color);overflow:hidden}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}#root{width:100%}#root,#root.editor{height:100%}#root>div,.app-container{width:100%;height:100%}.app-container{display:flex;flex-direction:column}.noclick{pointer-events:none;cursor:default}.header{background-color:#850a6b;background-color:var(--tertiary-color);height:4rem;height:var(--header-height);max-height:4rem;max-height:var(--header-height);display:flex;align-items:center;color:#fff;color:var(--inverted-text-color);flex-grow:0;flex-shrink:0;z-index:50;z-index:var(--above-frame-zindex)}.header-left,.header-right{display:flex;align-items:center;height:100%}.header-logo{display:flex}.header .brand{font-size:1.5rem;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex}.header .brand:before{position:relative;height:1.5rem;border-left:2px solid #fff;content:" "}.ui.item.logo .name{margin-left:1rem;margin-bottom:1px}.header-logo img{height:1.4rem;margin:0 1rem}.user-menu{height:100%}.user-menu .header-button.sign-in{border-radius:6px;background-color:#f9f9f9;background-color:var(--body-background-color);color:#393939;height:80%;margin:.5rem 1rem .5rem .5rem;padding:.6rem;font-family:Segoe UI,Tahoma,Geneva,Verdana;font-family:var(--feature-text-font);font-weight:500;flex-direction:row-reverse;align-items:center}.user-menu .header-dropdown{height:inherit;cursor:pointer;width:3.5rem}.user-menu .avatar,.user-menu .header-dropdown{display:flex;align-items:center;justify-content:center}.user-menu .avatar{height:100%}.user-menu .avatar img{border:2px solid #fff;border-radius:100%;width:2.5rem;height:2.5rem}.header-org-logo{height:2rem;margin-left:1rem}.header-org-logo img{height:100%}.header-org-logo .header-org-logo-small{display:none}.header i{line-height:2rem;cursor:pointer}.header-dropdown i,.header-dropdown img,.header-dropdown span{display:flex;justify-content:center;align-items:center;height:4rem;height:var(--header-height);width:3.5rem;margin:0;font-size:1.6rem}.header-button{color:#fff;color:var(--invert-active-color);height:100%;padding:1rem .5rem;padding:var(--header-padding-top) .5rem;font-size:1.2rem;text-align:center;cursor:pointer;flex:1 1;-webkit-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;font-size:1.6rem}.header-button.with-label{flex-grow:3;display:flex}.header-button.icon-only{font-size:unset;padding:1rem .5rem;padding:var(--header-padding-top) .5rem}.header-button .header-button-label{line-height:2rem;white-space:nowrap;font-size:1rem;margin-right:.4rem}.header-button:hover,.header-dropdown:hover{background-color:rgba(0,0,0,.1)}.header-button:hover>i,.header-dropdown:hover>i{-webkit-transform:scale(1.2);transform:scale(1.2)}.header-button.sign-in:hover{-webkit-transform:scale(1.1);transform:scale(1.1)}.header-button.sign-in:hover>i,.header-button.sign-in:hover>span{-webkit-transform:none;transform:none}.header-activity-display-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex-shrink:10;font-size:1.2rem;font-weight:700}.avatar-initials{height:2.5rem;width:2.5rem;border-radius:100%;border:2px solid #fff;background-color:#028b9b;display:flex;align-items:center;justify-content:center;font-size:16px}.header-dropdown.user-dropdown .dropdown-menu{top:4rem;top:var(--header-height)}.banner{background-color:#eac6eb;background-color:var(--secondary-color);display:flex;align-items:center;height:12rem;margin-bottom:.5rem}.banner-card{background-color:#aa278f;background-color:var(--primary-color);min-width:24rem;width:60%;display:flex;color:#fff;color:var(--inverted-text-color)}.banner-card>i{font-size:5rem;line-height:5rem;margin:2rem 1rem;flex-shrink:0}.banner-text{display:flex;flex-direction:column;justify-content:center;padding-right:1rem}.banner-title{font-size:2rem;margin-bottom:.5rem}.banner-info i,.banner-info i:hover{margin-left:.5rem;color:#fff;color:var(--inverted-text-color);font-size:1.2rem;vertical-align:top;text-decoration:none}.skill-map-container{flex-grow:1;display:flex;flex-direction:row;justify-content:center}.skill-map-error{text-align:center;margin-top:2rem;color:red}.report-abuse-text{width:100%;height:7rem;margin:.5rem 0;padding:.5rem}.report-abuse-text::-webkit-input-placeholder{font-style:italic}.report-abuse-text:-ms-input-placeholder{font-style:italic}.report-abuse-text::placeholder{font-style:italic}.badge-modal-image{display:flex;justify-content:center}.badge-modal-image img{height:15rem}.usabilla_live_button_container{top:unset!important;bottom:9rem!important}#msccBanner{display:none}.high-contrast .header{background-color:#000;background-color:var(--high-contrast-background);border-bottom:2px solid #fff;border-bottom:2px solid var(--high-contrast-text)}.high-contrast .header-dropdown i{height:calc(4rem - 2px);height:calc(var(--header-height) - 2px)}.high-contrast .avatar-initials{background-color:#000;background-color:var(--high-contrast-background)}.high-contrast a{color:#807fff;color:var(--high-contrast-hyperlink);text-decoration:underline}.high-contrast a:hover{outline:2px solid #ff0;outline:var(--high-contrast-focus-outline)}@media only screen and (max-width:991px){.skill-map-container{flex-direction:column}.tablet-spacer{flex-grow:1}.usabilla_live_button_container{bottom:14rem!important}}@media only screen and (max-height:44rem) and (min-width:767px){:root{--header-height:3rem;--header-padding-top:.5rem}.header-button.with-label{flex-grow:1}.user-menu .header-button.sign-in{padding:.2rem .8rem;margin-top:.4rem}}@media only screen and (max-width:767px){.header-org-logo .header-org-logo-large{display:none}.header-org-logo .header-org-logo-small{display:block}.user-menu .header-button.sign-in{padding-left:.6rem}.user-menu .header-button.sign-in .header-button-label{display:none}}body{background:#fdf3e0}.arcade{--primary-color:#e77038;--secondary-color:#ffeb9a;--tertiary-color:#e77038;--hover-color:var(--secondary-color);--active-color:var(--tertiary-color);--inactive-color:#bfbfbf;--invert-active-color:#fff;--invert-hover-text-color:#e77038;--body-background-color:#fdf3e0;--card-hover-color:var(--default-card-color)}.arcade .banner{background:linear-gradient(90deg,#9feffd,#fd99c2)}.arcade .dropdown-menu,.arcade .modal{background-color:var(--white)}.arcade .carousel-arrow{color:var(--primary-color)}