pxt-core 8.2.3 → 8.2.4

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.
@@ -1 +1 @@
1
- var pxt;!function(e){!function(t){let r,o,s,i;!function(e){e[e.Stopped=0]="Stopped",e[e.Pending=1]="Pending",e[e.Starting=2]="Starting",e[e.Running=3]="Running"}(r=t.SimState||(t.SimState={})),t.isBlocks=function(t){return e.U.endsWith(t.name,".blocks")},function(e){e.HeaderOnly="errorListHeader",e.Expanded="errorListExpanded"}(o=t.ErrorListState||(t.ErrorListState={})),function(e){e[e.Hidden=0]="Hidden",e[e.Visible=1]="Visible",e[e.Disabled=2]="Disabled"}(s=t.FilterState||(t.FilterState={})),t.initExtensionsAsync=e=>Promise.resolve({}),t.initFieldExtensionsAsync=e=>Promise.resolve({}),t.HELP_IMAGE_URI="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTMiIGN5PSIxMyIgcj0iMTMiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xNy45NTIgOS4xODQwMkMxNy45NTIgMTAuMjU2IDE3LjgxNiAxMS4wNzIgMTcuNTQ0IDExLjYzMkMxNy4yODggMTIuMTkyIDE2Ljc1MiAxMi43OTIgMTUuOTM2IDEzLjQzMkMxNS4xMiAxNC4wNzIgMTQuNTc2IDE0LjU4NCAxNC4zMDQgMTQuOTY4QzE0LjA0OCAxNS4zMzYgMTMuOTIgMTUuNzM2IDEzLjkyIDE2LjE2OFYxNi45NkgxMS44MDhDMTEuNDI0IDE2LjQ2NCAxMS4yMzIgMTUuODQgMTEuMjMyIDE1LjA4OEMxMS4yMzIgMTQuNjg4IDExLjM4NCAxNC4yODggMTEuNjg4IDEzLjg4OEMxMS45OTIgMTMuNDg4IDEyLjUzNiAxMi45NjggMTMuMzIgMTIuMzI4QzE0LjEwNCAxMS42NzIgMTQuNjI0IDExLjE2OCAxNC44OCAxMC44MTZDMTUuMTM2IDEwLjQ0OCAxNS4yNjQgOS45NjgwMiAxNS4yNjQgOS4zNzYwMkMxNS4yNjQgOC4yMDgwMiAxNC40MTYgNy42MjQwMiAxMi43MiA3LjYyNDAyQzExLjc2IDcuNjI0MDIgMTAuNzUyIDcuNzM2MDIgOS42OTYgNy45NjAwMkw5LjE0NCA4LjA4MDAyTDkgNi4wODgwMkMxMC40ODggNS41NjAwMiAxMS44NCA1LjI5NjAyIDEzLjA1NiA1LjI5NjAyQzE0LjczNiA1LjI5NjAyIDE1Ljk2OCA1LjYwODAyIDE2Ljc1MiA2LjIzMjAyQzE3LjU1MiA2Ljg0MDAyIDE3Ljk1MiA3LjgyNDAyIDE3Ljk1MiA5LjE4NDAyWk0xMS40IDIyVjE4LjY0SDE0LjE4NFYyMkgxMS40WiIgZmlsbD0iIzU5NUU3NCIvPgo8L3N2Zz4K",t.initEditorExtensionsAsync=function(){if(!i&&(i=Promise.resolve(),e.appTarget&&e.appTarget.appTheme&&e.appTarget.appTheme.extendFieldEditors)){const t={};i=i.then((()=>e.BrowserUtils.loadBlocklyAsync())).then((()=>e.BrowserUtils.loadScriptAsync("fieldeditors.js"))).then((()=>e.editor.initFieldExtensionsAsync(t))).then((t=>{t.fieldEditors&&t.fieldEditors.forEach((t=>{e.blocks.registerFieldEditor(t.selector,t.editor,t.validator)}))}))}return i}}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){const r={};function o(e,t,r,o){e.response&&window.parent.postMessage({type:e.type,id:e.id,resp:t,success:r,error:o},"*")}function s(t){return new Promise(((o,s)=>{const i=e.Util.clone(t);i.id=ts.pxtc.Util.guidGen(),t.response&&(r[i.id]={resolve:o,reject:s}),window.parent.postMessage(i,"*"),t.response||o(void 0)}))}t.bindEditorMessages=function(t){const s=(e.appTarget.appTheme.allowParentController||e.shell.isControllerMode())&&e.BrowserUtils.isIFrame(),i=e.appTarget.appTheme.allowPackageExtensions,n=e.appTarget.appTheme.allowSimulatorTelemetry;(s||i||n)&&window.addEventListener("message",(a=>{const c=a.data;if(!c||!/^pxt(host|editor|pkgext|sim)$/.test(c.type))return!1;if("pxtpkgext"===c.type&&i)t().then((e=>{e.handleExtensionRequest(c)}));else if("pxtsim"===c.type&&n){const t=c;"event"===t.action&&(t.category||t.message?e.reportError(t.category,t.message,t.data):e.tickEvent(t.tick,t.data))}else if(s){let s,i=Promise.resolve();if("pxthost"==c.type){const t=r[c.id];t?i=i.then((()=>t.resolve(c))):e.debug(`pxthost: unknown request ${c.id}`)}else"pxteditor"==c.type&&(i=i.then((()=>t().then((t=>{const r=c;switch(e.debug(`pxteditor: ${r.action}`),r.action.toLowerCase()){case"switchjavascript":return Promise.resolve().then((()=>t.openJavaScript()));case"switchpython":return Promise.resolve().then((()=>t.openPython()));case"switchblocks":return Promise.resolve().then((()=>t.openBlocks()));case"startsimulator":return Promise.resolve().then((()=>t.startSimulator()));case"restartsimulator":return Promise.resolve().then((()=>t.restartSimulator()));case"hidesimulator":return Promise.resolve().then((()=>t.collapseSimulator()));case"showsimulator":return Promise.resolve().then((()=>t.expandSimulator()));case"closeflyout":return Promise.resolve().then((()=>t.closeFlyout()));case"unloadproject":return Promise.resolve().then((()=>t.unloadProjectAsync()));case"saveproject":return t.saveProjectAsync();case"redo":return Promise.resolve().then((()=>{const e=t.editor;e&&e.hasRedo()&&e.redo()}));case"undo":return Promise.resolve().then((()=>{const e=t.editor;e&&e.hasUndo()&&e.undo()}));case"setscale":{const e=c;return Promise.resolve().then((()=>t.editor.setScale(e.scale)))}case"stopsimulator":{const e=c;return Promise.resolve().then((()=>t.stopSimulator(e.unload)))}case"newproject":{const e=c;return Promise.resolve().then((()=>t.newProject(e.options)))}case"importproject":{const e=c;return Promise.resolve().then((()=>t.importProjectAsync(e.project,{filters:e.filters,searchBar:e.searchBar})))}case"openheader":{const e=c;return t.openProjectByHeaderIdAsync(e.headerId)}case"startactivity":{const r=c;let o,s=r.path;return/^([jt]s|py|blocks?):/i.test(s)&&(o=/^py:/i.test(s)?e.PYTHON_PROJECT_NAME:/^[jt]s:/i.test(s)?e.JAVASCRIPT_PROJECT_NAME:e.BLOCKS_PROJECT_NAME,s=s.substr(s.indexOf(":")+1)),Promise.resolve().then((()=>t.startActivity({activity:r.activityType,path:s,title:r.title,editor:o,previousProjectHeaderId:r.previousProjectHeaderId,carryoverPreviousCode:r.carryoverPreviousCode})))}case"importtutorial":{const e=c;return Promise.resolve().then((()=>t.importTutorialAsync(e.markdown)))}case"proxytosim":{const e=c;return Promise.resolve().then((()=>t.proxySimulatorMessage(e.content)))}case"renderblocks":{const e=c;return Promise.resolve().then((()=>t.renderBlocksAsync(e))).then((e=>e.xml.then((e=>{s=e.xml}))))}case"renderpython":{const e=c;return Promise.resolve().then((()=>t.renderPythonAsync(e))).then((e=>{s=e.python}))}case"toggletrace":{const e=c;return Promise.resolve().then((()=>t.toggleTrace(e.intervalSpeed)))}case"settracestate":{const e=c;return Promise.resolve().then((()=>t.setTrace(e.enabled,e.intervalSpeed)))}case"setsimulatorfullscreen":{const e=c;return Promise.resolve().then((()=>t.setSimulatorFullScreen(e.enabled)))}case"togglehighcontrast":return Promise.resolve().then((()=>t.toggleHighContrast()));case"sethighcontrast":{const e=c;return Promise.resolve().then((()=>t.setHighContrast(e.on)))}case"togglegreenscreen":return Promise.resolve().then((()=>t.toggleGreenScreen()));case"print":return Promise.resolve().then((()=>t.printCode()));case"pair":return t.pairAsync();case"info":return Promise.resolve().then((()=>{s={versions:e.appTarget.versions,locale:ts.pxtc.Util.userLanguage(),availableLocales:e.appTarget.appTheme.availableLocales}}));case"shareproject":{const e=c;return t.anonymousPublishHeaderByIdAsync(e.headerId).then((e=>{s=e}))}case"savelocalprojectstocloud":{const e=c;return t.saveLocalProjectsToCloudAsync(e.headerIds).then((e=>{s={headerIdMap:e}}))}case"requestprojectcloudstatus":{const e=c;return t.requestProjectCloudStatus(e.headerIds)}case"convertcloudprojectstolocal":{const e=c;return t.convertCloudProjectsToLocal(e.userId)}case"setlanguagerestriction":{const e=c;if("no-blocks"===e.restriction)throw console.warn("no-blocks language restriction is not supported"),new Error("no-blocks language restriction is not supported");return t.setLanguageRestrictionAsync(e.restriction)}}return Promise.resolve()})))));i.then((()=>o(c,s,!0,void 0)),(e=>o(c,s,!1,e)))}return!0}),!1)},t.enableControllerAnalytics=function(){if(!e.appTarget.appTheme.allowParentController||!e.BrowserUtils.isIFrame())return;const t=e.tickEvent;e.tickEvent=function(e,r){t&&t(e,r),s({type:"pxthost",action:"event",tick:e,response:!1,data:r})};const r=e.reportException;e.reportException=function(e,t){r&&r(e,t);try{s({type:"pxthost",action:"event",tick:"error",message:e.message,response:!1,data:t})}catch(e){}};const o=e.reportError;e.reportError=function(e,t,r){o&&o(e,t,r),s({type:"pxthost",action:"event",tick:"error",category:e,message:t,data:r})}},t.shouldPostHostMessages=function(){return e.appTarget.appTheme.allowParentController&&e.BrowserUtils.isIFrame()},t.postHostMessageAsync=s}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){!function(t){function r(e){return`experiments-${"object"==typeof e?e.id:e}`}function o(){const t=e.savedAppTheme(),r={},o=s();return o.forEach((e=>{const o=i(e);t[e.id]=!!o,o&&(r[e.id]=o?1:0)})),o.length&&Object.keys(r).length&&(e.tickEvent("experiments.loaded",r),e.reloadAppTargetVariant()),e.appTarget.appTheme}function s(){const t=e.appTarget.appTheme.experiments;return t?[{id:"print",name:lf("Print Code"),description:lf("Print the code from the current project"),feedbackUrl:"https://github.com/microsoft/pxt/issues/4740"},{id:"greenScreen",name:lf("Green screen"),description:lf("Display a webcam video stream or a green background behind the code."),feedbackUrl:"https://github.com/microsoft/pxt/issues/4738"},{id:"allowPackageExtensions",name:lf("Editor Extensions"),description:lf("Allow Extensions to add buttons in the editor."),feedbackUrl:"https://github.com/microsoft/pxt/issues/4741"},{id:"instructions",name:lf("Wiring Instructions"),description:lf("Generate step-by-step assembly instructions for breadboard wiring."),feedbackUrl:"https://github.com/microsoft/pxt/issues/4739"},{id:"debugger",name:lf("Debugger"),description:lf("Step through code and inspect variables in the debugger"),feedbackUrl:"https://github.com/microsoft/pxt/issues/4729"},{id:"bluetoothUartConsole",name:"Bluetooth Console",description:lf("Receives UART message through Web Bluetooth"),feedbackUrl:"https://github.com/microsoft/pxt/issues/4796"},{id:"bluetoothPartialFlashing",name:"Bluetooth Download",description:lf("Download code via Web Bluetooth"),feedbackUrl:"https://github.com/microsoft/pxt/issues/4807"},{id:"simScreenshot",name:lf("Simulator Screenshots"),description:lf("Download screenshots of the simulator"),feedbackUrl:"https://github.com/microsoft/pxt/issues/5232"},{id:"python",name:lf("Static Python"),description:lf("Use Static Python to code your device"),feedbackUrl:"https://github.com/microsoft/pxt/issues/5390"},{id:"simGif",name:lf("Simulator Gifs"),description:lf("Download gifs of the simulator"),feedbackUrl:"https://github.com/microsoft/pxt/issues/5297"},{id:"qrCode",name:lf("Shared QR Code"),description:lf("Generate a QR Code form the shared project url"),feedbackUrl:"https://github.com/microsoft/pxt/issues/5456"},{id:"importExtensionFiles",name:lf("Import Extension Files"),description:lf("Import Extensions from compiled project files")},{id:"debugExtensionCode",name:lf("Debug Extension Code"),description:lf("Use the JavaScript debugger to debug extension code")},{id:"snippetBuilder",name:lf("Snippet Builder"),description:lf("Try out the new snippet dialogs.")},{id:"experimentalHw",name:lf("Experimental Hardware"),description:lf("Enable support for hardware marked 'experimental' in the hardware seletion dialog")},{id:"checkForHwVariantWebUSB",name:lf("Detect Hardware with WebUSB"),description:lf("When compiling, use WebUSB to detect hardware configuration.")},{id:"githubEditor",name:lf("GitHub editor"),description:lf("Review, commit and push to GitHub."),feedbackUrl:"https://github.com/microsoft/pxt/issues/6419",enableOnline:!0},{id:"githubCompiledJs",name:lf("GitHub Pages JavaScript"),description:lf("Commit compiled javascript when creating a release"),enableOnline:!0},{id:"blocksCollapsing",name:lf("Collapse blocks"),description:lf("Collapse and expand functions or event blocks")},{id:"tutorialBlocksDiff",name:lf("Tutorial Block Diffs"),description:lf("Automatially render blocks diff in tutorials")},{id:"openProjectNewTab",name:lf("Open in New Tab"),description:lf("Open an editor in a new tab.")},{id:"openProjectNewDependentTab",name:lf("Open in New Connected Tab"),description:lf("Open connected editors in different browser tabs.")},{id:"accessibleBlocks",name:lf("Accessible Blocks"),description:lf("Use the WASD keys to move and modify blocks."),feedbackUrl:"https://github.com/microsoft/pxt/issues/6850"},{id:"errorList",name:lf("Error List"),description:lf("Show an error list panel for JavaScript and Python.")},{id:"blocksErrorList",name:lf("Blocks Error List"),description:lf("Show an error list panel for Blocks")}].filter((r=>t.indexOf(r.id)>-1&&!(e.BrowserUtils.isPxtElectron()&&r.enableOnline))):[]}function i(t){return!!e.storage.getLocal(r(t))}function n(t,s){s!=i(t)&&(s?e.storage.setLocal(r(t),"1"):e.storage.removeLocal(r(t)),o())}t.syncTheme=o,t.all=s,t.clear=function(){s().forEach((t=>e.storage.removeLocal(r(t)))),o()},t.someEnabled=function(){return s().some((e=>i(e)))},t.isEnabled=i,t.toggle=function(e){n(e,!i(e))},t.state=function(){const e={};return s().forEach((t=>e[t.id]=i(t))),JSON.stringify(e)},t.setState=n}(t.experiments||(t.experiments={}))}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){function r(t){const r=e.appTarget.appTheme.invertedMonaco,o=!(!e.appTarget.appTheme.monacoFieldEditors||!e.appTarget.appTheme.monacoFieldEditors.length),s=e.BrowserUtils.isAndroid();let i=monaco.editor.create(t,{model:null,ariaLabel:e.Util.lf("JavaScript editor"),fontFamily:"'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', 'monospace'",scrollBeyondLastLine:!0,language:"typescript",mouseWheelZoom:!1,wordBasedSuggestions:!0,lineNumbersMinChars:3,formatOnPaste:!0,folding:o,glyphMargin:o||e.appTarget.appTheme.debugger,minimap:{enabled:!1},fixedOverflowWidgets:!0,autoIndent:"full",useTabStops:!0,dragAndDrop:!0,matchBrackets:"always",occurrencesHighlight:!1,quickSuggestionsDelay:200,theme:r?"vs-dark":"vs",renderIndentGuides:!0,accessibilityHelpUrl:"",quickSuggestions:{other:!s,comments:!s,strings:!s},acceptSuggestionOnCommitCharacter:!s,acceptSuggestionOnEnter:s?"off":"on",accessibilitySupport:s?"off":"on"});return i.layout(),i}t.syncModels=function(e,t,r,o){if(o)return;let s=monaco.languages.typescript.typescriptDefaults.getExtraLibs(),i={};e.sortedDeps().forEach((e=>{e.getFiles().forEach((o=>{let s=e.id+"/"+o;if(/\.(ts)$/.test(o)&&s!=r){if(!monaco.languages.typescript.typescriptDefaults.getExtraLibs()[s]){let r=e.readFile(o)||"\n";t[s]=monaco.languages.typescript.typescriptDefaults.addExtraLib(r,s)}i[s]="1"}}))})),Object.keys(s).filter((e=>/\.(ts)$/.test(e)&&!i[e])).forEach((e=>{t[e].dispose()}))},t.initMonacoAsync=function(t){return new Promise(((o,s)=>{if("object"==typeof window.monaco)return void o(r(t));let i=window.MonacoPaths,n=()=>{let s=window.require;s.config({paths:i}),s(["vs/editor/editor.main"],(()=>{monaco.languages.register({id:"asm",extensions:[".asm"]}),monaco.languages.setMonarchTokensProvider("asm",{tokenPostfix:"",keywords:["movs","mov","adds","add","adcs","adr","subs","sbcs","sub","rsbs","muls","cmp","cmn","ands","eors","orrs","bics","mvns","tst","lsls","lsrs","asrs","rors","ldr","ldrh","ldrb","ldrsh","ldrsb","ldm","str","strh","strb","stm","push","pop","cbz","cbnz","b","bl","bx","blx","sxth","sxtb","uxth","uxtb","rev","rev16","revsh","svc","cpsid","cpsie","setend","bkpt","nop","sev","wfe","wfi","yield","beq","bne","bcs","bhs","bcc","blo","bmi","bpl","bvs","bvc","bhi","bls","bge","blt","bgt","ble","bal","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","r13","r14","r15","pc","sp","lr"],typeKeywords:[".startaddr",".hex",".short",".space",".section",".string",".byte"],operators:[],symbols:/[:\*]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/(\.)?[a-z_$\.][\w$]*/,{cases:{"@typeKeywords":"keyword","@keywords":"keyword","@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,{token:"annotation"}],[/(#|(0[xX]))?[0-9a-fA-F]+/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],comment:[],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/;.*$/,"comment"]]}}),monaco.languages.typescript&&(monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({noSyntaxValidation:!0,noSemanticValidation:!0}),monaco.languages.typescript.typescriptDefaults.setWorkerOptions({customWorkerPath:e.webConfig.typeScriptWorkerJs}),monaco.languages.typescript.typescriptDefaults.setCompilerOptions({allowUnreachableCode:!0,noImplicitAny:!0,allowJs:!1,allowUnusedLabels:!0,target:monaco.languages.typescript.ScriptTarget.ES5,outDir:"built",rootDir:".",noLib:!0,mouseWheelZoom:!1})),o(r(t))}))};if(window.require)n();else{let e=document.createElement("script");e.type="text/javascript",e.src=i["vs/loader"],e.addEventListener("load",n),document.body.appendChild(e)}}))},t.createEditor=r}(e.vs||(e.vs={}))}(pxt||(pxt={})),function(e){!function(t){t.freshHeader=function(t,r){return{target:e.appTarget.id,targetVersion:e.appTarget.versions.target,name:t,meta:{},editor:e.JAVASCRIPT_PROJECT_NAME,pubId:"",pubCurrent:!1,_rev:null,id:e.U.guidGen(),recentUse:r,modificationTime:r,cloudUserId:null,cloudCurrent:!1,cloudVersion:null,cloudLastSyncTime:0,isDeleted:!1}}}(e.workspace||(e.workspace={}))}(pxt||(pxt={})),function(e){!function(e){const t={};e.registerMonacoFieldEditor=function(e,r){t[e]=r},e.getMonacoFieldEditor=function(e){return t[e]}}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){t.MonacoReactFieldEditor=class{getId(){return"image-editor"}showEditorAsync(t,r,o){return this.fileType=t,this.editrange=r,this.host=o,this.initAsync().then((()=>{const t=this.textToValue(o.getText(r));return t?(this.fv=e.react.getFieldEditorView(this.getFieldEditorId(),t,this.getOptions()),this.fv.onHide((()=>{this.onClosed()})),this.fv.show(),new Promise(((e,t)=>{this.resolver=e,this.rejecter=t}))):Promise.resolve(null)}))}onClosed(){this.resolver&&(this.resolver({range:this.editrange,replacement:this.resultToText(this.fv.getResult())}),this.editrange=void 0,this.resolver=void 0,this.rejecter=void 0)}dispose(){this.onClosed()}initAsync(){return Promise.resolve()}textToValue(e){return null}resultToText(e){return e+""}getFieldEditorId(){return""}getOptions(){return null}}}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(e){const t="soundeffect-editor";class r extends e.MonacoReactFieldEditor{textToValue(e){const t={wave:"sine",startFrequency:5e3,endFrequency:0,startVolume:255,endVolume:0,duration:500,effect:"none",interpolation:"linear"};this.value=t;const r=/\(([^)]*)\)/.exec(e)[1].split(",").map((e=>e.replace(/\s/g,"")));if(8!==r.length)return t;switch(r[0]){case"WaveShape.Sawtooth":t.wave="sawtooth";break;case"WaveShape.Square":t.wave="square";break;case"WaveShape.Noise":t.wave="noise";break;case"WaveShape.Triangle":t.wave="triangle";break;case"WaveShape.Sine":default:t.wave="sine"}const o=(e,t)=>isNaN(e)?t:e;switch(t.startFrequency=o(parseInt(r[1]),t.startFrequency),t.endFrequency=o(parseInt(r[2]),t.endFrequency),t.startVolume=o(parseInt(r[3]),t.startVolume),t.endVolume=o(parseInt(r[4]),t.endVolume),t.duration=o(parseInt(r[5]),t.duration),r[6]){case"SoundExpressionEffect.Vibrato":t.effect="vibrato";break;case"SoundExpressionEffect.Tremolo":t.effect="tremolo";break;case"SoundExpressionEffect.Warble":t.effect="warble";break;case"SoundExpressionEffect.None":default:t.effect="none"}switch(r[7]){case"InterpolationCurve.Logarithmic":t.interpolation="logarithmic";break;case"InterpolationCurve.Curve":t.interpolation="curve";break;case"InterpolationCurve.Linear":default:t.interpolation="linear"}return t}resultToText(e){let t,r,o;switch((e=this.value).wave){case"sine":t="WaveShape.Sine";break;case"square":t="WaveShape.Square";break;case"triangle":t="WaveShape.Triangle";break;case"noise":t="WaveShape.Noise";break;case"sawtooth":t="WaveShape.Sawtooth"}switch(e.effect){case"vibrato":r="SoundExpressionEffect.Vibrato";break;case"tremolo":r="SoundExpressionEffect.Tremolo";break;case"warble":r="SoundExpressionEffect.Warble";break;case"none":r="SoundExpressionEffect.None"}switch(e.interpolation){case"curve":o="InterpolationCurve.Curve";break;case"linear":o="InterpolationCurve.Linear";break;case"logarithmic":o="InterpolationCurve.Logarithmic"}return`music.createSoundEffect(${t}, ${Math.round(e.startFrequency)}, ${Math.round(e.endFrequency)}, ${Math.round(e.startVolume)}, ${Math.round(e.endVolume)}, ${Math.round(e.duration)}, ${r}, ${o})`}getFieldEditorId(){return t}getOptions(){return{onClose:()=>this.fv.hide(),onSoundChange:e=>this.value=e,initialSound:this.value,useFlex:!0}}}e.MonacoSoundEffectEditor=r,e.soundEditorDefinition={id:t,foldMatches:!0,glyphCssClass:"fas fa-music sprite-focus-hover",heightInPixels:510,matcher:{searchString:"music\\s*\\.\\s*createSoundEffect\\s*\\(",isRegex:!0,matchCase:!0,matchWholeWord:!1,validateRange:function(e,t){let r=e.startLineNumber,o=0,s=!1,i=0;const n="createSoundEffect",a=t.getLineCount();for(;r<a;){const a=t.getLineContent(r),c=a.indexOf(n);if(-1!==c&&(s=!0,o=c+n.length),s)for(;o<a.length;){const s=a.charAt(o);if("("===s)i++;else if(")"===s&&(i--,0===i))return new monaco.Range(e.startLineNumber,e.startColumn,r,o+t.getLineMinColumn(r)+1);o++}o=0,r++}}},proto:r},e.registerMonacoFieldEditor(t,e.soundEditorDefinition)}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){const r="image-editor";class o extends t.MonacoReactFieldEditor{textToValue(t){this.isPython=-1===t.indexOf("`");const r=e.parseAssetTSReference(t);if(r){const{type:t,name:o}=r,s=o.trim(),i=e.react.getTilemapProject();this.isAsset=!0;const n=i.lookupAssetByName("image",s);if(n)return n;{const t=i.createNewImage();return s&&!i.isNameTaken("image",s)&&e.validateAssetName(s)&&(t.meta.displayName=s),t}}return{type:"image",id:"",internalID:0,bitmap:e.sprite.imageLiteralToBitmap(t).data(),meta:{},jresData:""}}resultToText(t){var r;if(null===(r=t.meta)||void 0===r?void 0:r.displayName){const r=e.react.getTilemapProject();return t=this.isAsset||r.lookupAsset(t.type,t.id)?r.updateAsset(t):r.createNewProjectImage(t.bitmap,t.meta.displayName),this.isAsset=!0,e.getTSReferenceForAsset(t,this.isPython)}return e.sprite.bitmapToImageLiteral(e.sprite.Bitmap.fromData(t.bitmap),this.isPython?"python":"typescript")}getFieldEditorId(){return"image-editor"}getOptions(){return{initWidth:16,initHeight:16,blocksInfo:this.host.blocksInfo()}}}t.MonacoSpriteEditor=o,t.spriteEditorDefinition={id:r,foldMatches:!0,glyphCssClass:"sprite-editor-glyph sprite-focus-hover",heightInPixels:510,matcher:{searchString:'(?:img|assets\\s*\\.\\s*image)\\s*(?:`|\\(\\s*""")(?:(?:[^(){}:\\[\\]"\';?/,+\\-=*&|^%!`~]|\\n)*)\\s*(?:`|"""\\s*\\))',isRegex:!0,matchCase:!0,matchWholeWord:!1},proto:o},t.registerMonacoFieldEditor(r,t.spriteEditorDefinition)}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){const r="tilemap-editor";class o extends t.MonacoReactFieldEditor{textToValue(t){const r=this.readTilemap(t),o=e.react.getTilemapProject();return e.sprite.addMissingTilemapTilesAndReferences(o,r),r}readTilemap(t){const r=e.react.getTilemapProject();if(/^\s*tiles\s*\./.test(t)&&(this.isTilemapLiteral=!1,t)){try{return function(e){return{type:"tilemap",id:"",internalID:0,meta:{},data:e}}(e.sprite.decodeTilemap(t,"typescript",r))}catch(e){}return null}this.isTilemapLiteral=!0;const o=/^\s*(tilemap(?:8|16|32)?)\s*(?:`([^`]*)`)|(?:\(\s*"""([^"]*)"""\s*\))\s*$/.exec(t),s=(o[2]||o[3]||"").trim();let i,n;if(this.tilemapLiteral=o[1],s&&(n=ts.pxtc.escapeIdentifier(s),i=r.getTilemap(n)||r.lookupAssetByName("tilemap",s)),!i){let e=16;"tilemap8"===this.tilemapLiteral?e=8:"tilemap32"===this.tilemapLiteral&&(e=32);const[t]=r.createNewTilemap(n,e,16,16);i=r.getTilemap(t),n=t}return i}resultToText(t){const r=e.react.getTilemapProject();return r.pushUndo(),e.sprite.updateTilemapReferencesFromResult(r,t),this.isTilemapLiteral?(r.updateAsset(t),e.getTSReferenceForAsset(t,"python"===this.fileType)):e.sprite.encodeTilemap(t.data,"typescript"===this.fileType?"typescript":"python")}getFieldEditorId(){return"tilemap-editor"}getOptions(){return{initWidth:16,initHeight:16,blocksInfo:this.host.blocksInfo()}}getCreateTilemapRange(){const e=this.editrange.getStartPosition();let t,r=this.editrange.getEndPosition(),o=1;for(;;){t=new monaco.Range(r.lineNumber,r.column,r.lineNumber+1,0);const s=this.host.getText(t);for(let t=0;t<s.length;t++)if("("===s.charAt(t))o++;else if(")"===s.charAt(t)&&(o--,0===o)){const o=new monaco.Position(r.lineNumber,r.column+t+2);return monaco.Range.fromPositions(e,o)}if(r=t.getEndPosition(),r.lineNumber>e.lineNumber+20)return null}}}t.MonacoTilemapEditor=o,t.tilemapEditorDefinition={id:r,foldMatches:!0,alwaysBuildOnClose:!0,glyphCssClass:"sprite-focus-hover ms-Icon ms-Icon--Nav2DMapView",heightInPixels:510,weight:5,matcher:{searchString:'(?:tilemap(?:8|16|32)?\\s*(?:`|\\(""")(?:[ a-zA-Z0-9_]|\\n)*\\s*(?:`|"""\\)))|(?:tiles\\s*\\.\\s*createTilemap\\s*\\([^\\)]+\\))',isRegex:!0,matchCase:!0,matchWholeWord:!1},proto:o},t.registerMonacoFieldEditor(r,t.tilemapEditorDefinition)}(e.editor||(e.editor={}))}(pxt||(pxt={}));
1
+ var pxt;!function(e){!function(t){let r,o,s,i;!function(e){e[e.Stopped=0]="Stopped",e[e.Pending=1]="Pending",e[e.Starting=2]="Starting",e[e.Running=3]="Running"}(r=t.SimState||(t.SimState={})),t.isBlocks=function(t){return e.U.endsWith(t.name,".blocks")},function(e){e.HeaderOnly="errorListHeader",e.Expanded="errorListExpanded"}(o=t.ErrorListState||(t.ErrorListState={})),function(e){e[e.Hidden=0]="Hidden",e[e.Visible=1]="Visible",e[e.Disabled=2]="Disabled"}(s=t.FilterState||(t.FilterState={})),t.initExtensionsAsync=e=>Promise.resolve({}),t.initFieldExtensionsAsync=e=>Promise.resolve({}),t.HELP_IMAGE_URI="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTMiIGN5PSIxMyIgcj0iMTMiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xNy45NTIgOS4xODQwMkMxNy45NTIgMTAuMjU2IDE3LjgxNiAxMS4wNzIgMTcuNTQ0IDExLjYzMkMxNy4yODggMTIuMTkyIDE2Ljc1MiAxMi43OTIgMTUuOTM2IDEzLjQzMkMxNS4xMiAxNC4wNzIgMTQuNTc2IDE0LjU4NCAxNC4zMDQgMTQuOTY4QzE0LjA0OCAxNS4zMzYgMTMuOTIgMTUuNzM2IDEzLjkyIDE2LjE2OFYxNi45NkgxMS44MDhDMTEuNDI0IDE2LjQ2NCAxMS4yMzIgMTUuODQgMTEuMjMyIDE1LjA4OEMxMS4yMzIgMTQuNjg4IDExLjM4NCAxNC4yODggMTEuNjg4IDEzLjg4OEMxMS45OTIgMTMuNDg4IDEyLjUzNiAxMi45NjggMTMuMzIgMTIuMzI4QzE0LjEwNCAxMS42NzIgMTQuNjI0IDExLjE2OCAxNC44OCAxMC44MTZDMTUuMTM2IDEwLjQ0OCAxNS4yNjQgOS45NjgwMiAxNS4yNjQgOS4zNzYwMkMxNS4yNjQgOC4yMDgwMiAxNC40MTYgNy42MjQwMiAxMi43MiA3LjYyNDAyQzExLjc2IDcuNjI0MDIgMTAuNzUyIDcuNzM2MDIgOS42OTYgNy45NjAwMkw5LjE0NCA4LjA4MDAyTDkgNi4wODgwMkMxMC40ODggNS41NjAwMiAxMS44NCA1LjI5NjAyIDEzLjA1NiA1LjI5NjAyQzE0LjczNiA1LjI5NjAyIDE1Ljk2OCA1LjYwODAyIDE2Ljc1MiA2LjIzMjAyQzE3LjU1MiA2Ljg0MDAyIDE3Ljk1MiA3LjgyNDAyIDE3Ljk1MiA5LjE4NDAyWk0xMS40IDIyVjE4LjY0SDE0LjE4NFYyMkgxMS40WiIgZmlsbD0iIzU5NUU3NCIvPgo8L3N2Zz4K",t.initEditorExtensionsAsync=function(){if(!i&&(i=Promise.resolve(),e.appTarget&&e.appTarget.appTheme&&e.appTarget.appTheme.extendFieldEditors)){const t={};i=i.then((()=>e.BrowserUtils.loadBlocklyAsync())).then((()=>e.BrowserUtils.loadScriptAsync("fieldeditors.js"))).then((()=>e.editor.initFieldExtensionsAsync(t))).then((t=>{t.fieldEditors&&t.fieldEditors.forEach((t=>{e.blocks.registerFieldEditor(t.selector,t.editor,t.validator)}))}))}return i}}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){const r={};function o(e,t,r,o){e.response&&window.parent.postMessage({type:e.type,id:e.id,resp:t,success:r,error:o},"*")}function s(t){return new Promise(((o,s)=>{const i=e.Util.clone(t);i.id=ts.pxtc.Util.guidGen(),t.response&&(r[i.id]={resolve:o,reject:s}),window.parent.postMessage(i,"*"),t.response||o(void 0)}))}t.bindEditorMessages=function(t){const s=(e.appTarget.appTheme.allowParentController||e.shell.isControllerMode())&&e.BrowserUtils.isIFrame(),i=e.appTarget.appTheme.allowPackageExtensions,n=e.appTarget.appTheme.allowSimulatorTelemetry;(s||i||n)&&window.addEventListener("message",(a=>{const c=a.data;if(!c||!/^pxt(host|editor|pkgext|sim)$/.test(c.type))return!1;if("pxtpkgext"===c.type&&i)t().then((e=>{e.handleExtensionRequest(c)}));else if("pxtsim"===c.type&&n){const t=c;"event"===t.action&&(t.category||t.message?e.reportError(t.category,t.message,t.data):e.tickEvent(t.tick,t.data))}else if(s){let s,i=Promise.resolve();if("pxthost"==c.type){const t=r[c.id];t?i=i.then((()=>t.resolve(c))):e.debug(`pxthost: unknown request ${c.id}`)}else"pxteditor"==c.type&&(i=i.then((()=>t().then((t=>{const r=c;switch(e.debug(`pxteditor: ${r.action}`),r.action.toLowerCase()){case"switchjavascript":return Promise.resolve().then((()=>t.openJavaScript()));case"switchpython":return Promise.resolve().then((()=>t.openPython()));case"switchblocks":return Promise.resolve().then((()=>t.openBlocks()));case"startsimulator":return Promise.resolve().then((()=>t.startSimulator()));case"restartsimulator":return Promise.resolve().then((()=>t.restartSimulator()));case"hidesimulator":return Promise.resolve().then((()=>t.collapseSimulator()));case"showsimulator":return Promise.resolve().then((()=>t.expandSimulator()));case"closeflyout":return Promise.resolve().then((()=>t.closeFlyout()));case"unloadproject":return Promise.resolve().then((()=>t.unloadProjectAsync()));case"saveproject":return t.saveProjectAsync();case"redo":return Promise.resolve().then((()=>{const e=t.editor;e&&e.hasRedo()&&e.redo()}));case"undo":return Promise.resolve().then((()=>{const e=t.editor;e&&e.hasUndo()&&e.undo()}));case"setscale":{const e=c;return Promise.resolve().then((()=>t.editor.setScale(e.scale)))}case"stopsimulator":{const e=c;return Promise.resolve().then((()=>t.stopSimulator(e.unload)))}case"newproject":{const e=c;return Promise.resolve().then((()=>t.newProject(e.options)))}case"importproject":{const e=c;return Promise.resolve().then((()=>t.importProjectAsync(e.project,{filters:e.filters,searchBar:e.searchBar})))}case"openheader":{const e=c;return t.openProjectByHeaderIdAsync(e.headerId)}case"startactivity":{const r=c;let o,s=r.path;return/^([jt]s|py|blocks?):/i.test(s)&&(o=/^py:/i.test(s)?e.PYTHON_PROJECT_NAME:/^[jt]s:/i.test(s)?e.JAVASCRIPT_PROJECT_NAME:e.BLOCKS_PROJECT_NAME,s=s.substr(s.indexOf(":")+1)),Promise.resolve().then((()=>t.startActivity({activity:r.activityType,path:s,title:r.title,editor:o,previousProjectHeaderId:r.previousProjectHeaderId,carryoverPreviousCode:r.carryoverPreviousCode})))}case"importtutorial":{const e=c;return Promise.resolve().then((()=>t.importTutorialAsync(e.markdown)))}case"proxytosim":{const e=c;return Promise.resolve().then((()=>t.proxySimulatorMessage(e.content)))}case"renderblocks":{const e=c;return Promise.resolve().then((()=>t.renderBlocksAsync(e))).then((e=>e.xml.then((e=>{s=e.xml}))))}case"renderpython":{const e=c;return Promise.resolve().then((()=>t.renderPythonAsync(e))).then((e=>{s=e.python}))}case"toggletrace":{const e=c;return Promise.resolve().then((()=>t.toggleTrace(e.intervalSpeed)))}case"settracestate":{const e=c;return Promise.resolve().then((()=>t.setTrace(e.enabled,e.intervalSpeed)))}case"setsimulatorfullscreen":{const e=c;return Promise.resolve().then((()=>t.setSimulatorFullScreen(e.enabled)))}case"togglehighcontrast":return Promise.resolve().then((()=>t.toggleHighContrast()));case"sethighcontrast":{const e=c;return Promise.resolve().then((()=>t.setHighContrast(e.on)))}case"togglegreenscreen":return Promise.resolve().then((()=>t.toggleGreenScreen()));case"print":return Promise.resolve().then((()=>t.printCode()));case"pair":return t.pairAsync();case"info":return Promise.resolve().then((()=>{s={versions:e.appTarget.versions,locale:ts.pxtc.Util.userLanguage(),availableLocales:e.appTarget.appTheme.availableLocales}}));case"shareproject":{const e=c;return t.anonymousPublishHeaderByIdAsync(e.headerId).then((e=>{s=e}))}case"savelocalprojectstocloud":{const e=c;return t.saveLocalProjectsToCloudAsync(e.headerIds).then((e=>{s={headerIdMap:e}}))}case"requestprojectcloudstatus":{const e=c;return t.requestProjectCloudStatus(e.headerIds)}case"convertcloudprojectstolocal":{const e=c;return t.convertCloudProjectsToLocal(e.userId)}case"setlanguagerestriction":{const e=c;if("no-blocks"===e.restriction)throw console.warn("no-blocks language restriction is not supported"),new Error("no-blocks language restriction is not supported");return t.setLanguageRestrictionAsync(e.restriction)}}return Promise.resolve()})))));i.then((()=>o(c,s,!0,void 0)),(e=>o(c,s,!1,e)))}return!0}),!1)},t.enableControllerAnalytics=function(){if(!e.appTarget.appTheme.allowParentController||!e.BrowserUtils.isIFrame())return;const t=e.tickEvent;e.tickEvent=function(e,r){t&&t(e,r),s({type:"pxthost",action:"event",tick:e,response:!1,data:r})};const r=e.reportException;e.reportException=function(e,t){r&&r(e,t);try{s({type:"pxthost",action:"event",tick:"error",message:e.message,response:!1,data:t})}catch(e){}};const o=e.reportError;e.reportError=function(e,t,r){o&&o(e,t,r),s({type:"pxthost",action:"event",tick:"error",category:e,message:t,data:r})}},t.shouldPostHostMessages=function(){return e.appTarget.appTheme.allowParentController&&e.BrowserUtils.isIFrame()},t.postHostMessageAsync=s}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){!function(t){function r(e){return`experiments-${"object"==typeof e?e.id:e}`}function o(){const t=e.savedAppTheme(),r={},o=s();return o.forEach((e=>{const o=i(e);t[e.id]=!!o,o&&(r[e.id]=o?1:0)})),o.length&&Object.keys(r).length&&(e.tickEvent("experiments.loaded",r),e.reloadAppTargetVariant()),e.appTarget.appTheme}function s(){const t=e.appTarget.appTheme.experiments;return t?[{id:"print",name:lf("Print Code"),description:lf("Print the code from the current project"),feedbackUrl:"https://github.com/microsoft/pxt/issues/4740"},{id:"greenScreen",name:lf("Green screen"),description:lf("Display a webcam video stream or a green background behind the code."),feedbackUrl:"https://github.com/microsoft/pxt/issues/4738"},{id:"allowPackageExtensions",name:lf("Editor Extensions"),description:lf("Allow Extensions to add buttons in the editor."),feedbackUrl:"https://github.com/microsoft/pxt/issues/4741"},{id:"instructions",name:lf("Wiring Instructions"),description:lf("Generate step-by-step assembly instructions for breadboard wiring."),feedbackUrl:"https://github.com/microsoft/pxt/issues/4739"},{id:"debugger",name:lf("Debugger"),description:lf("Step through code and inspect variables in the debugger"),feedbackUrl:"https://github.com/microsoft/pxt/issues/4729"},{id:"bluetoothUartConsole",name:"Bluetooth Console",description:lf("Receives UART message through Web Bluetooth"),feedbackUrl:"https://github.com/microsoft/pxt/issues/4796"},{id:"bluetoothPartialFlashing",name:"Bluetooth Download",description:lf("Download code via Web Bluetooth"),feedbackUrl:"https://github.com/microsoft/pxt/issues/4807"},{id:"simScreenshot",name:lf("Simulator Screenshots"),description:lf("Download screenshots of the simulator"),feedbackUrl:"https://github.com/microsoft/pxt/issues/5232"},{id:"python",name:lf("Static Python"),description:lf("Use Static Python to code your device"),feedbackUrl:"https://github.com/microsoft/pxt/issues/5390"},{id:"simGif",name:lf("Simulator Gifs"),description:lf("Download gifs of the simulator"),feedbackUrl:"https://github.com/microsoft/pxt/issues/5297"},{id:"qrCode",name:lf("Shared QR Code"),description:lf("Generate a QR Code form the shared project url"),feedbackUrl:"https://github.com/microsoft/pxt/issues/5456"},{id:"importExtensionFiles",name:lf("Import Extension Files"),description:lf("Import Extensions from compiled project files")},{id:"debugExtensionCode",name:lf("Debug Extension Code"),description:lf("Use the JavaScript debugger to debug extension code")},{id:"snippetBuilder",name:lf("Snippet Builder"),description:lf("Try out the new snippet dialogs.")},{id:"experimentalHw",name:lf("Experimental Hardware"),description:lf("Enable support for hardware marked 'experimental' in the hardware seletion dialog")},{id:"checkForHwVariantWebUSB",name:lf("Detect Hardware with WebUSB"),description:lf("When compiling, use WebUSB to detect hardware configuration.")},{id:"githubEditor",name:lf("GitHub editor"),description:lf("Review, commit and push to GitHub."),feedbackUrl:"https://github.com/microsoft/pxt/issues/6419",enableOnline:!0},{id:"githubCompiledJs",name:lf("GitHub Pages JavaScript"),description:lf("Commit compiled javascript when creating a release"),enableOnline:!0},{id:"blocksCollapsing",name:lf("Collapse blocks"),description:lf("Collapse and expand functions or event blocks")},{id:"tutorialBlocksDiff",name:lf("Tutorial Block Diffs"),description:lf("Automatially render blocks diff in tutorials")},{id:"openProjectNewTab",name:lf("Open in New Tab"),description:lf("Open an editor in a new tab.")},{id:"openProjectNewDependentTab",name:lf("Open in New Connected Tab"),description:lf("Open connected editors in different browser tabs.")},{id:"accessibleBlocks",name:lf("Accessible Blocks"),description:lf("Use the WASD keys to move and modify blocks."),feedbackUrl:"https://github.com/microsoft/pxt/issues/6850"},{id:"errorList",name:lf("Error List"),description:lf("Show an error list panel for JavaScript and Python.")},{id:"blocksErrorList",name:lf("Blocks Error List"),description:lf("Show an error list panel for Blocks")}].filter((r=>t.indexOf(r.id)>-1&&!(e.BrowserUtils.isPxtElectron()&&r.enableOnline))):[]}function i(t){return!!e.storage.getLocal(r(t))}function n(t,s){s!=i(t)&&(s?e.storage.setLocal(r(t),"1"):e.storage.removeLocal(r(t)),o())}t.syncTheme=o,t.all=s,t.clear=function(){s().forEach((t=>e.storage.removeLocal(r(t)))),o()},t.someEnabled=function(){return s().some((e=>i(e)))},t.isEnabled=i,t.toggle=function(e){n(e,!i(e))},t.state=function(){const e={};return s().forEach((t=>e[t.id]=i(t))),JSON.stringify(e)},t.setState=n}(t.experiments||(t.experiments={}))}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){function r(t){const r=e.appTarget.appTheme.invertedMonaco,o=!(!e.appTarget.appTheme.monacoFieldEditors||!e.appTarget.appTheme.monacoFieldEditors.length),s=e.BrowserUtils.isAndroid();let i=monaco.editor.create(t,{model:null,ariaLabel:e.Util.lf("JavaScript editor"),fontFamily:"'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', 'monospace'",scrollBeyondLastLine:!0,language:"typescript",mouseWheelZoom:!1,wordBasedSuggestions:!0,lineNumbersMinChars:3,formatOnPaste:!0,folding:o,glyphMargin:o||e.appTarget.appTheme.debugger,minimap:{enabled:!1},fixedOverflowWidgets:!0,autoIndent:"full",useTabStops:!0,dragAndDrop:!0,matchBrackets:"always",occurrencesHighlight:!1,quickSuggestionsDelay:200,theme:r?"vs-dark":"vs",renderIndentGuides:!0,accessibilityHelpUrl:"",quickSuggestions:{other:!s,comments:!s,strings:!s},acceptSuggestionOnCommitCharacter:!s,acceptSuggestionOnEnter:s?"off":"on",accessibilitySupport:s?"off":"on"});return i.layout(),i}t.syncModels=function(e,t,r,o){if(o)return;let s=monaco.languages.typescript.typescriptDefaults.getExtraLibs(),i={};e.sortedDeps().forEach((e=>{e.getFiles().forEach((o=>{let s=e.id+"/"+o;if(/\.(ts)$/.test(o)&&s!=r){if(!monaco.languages.typescript.typescriptDefaults.getExtraLibs()[s]){let r=e.readFile(o)||"\n";t[s]=monaco.languages.typescript.typescriptDefaults.addExtraLib(r,s)}i[s]="1"}}))})),Object.keys(s).filter((e=>/\.(ts)$/.test(e)&&!i[e])).forEach((e=>{t[e].dispose()}))},t.initMonacoAsync=function(t){return new Promise(((o,s)=>{if("object"==typeof window.monaco)return void o(r(t));let i=window.MonacoPaths,n=()=>{let s=window.require;s.config({paths:i}),s(["vs/editor/editor.main"],(()=>{monaco.languages.register({id:"asm",extensions:[".asm"]}),monaco.languages.setMonarchTokensProvider("asm",{tokenPostfix:"",keywords:["movs","mov","adds","add","adcs","adr","subs","sbcs","sub","rsbs","muls","cmp","cmn","ands","eors","orrs","bics","mvns","tst","lsls","lsrs","asrs","rors","ldr","ldrh","ldrb","ldrsh","ldrsb","ldm","str","strh","strb","stm","push","pop","cbz","cbnz","b","bl","bx","blx","sxth","sxtb","uxth","uxtb","rev","rev16","revsh","svc","cpsid","cpsie","setend","bkpt","nop","sev","wfe","wfi","yield","beq","bne","bcs","bhs","bcc","blo","bmi","bpl","bvs","bvc","bhi","bls","bge","blt","bgt","ble","bal","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","r13","r14","r15","pc","sp","lr"],typeKeywords:[".startaddr",".hex",".short",".space",".section",".string",".byte"],operators:[],symbols:/[:\*]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/(\.)?[a-z_$\.][\w$]*/,{cases:{"@typeKeywords":"keyword","@keywords":"keyword","@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,{token:"annotation"}],[/(#|(0[xX]))?[0-9a-fA-F]+/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],comment:[],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/;.*$/,"comment"]]}}),monaco.languages.typescript&&(monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({noSyntaxValidation:!0,noSemanticValidation:!0}),monaco.languages.typescript.typescriptDefaults.setWorkerOptions({customWorkerPath:e.webConfig.typeScriptWorkerJs}),monaco.languages.typescript.typescriptDefaults.setCompilerOptions({allowUnreachableCode:!0,noImplicitAny:!0,allowJs:!1,allowUnusedLabels:!0,target:monaco.languages.typescript.ScriptTarget.ES5,outDir:"built",rootDir:".",noLib:!0,mouseWheelZoom:!1})),o(r(t))}))};if(window.require)n();else{let e=document.createElement("script");e.type="text/javascript",e.src=i["vs/loader"],e.addEventListener("load",n),document.body.appendChild(e)}}))},t.createEditor=r}(e.vs||(e.vs={}))}(pxt||(pxt={})),function(e){!function(t){t.freshHeader=function(t,r){return{target:e.appTarget.id,targetVersion:e.appTarget.versions.target,name:t,meta:{},editor:e.JAVASCRIPT_PROJECT_NAME,pubId:"",pubCurrent:!1,_rev:null,id:e.U.guidGen(),recentUse:r,modificationTime:r,cloudUserId:null,cloudCurrent:!1,cloudVersion:null,cloudLastSyncTime:0,isDeleted:!1}}}(e.workspace||(e.workspace={}))}(pxt||(pxt={})),function(e){!function(e){const t={};e.registerMonacoFieldEditor=function(e,r){t[e]=r},e.getMonacoFieldEditor=function(e){return t[e]}}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){t.MonacoReactFieldEditor=class{getId(){return"image-editor"}showEditorAsync(t,r,o){return this.fileType=t,this.editrange=r,this.host=o,this.initAsync().then((()=>{const t=this.textToValue(o.getText(r));return t?(this.fv=e.react.getFieldEditorView(this.getFieldEditorId(),t,this.getOptions()),this.fv.onHide((()=>{this.onClosed()})),this.fv.show(),new Promise(((e,t)=>{this.resolver=e,this.rejecter=t}))):Promise.resolve(null)}))}onClosed(){this.resolver&&(this.resolver({range:this.editrange,replacement:this.resultToText(this.fv.getResult())}),this.editrange=void 0,this.resolver=void 0,this.rejecter=void 0)}dispose(){this.onClosed()}initAsync(){return Promise.resolve()}textToValue(e){return null}resultToText(e){return e+""}getFieldEditorId(){return""}getOptions(){return null}}}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){const r="soundeffect-editor";class o extends t.MonacoReactFieldEditor{textToValue(e){const t={wave:"sine",startFrequency:5e3,endFrequency:0,startVolume:255,endVolume:0,duration:500,effect:"none",interpolation:"linear"};this.value=t;const r=/\(([^)]*)\)/.exec(e)[1].split(",").map((e=>e.replace(/\s/g,"")));if(8!==r.length)return t;switch(r[0]){case"WaveShape.Sawtooth":t.wave="sawtooth";break;case"WaveShape.Square":t.wave="square";break;case"WaveShape.Noise":t.wave="noise";break;case"WaveShape.Triangle":t.wave="triangle";break;case"WaveShape.Sine":default:t.wave="sine"}const o=(e,t)=>isNaN(e)?t:e;switch(t.startFrequency=o(parseInt(r[1]),t.startFrequency),t.endFrequency=o(parseInt(r[2]),t.endFrequency),t.startVolume=o(parseInt(r[3]),t.startVolume),t.endVolume=o(parseInt(r[4]),t.endVolume),t.duration=o(parseInt(r[5]),t.duration),r[6]){case"SoundExpressionEffect.Vibrato":t.effect="vibrato";break;case"SoundExpressionEffect.Tremolo":t.effect="tremolo";break;case"SoundExpressionEffect.Warble":t.effect="warble";break;case"SoundExpressionEffect.None":default:t.effect="none"}switch(r[7]){case"InterpolationCurve.Logarithmic":t.interpolation="logarithmic";break;case"InterpolationCurve.Curve":t.interpolation="curve";break;case"InterpolationCurve.Linear":default:t.interpolation="linear"}return t}resultToText(e){let t,r,o;switch((e=this.value).wave){case"sine":t="WaveShape.Sine";break;case"square":t="WaveShape.Square";break;case"triangle":t="WaveShape.Triangle";break;case"noise":t="WaveShape.Noise";break;case"sawtooth":t="WaveShape.Sawtooth"}switch(e.effect){case"vibrato":r="SoundExpressionEffect.Vibrato";break;case"tremolo":r="SoundExpressionEffect.Tremolo";break;case"warble":r="SoundExpressionEffect.Warble";break;case"none":r="SoundExpressionEffect.None"}switch(e.interpolation){case"curve":o="InterpolationCurve.Curve";break;case"linear":o="InterpolationCurve.Linear";break;case"logarithmic":o="InterpolationCurve.Logarithmic"}return`music.createSoundEffect(${t}, ${Math.round(e.startFrequency)}, ${Math.round(e.endFrequency)}, ${Math.round(e.startVolume)}, ${Math.round(e.endVolume)}, ${Math.round(e.duration)}, ${r}, ${o})`}getFieldEditorId(){return r}getOptions(){return{onClose:()=>this.fv.hide(),onSoundChange:e=>this.value=e,initialSound:this.value,useFlex:!0,useMixerSynthesizer:"microbit"!==e.appTarget.id}}}t.MonacoSoundEffectEditor=o,t.soundEditorDefinition={id:r,foldMatches:!0,glyphCssClass:"fas fa-music sprite-focus-hover",heightInPixels:510,matcher:{searchString:"music\\s*\\.\\s*createSoundEffect\\s*\\(",isRegex:!0,matchCase:!0,matchWholeWord:!1,validateRange:function(e,t){let r=e.startLineNumber,o=0,s=!1,i=0;const n="createSoundEffect",a=t.getLineCount();for(;r<a;){const a=t.getLineContent(r),c=a.indexOf(n);if(-1!==c&&(s=!0,o=c+n.length),s)for(;o<a.length;){const s=a.charAt(o);if("("===s)i++;else if(")"===s&&(i--,0===i))return new monaco.Range(e.startLineNumber,e.startColumn,r,o+t.getLineMinColumn(r)+1);o++}o=0,r++}}},proto:o},t.registerMonacoFieldEditor(r,t.soundEditorDefinition)}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){const r="image-editor";class o extends t.MonacoReactFieldEditor{textToValue(t){this.isPython=-1===t.indexOf("`");const r=e.parseAssetTSReference(t);if(r){const{type:t,name:o}=r,s=o.trim(),i=e.react.getTilemapProject();this.isAsset=!0;const n=i.lookupAssetByName("image",s);if(n)return n;{const t=i.createNewImage();return s&&!i.isNameTaken("image",s)&&e.validateAssetName(s)&&(t.meta.displayName=s),t}}return{type:"image",id:"",internalID:0,bitmap:e.sprite.imageLiteralToBitmap(t).data(),meta:{},jresData:""}}resultToText(t){var r;if(null===(r=t.meta)||void 0===r?void 0:r.displayName){const r=e.react.getTilemapProject();return t=this.isAsset||r.lookupAsset(t.type,t.id)?r.updateAsset(t):r.createNewProjectImage(t.bitmap,t.meta.displayName),this.isAsset=!0,e.getTSReferenceForAsset(t,this.isPython)}return e.sprite.bitmapToImageLiteral(e.sprite.Bitmap.fromData(t.bitmap),this.isPython?"python":"typescript")}getFieldEditorId(){return"image-editor"}getOptions(){return{initWidth:16,initHeight:16,blocksInfo:this.host.blocksInfo()}}}t.MonacoSpriteEditor=o,t.spriteEditorDefinition={id:r,foldMatches:!0,glyphCssClass:"sprite-editor-glyph sprite-focus-hover",heightInPixels:510,matcher:{searchString:'(?:img|assets\\s*\\.\\s*image)\\s*(?:`|\\(\\s*""")(?:(?:[^(){}:\\[\\]"\';?/,+\\-=*&|^%!`~]|\\n)*)\\s*(?:`|"""\\s*\\))',isRegex:!0,matchCase:!0,matchWholeWord:!1},proto:o},t.registerMonacoFieldEditor(r,t.spriteEditorDefinition)}(e.editor||(e.editor={}))}(pxt||(pxt={})),function(e){!function(t){const r="tilemap-editor";class o extends t.MonacoReactFieldEditor{textToValue(t){const r=this.readTilemap(t),o=e.react.getTilemapProject();return e.sprite.addMissingTilemapTilesAndReferences(o,r),r}readTilemap(t){const r=e.react.getTilemapProject();if(/^\s*tiles\s*\./.test(t)&&(this.isTilemapLiteral=!1,t)){try{return function(e){return{type:"tilemap",id:"",internalID:0,meta:{},data:e}}(e.sprite.decodeTilemap(t,"typescript",r))}catch(e){}return null}this.isTilemapLiteral=!0;const o=/^\s*(tilemap(?:8|16|32)?)\s*(?:`([^`]*)`)|(?:\(\s*"""([^"]*)"""\s*\))\s*$/.exec(t),s=(o[2]||o[3]||"").trim();let i,n;if(this.tilemapLiteral=o[1],s&&(n=ts.pxtc.escapeIdentifier(s),i=r.getTilemap(n)||r.lookupAssetByName("tilemap",s)),!i){let e=16;"tilemap8"===this.tilemapLiteral?e=8:"tilemap32"===this.tilemapLiteral&&(e=32);const[t]=r.createNewTilemap(n,e,16,16);i=r.getTilemap(t),n=t}return i}resultToText(t){const r=e.react.getTilemapProject();return r.pushUndo(),e.sprite.updateTilemapReferencesFromResult(r,t),this.isTilemapLiteral?(r.updateAsset(t),e.getTSReferenceForAsset(t,"python"===this.fileType)):e.sprite.encodeTilemap(t.data,"typescript"===this.fileType?"typescript":"python")}getFieldEditorId(){return"tilemap-editor"}getOptions(){return{initWidth:16,initHeight:16,blocksInfo:this.host.blocksInfo()}}getCreateTilemapRange(){const e=this.editrange.getStartPosition();let t,r=this.editrange.getEndPosition(),o=1;for(;;){t=new monaco.Range(r.lineNumber,r.column,r.lineNumber+1,0);const s=this.host.getText(t);for(let t=0;t<s.length;t++)if("("===s.charAt(t))o++;else if(")"===s.charAt(t)&&(o--,0===o)){const o=new monaco.Position(r.lineNumber,r.column+t+2);return monaco.Range.fromPositions(e,o)}if(r=t.getEndPosition(),r.lineNumber>e.lineNumber+20)return null}}}t.MonacoTilemapEditor=o,t.tilemapEditorDefinition={id:r,foldMatches:!0,alwaysBuildOnClose:!0,glyphCssClass:"sprite-focus-hover ms-Icon ms-Icon--Nav2DMapView",heightInPixels:510,weight:5,matcher:{searchString:'(?:tilemap(?:8|16|32)?\\s*(?:`|\\(""")(?:[ a-zA-Z0-9_]|\\n)*\\s*(?:`|"""\\)))|(?:tiles\\s*\\.\\s*createTilemap\\s*\\([^\\)]+\\))',isRegex:!0,matchCase:!0,matchWholeWord:!1},proto:o},t.registerMonacoFieldEditor(r,t.tilemapEditorDefinition)}(e.editor||(e.editor={}))}(pxt||(pxt={}));