diff --git a/73f235cb592612dd1241.worker.js b/73f235cb592612dd1241.worker.js new file mode 100644 index 0000000..8a4bb8c --- /dev/null +++ b/73f235cb592612dd1241.worker.js @@ -0,0 +1 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){const r=n(1),o=[];let s=null;const u=()=>{s||(s=setTimeout(()=>{s=null,o.length&&(postMessage(o.slice(),o.map(e=>e.buffer).filter(Boolean)),o.length=0)}))},a=({data:e})=>{r(e.url,e.options).then(t=>o.push({id:e.id,buffer:t})).catch(t=>o.push({id:e.id,error:t&&t.message||"Failed request: ".concat(e.url)})).then(u)};self.fetch?(postMessage({support:{fetch:!0}}),self.addEventListener("message",a)):(postMessage({support:{fetch:!1}}),self.addEventListener("message",({data:e})=>{postMessage([{id:e.id,error:"fetch is unavailable"}])}))},function(e,t){let n=0;const r=[],o=()=>{n<100&&r.length>0&&(n++,(([e,t,r])=>{let s,u=0;const a=()=>fetch(t,r).then(e=>e.ok||0===e.status?e.arrayBuffer():404===e.status?null:Promise.reject(e.status)).then(e=>(n--,o(),e)).catch(e=>{if(403===e)throw e;if(console.warn("Attempt to fetch ".concat(t," failed"),e),s||(s=e),u<2)return u++,new Promise(e=>setTimeout(e,5e3*(u+Math.random()-1))).then(a);throw n--,o(),s});e(a())})(r.shift()))};e.exports=(e,t)=>new Promise(n=>{r.push([n,e,t]),o()})}]); \ No newline at end of file diff --git a/addons.html b/addons.html new file mode 100644 index 0000000..f5f2d71 --- /dev/null +++ b/addons.html @@ -0,0 +1,6 @@ +Addon Settings - TurboWarp
\ No newline at end of file diff --git a/august-2023-scratch-maintenance.html b/august-2023-scratch-maintenance.html new file mode 100644 index 0000000..f36da77 --- /dev/null +++ b/august-2023-scratch-maintenance.html @@ -0,0 +1,71 @@ + + + + + August 2023 Scratch Maintenance - TurboWarp + + + + + +
+

August 2023 Scratch Maintenance

+

The Scratch Team announced that Scratch may be temporarily down for maintenance in the near future:

+
+

ScratchCat wrote:

+ +
+ +

Parts of this maintenance will impact TurboWarp and other tools that use the Scratch API. We're assuming this maintenance is mostly internal stuff and that there won't be significant outwards changes.

+ + +

Update: Based on public logs, we speculate that Scratch could make larger changes than we initially anticipated. We are already preparing if they do (which seems unlikely), but it could result in parts of TurboWarp being unavailable for longer than originally anticipated.

+ +

What won't be affected

+

All of the TurboWarp websites will be up. You will still be able to load projects saved to your computer using the website, desktop app, or packager. Packaged projects will still load. TurboWarp's backpack and restore points will be unaffected. Our cloud variable server should still work, and almost all custom extensions will not be affected.

+ +

August 11 at 8 PM ET – August 13 at 11:59 PM ET

+

Loading projects from the Scratch website may not work. (Forum post is a bit vague)

+ +

August 18 at 8 PM ET – August 20 at 11:59 PM ET

+

Loading projects from the Scratch website may not work anywhere. Translate blocks, text-to-speech blocks, and extensions that use the Scratch API may not work in any project. (We cache translate requests, so some common translations may still work)

+ +

August 25 at 8 PM ET – August 27 at 11:59 PM ET

+

No effect anticipated.

+ +

If Scratch does make significant changes

+

It will take a bit longer, but we will get everything working again shortly.

+
+ + diff --git a/credits.html b/credits.html new file mode 100644 index 0000000..4d14f7f --- /dev/null +++ b/credits.html @@ -0,0 +1,6 @@ +TurboWarp Credits
\ No newline at end of file diff --git a/editor.html b/editor.html new file mode 100644 index 0000000..af330f9 --- /dev/null +++ b/editor.html @@ -0,0 +1,22 @@ +TurboWarp - Run Scratch projects faster
\ No newline at end of file diff --git a/embedtest.html b/embedtest.html new file mode 100644 index 0000000..f744894 --- /dev/null +++ b/embedtest.html @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..c837a3a Binary files /dev/null and b/favicon.ico differ diff --git a/images/192.png b/images/192.png new file mode 100644 index 0000000..c1c9305 Binary files /dev/null and b/images/192.png differ diff --git a/images/512.png b/images/512.png new file mode 100644 index 0000000..977ac9a Binary files /dev/null and b/images/512.png differ diff --git a/images/apple-touch-icon.png b/images/apple-touch-icon.png new file mode 100644 index 0000000..05b61d8 Binary files /dev/null and b/images/apple-touch-icon.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..af330f9 --- /dev/null +++ b/index.html @@ -0,0 +1,22 @@ +TurboWarp - Run Scratch projects faster
\ No newline at end of file diff --git a/js/addon-default-entry.61b031db673d66b31d20.js b/js/addon-default-entry.61b031db673d66b31d20.js new file mode 100644 index 0000000..2a53dd3 --- /dev/null +++ b/js/addon-default-entry.61b031db673d66b31d20.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[4],{1635:function(e,t,o){(e.exports=o(9)(!1)).push([e.i,"/* Imported by other addons */\n\n.sa-block-color {\n --sa-block-colored-background: var(--sa-block-background-primary);\n --sa-block-colored-background-secondary: var(--sa-block-field-background);\n --sa-block-bright-background: var(--sa-block-background-primary);\n --sa-block-text: white;\n --sa-block-gray-text: white;\n --sa-block-colored-text: var(--sa-block-background-primary);\n --sa-block-text-on-bright-background: white;\n}\n\n.sa-block-color-motion {\n --sa-block-background-primary: var(--editorTheme3-motion-primary, #4c97ff);\n --sa-block-background-secondary: var(--editorTheme3-motion-secondary, #4280d7);\n --sa-block-background-tertiary: var(--editorTheme3-motion-tertiary, #3373cc);\n --sa-block-field-background: var(--editorTheme3-motion-field, #3373cc);\n}\n\n.sa-block-color-looks {\n --sa-block-background-primary: var(--editorTheme3-looks-primary, #9966ff);\n --sa-block-background-secondary: var(--editorTheme3-looks-secondary, #855cd6);\n --sa-block-background-tertiary: var(--editorTheme3-looks-tertiary, #774dcb);\n --sa-block-field-background: var(--editorTheme3-looks-field, #774dcb);\n}\n\n.sa-block-color-sounds {\n --sa-block-background-primary: var(--editorTheme3-sounds-primary, #cf63cf);\n --sa-block-background-secondary: var(--editorTheme3-sounds-secondary, #c94fc9);\n --sa-block-background-tertiary: var(--editorTheme3-sounds-tertiary, #bd42bd);\n --sa-block-field-background: var(--editorTheme3-sounds-field, #bd42bd);\n}\n\n.sa-block-color-events {\n --sa-block-background-primary: var(--editorTheme3-event-primary, #ffbf00);\n --sa-block-background-secondary: var(--editorTheme3-event-secondary, #e6ac00);\n --sa-block-background-tertiary: var(--editorTheme3-event-tertiary, #cc9900);\n --sa-block-field-background: var(--editorTheme3-event-field, #cc9900);\n}\n\n.sa-block-color-control {\n --sa-block-background-primary: var(--editorTheme3-control-primary, #ffab19);\n --sa-block-background-secondary: var(--editorTheme3-control-secondary, #ec9c13);\n --sa-block-background-tertiary: var(--editorTheme3-control-tertiary, #cf8b17);\n --sa-block-field-background: var(--editorTheme3-control-field, #cf8b17);\n}\n\n.sa-block-color-sensing {\n --sa-block-background-primary: var(--editorTheme3-sensing-primary, #5cb1d6);\n --sa-block-background-secondary: var(--editorTheme3-sensing-secondary, #47a8d1);\n --sa-block-background-tertiary: var(--editorTheme3-sensing-tertiary, #2e8eb8);\n --sa-block-field-background: var(--editorTheme3-sensing-field, #2e8eb8);\n}\n\n.sa-block-color-operators {\n --sa-block-background-primary: var(--editorTheme3-operators-primary, #59c059);\n --sa-block-background-secondary: var(--editorTheme3-operators-secondary, #46b946);\n --sa-block-background-tertiary: var(--editorTheme3-operators-tertiary, #389438);\n --sa-block-field-background: var(--editorTheme3-operators-field, #389438);\n}\n\n.sa-block-color-data {\n --sa-block-background-primary: var(--editorTheme3-data-primary, #ff8c1a);\n --sa-block-background-secondary: var(--editorTheme3-data-secondary, #ff8000);\n --sa-block-background-tertiary: var(--editorTheme3-data-tertiary, #db6e00);\n --sa-block-field-background: var(--editorTheme3-data-field, #db6e00);\n}\n\n.sa-block-color-data-lists,\n.sa-block-color-list {\n --sa-block-background-primary: var(--editorTheme3-data_lists-primary, #ff661a);\n --sa-block-background-secondary: var(--editorTheme3-data_lists-secondary, #ff5500);\n --sa-block-background-tertiary: var(--editorTheme3-data_lists-tertiary, #e64d00);\n --sa-block-field-background: var(--editorTheme3-data_lists-field, #e64d00);\n}\n\n.sa-block-color-more,\n.sa-block-color-null {\n --sa-block-background-primary: var(--editorTheme3-more-primary, #ff6680);\n --sa-block-background-secondary: var(--editorTheme3-more-secondary, #ff4d6a);\n --sa-block-background-tertiary: var(--editorTheme3-more-tertiary, #ff3355);\n --sa-block-field-background: var(--editorTheme3-more-field, #ff3355);\n}\n\n.sa-block-color-pen {\n --sa-block-background-primary: var(--editorTheme3-pen-primary, #0fbd8c);\n --sa-block-background-secondary: var(--editorTheme3-pen-secondary, #0da57a);\n --sa-block-background-tertiary: var(--editorTheme3-pen-tertiary, #0b8e69);\n --sa-block-field-background: var(--editorTheme3-pen-field, #0b8e69);\n}\n\n.sa-block-color-addon-custom-block {\n --sa-block-background-primary: var(--editorTheme3-sa-primary, #29beb8);\n --sa-block-background-secondary: var(--editorTheme3-sa-secondary, #3aa8a4);\n --sa-block-background-tertiary: var(--editorTheme3-sa-tertiary, #3aa8a4);\n --sa-block-field-background: var(--editorTheme3-sa-field, #3aa8a4);\n}\n\n.sa-block-color-TurboWarp {\n --sa-block-background-primary: var(--editorTheme3-tw-primary, #ff4c4c);\n --sa-block-background-secondary: var(--editorTheme3-tw-secondary, #e64444);\n --sa-block-background-tertiary: var(--editorTheme3-tw-tertiary, #e64444);\n --sa-block-field-background: var(--editorTheme3-tw-field, #e64444);\n}\n",""])},1640:function(e,t,o){"use strict";o.d(t,"a",(function(){return n})),o.d(t,"b",(function(){return r}));const n=()=>/^#?[0-9a-fA-F]{3,8}$/,r=e=>{let t=String(e);if(!n().test(t))return"#000000";if(t.startsWith("#")||(t="#".concat(t)),4===t.length){const[e,o,n,r]=t;t="#".concat(o).concat(o).concat(n).concat(n).concat(r).concat(r)}return t.toLowerCase()}},1641:function(e,t,o){"use strict";o.d(t,"a",(function(){return n}));class n{constructor(e){this.timeout=null,this.callback=null,this.wait=e}abort(e=!0){this.timeout&&(clearTimeout(this.timeout),e&&this.callback(),this.timeout=this.callback=null)}limit(e){this.abort(!1),this.callback=e,this.timeout=setTimeout(()=>{this.timeout=this.callback=null,e()},this.wait)}}},1642:function(e,t,o){"use strict";const n=function(e){var t=/^\s+/,o=/\s+$/,n=0,r=e.round,s=e.min,a=e.max,i=e.random;function c(i,l){if(l=l||{},(i=i||"")instanceof c)return i;if(!(this instanceof c))return new c(i,l);var d=function(n){var r={r:0,g:0,b:0},i=1,c=null,l=null,d=null,u=!1,p=!1;"string"==typeof n&&(n=function(e){e=e.replace(t,"").replace(o,"").toLowerCase();var n,r=!1;if(C[e])e=C[e],r=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};if(n=Z.rgb.exec(e))return{r:n[1],g:n[2],b:n[3]};if(n=Z.rgba.exec(e))return{r:n[1],g:n[2],b:n[3],a:n[4]};if(n=Z.hsl.exec(e))return{h:n[1],s:n[2],l:n[3]};if(n=Z.hsla.exec(e))return{h:n[1],s:n[2],l:n[3],a:n[4]};if(n=Z.hsv.exec(e))return{h:n[1],s:n[2],v:n[3]};if(n=Z.hsva.exec(e))return{h:n[1],s:n[2],v:n[3],a:n[4]};if(n=Z.hex8.exec(e))return{r:D(n[1]),g:D(n[2]),b:D(n[3]),a:j(n[4]),format:r?"name":"hex8"};if(n=Z.hex6.exec(e))return{r:D(n[1]),g:D(n[2]),b:D(n[3]),format:r?"name":"hex"};if(n=Z.hex4.exec(e))return{r:D(n[1]+""+n[1]),g:D(n[2]+""+n[2]),b:D(n[3]+""+n[3]),a:j(n[4]+""+n[4]),format:r?"name":"hex8"};if(n=Z.hex3.exec(e))return{r:D(n[1]+""+n[1]),g:D(n[2]+""+n[2]),b:D(n[3]+""+n[3]),format:r?"name":"hex"};return!1}(n));"object"==typeof n&&(W(n.r)&&W(n.g)&&W(n.b)?(h=n.r,f=n.g,m=n.b,r={r:255*S(h,255),g:255*S(f,255),b:255*S(m,255)},u=!0,p="%"===String(n.r).substr(-1)?"prgb":"rgb"):W(n.h)&&W(n.s)&&W(n.v)?(c=A(n.s),l=A(n.v),r=function(t,o,n){t=6*S(t,360),o=S(o,100),n=S(n,100);var r=e.floor(t),s=t-r,a=n*(1-o),i=n*(1-s*o),c=n*(1-(1-s)*o),l=r%6;return{r:255*[n,i,a,a,c,n][l],g:255*[c,n,n,i,a,a][l],b:255*[a,a,c,n,n,i][l]}}(n.h,c,l),u=!0,p="hsv"):W(n.h)&&W(n.s)&&W(n.l)&&(c=A(n.s),d=A(n.l),r=function(e,t,o){var n,r,s;function a(e,t,o){return o<0&&(o+=1),o>1&&(o-=1),o<1/6?e+6*(t-e)*o:o<.5?t:o<2/3?e+(t-e)*(2/3-o)*6:e}if(e=S(e,360),t=S(t,100),o=S(o,100),0===t)n=r=s=o;else{var i=o<.5?o*(1+t):o+t-o*t,c=2*o-i;n=a(c,i,e+1/3),r=a(c,i,e),s=a(c,i,e-1/3)}return{r:255*n,g:255*r,b:255*s}}(n.h,c,d),u=!0,p="hsl"),n.hasOwnProperty("a")&&(i=n.a));var h,f,m;return i=L(i),{ok:u,format:n.format||p,r:s(255,a(r.r,0)),g:s(255,a(r.g,0)),b:s(255,a(r.b,0)),a:i}}(i);this._originalInput=i,this._r=d.r,this._g=d.g,this._b=d.b,this._a=d.a,this._roundA=r(100*this._a)/100,this._format=l.format||d.format,this._gradientType=l.gradientType,this._r<1&&(this._r=r(this._r)),this._g<1&&(this._g=r(this._g)),this._b<1&&(this._b=r(this._b)),this._ok=d.ok,this._tc_id=n++}function l(e,t,o){e=S(e,255),t=S(t,255),o=S(o,255);var n,r,i=a(e,t,o),c=s(e,t,o),l=(i+c)/2;if(i==c)n=r=0;else{var d=i-c;switch(r=l>.5?d/(2-i-c):d/(i+c),i){case e:n=(t-o)/d+(t>1)+720)%360;--t;)n.h=(n.h+r)%360,s.push(c(n));return s}function T(e,t){t=t||6;for(var o=c(e).toHsv(),n=o.h,r=o.s,s=o.v,a=[],i=1/t;t--;)a.push(c({h:n,s:r,v:s})),s=(s+i)%1;return a}c.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var t,o,n,r=this.toRgb();return t=r.r/255,o=r.g/255,n=r.b/255,.2126*(t<=.03928?t/12.92:e.pow((t+.055)/1.055,2.4))+.7152*(o<=.03928?o/12.92:e.pow((o+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:e.pow((n+.055)/1.055,2.4))},setAlpha:function(e){return this._a=L(e),this._roundA=r(100*this._a)/100,this},toHsv:function(){var e=d(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=d(this._r,this._g,this._b),t=r(360*e.h),o=r(100*e.s),n=r(100*e.v);return 1==this._a?"hsv("+t+", "+o+"%, "+n+"%)":"hsva("+t+", "+o+"%, "+n+"%, "+this._roundA+")"},toHsl:function(){var e=l(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=l(this._r,this._g,this._b),t=r(360*e.h),o=r(100*e.s),n=r(100*e.l);return 1==this._a?"hsl("+t+", "+o+"%, "+n+"%)":"hsla("+t+", "+o+"%, "+n+"%, "+this._roundA+")"},toHex:function(e){return u(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return function(e,t,o,n,s){var a=[M(r(e).toString(16)),M(r(t).toString(16)),M(r(o).toString(16)),M(O(n))];if(s&&a[0].charAt(0)==a[0].charAt(1)&&a[1].charAt(0)==a[1].charAt(1)&&a[2].charAt(0)==a[2].charAt(1)&&a[3].charAt(0)==a[3].charAt(1))return a[0].charAt(0)+a[1].charAt(0)+a[2].charAt(0)+a[3].charAt(0);return a.join("")}(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:r(this._r),g:r(this._g),b:r(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+r(this._r)+", "+r(this._g)+", "+r(this._b)+")":"rgba("+r(this._r)+", "+r(this._g)+", "+r(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:r(100*S(this._r,255))+"%",g:r(100*S(this._g,255))+"%",b:r(100*S(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+r(100*S(this._r,255))+"%, "+r(100*S(this._g,255))+"%, "+r(100*S(this._b,255))+"%)":"rgba("+r(100*S(this._r,255))+"%, "+r(100*S(this._g,255))+"%, "+r(100*S(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(N[u(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+p(this._r,this._g,this._b,this._a),o=t,n=this._gradientType?"GradientType = 1, ":"";if(e){var r=c(e);o="#"+p(r._r,r._g,r._b,r._a)}return"progid:DXImageTransform.Microsoft.gradient("+n+"startColorstr="+t+",endColorstr="+o+")"},toString:function(e){var t=!!e;e=e||this._format;var o=!1,n=this._a<1&&this._a>=0;return t||!n||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"hex4"!==e&&"hex8"!==e&&"name"!==e?("rgb"===e&&(o=this.toRgbString()),"prgb"===e&&(o=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(o=this.toHexString()),"hex3"===e&&(o=this.toHexString(!0)),"hex4"===e&&(o=this.toHex8String(!0)),"hex8"===e&&(o=this.toHex8String()),"name"===e&&(o=this.toName()),"hsl"===e&&(o=this.toHslString()),"hsv"===e&&(o=this.toHsvString()),o||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return c(this.toString())},_applyModification:function(e,t){var o=e.apply(null,[this].concat([].slice.call(t)));return this._r=o._r,this._g=o._g,this._b=o._b,this.setAlpha(o._a),this},lighten:function(){return this._applyModification(g,arguments)},brighten:function(){return this._applyModification(b,arguments)},darken:function(){return this._applyModification(y,arguments)},desaturate:function(){return this._applyModification(h,arguments)},saturate:function(){return this._applyModification(f,arguments)},greyscale:function(){return this._applyModification(m,arguments)},spin:function(){return this._applyModification(v,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(I,arguments)},complement:function(){return this._applyCombination(k,arguments)},monochromatic:function(){return this._applyCombination(T,arguments)},splitcomplement:function(){return this._applyCombination(_,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(x,arguments)}},c.fromRatio=function(e,t){if("object"==typeof e){var o={};for(var n in e)e.hasOwnProperty(n)&&(o[n]="a"===n?e[n]:A(e[n]));e=o}return c(e,t)},c.equals=function(e,t){return!(!e||!t)&&c(e).toRgbString()==c(t).toRgbString()},c.random=function(){return c.fromRatio({r:i(),g:i(),b:i()})},c.mix=function(e,t,o){o=0===o?0:o||50;var n=c(e).toRgb(),r=c(t).toRgb(),s=o/100;return c({r:(r.r-n.r)*s+n.r,g:(r.g-n.g)*s+n.g,b:(r.b-n.b)*s+n.b,a:(r.a-n.a)*s+n.a})},c.readability=function(t,o){var n=c(t),r=c(o);return(e.max(n.getLuminance(),r.getLuminance())+.05)/(e.min(n.getLuminance(),r.getLuminance())+.05)},c.isReadable=function(e,t,o){var n,r,s=c.readability(e,t);switch(r=!1,(n=function(e){var t,o;t=((e=e||{level:"AA",size:"small"}).level||"AA").toUpperCase(),o=(e.size||"small").toLowerCase(),"AA"!==t&&"AAA"!==t&&(t="AA");"small"!==o&&"large"!==o&&(o="small");return{level:t,size:o}}(o)).level+n.size){case"AAsmall":case"AAAlarge":r=s>=4.5;break;case"AAlarge":r=s>=3;break;case"AAAsmall":r=s>=7}return r},c.mostReadable=function(e,t,o){var n,r,s,a,i=null,l=0;r=(o=o||{}).includeFallbackColors,s=o.level,a=o.size;for(var d=0;dl&&(l=n,i=c(t[d]));return c.isReadable(e,i,{level:s,size:a})||!r?i:(o.includeFallbackColors=!1,c.mostReadable(e,["#fff","#000"],o))};var C=c.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},N=c.hexNames=function(e){var t={};for(var o in e)e.hasOwnProperty(o)&&(t[e[o]]=o);return t}(C);function L(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function S(t,o){(function(e){return"string"==typeof e&&-1!=e.indexOf(".")&&1===parseFloat(e)})(t)&&(t="100%");var n=function(e){return"string"==typeof e&&-1!=e.indexOf("%")}(t);return t=s(o,a(0,parseFloat(t))),n&&(t=parseInt(t*o,10)/100),e.abs(t-o)<1e-6?1:t%o/parseFloat(o)}function E(e){return s(1,a(0,e))}function D(e){return parseInt(e,16)}function M(e){return 1==e.length?"0"+e:""+e}function A(e){return e<=1&&(e=100*e+"%"),e}function O(t){return e.round(255*parseFloat(t)).toString(16)}function j(e){return D(e)/255}var B,R,z,Z=(R="[\\s|\\(]+("+(B="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+B+")[,|\\s]+("+B+")\\s*\\)?",z="[\\s|\\(]+("+B+")[,|\\s]+("+B+")[,|\\s]+("+B+")[,|\\s]+("+B+")\\s*\\)?",{CSS_UNIT:new RegExp(B),rgb:new RegExp("rgb"+R),rgba:new RegExp("rgba"+z),hsl:new RegExp("hsl"+R),hsla:new RegExp("hsla"+z),hsv:new RegExp("hsv"+R),hsva:new RegExp("hsva"+z),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function W(e){return!!Z.CSS_UNIT.exec(e)}return c}(Math);t.a=n},1647:function(e,t,o){"use strict";o.d(t,"b",(function(){return s})),o.d(t,"c",(function(){return i})),o.d(t,"a",(function(){return u}));let n=!1,r=!1;function s(e,t){n=e,r=e&&t}let a=!1;function i(e){a=e}let c=!1,l=!1;document.addEventListener("mousedown",(function(e){c=e.ctrlKey||e.metaKey,l=e.altKey}),{capture:!0});let d=!1;async function u(e){if(d)return;d=!0;const t=await e.tab.traps.getBlockly(),o=t.Gesture.prototype.startDraggingBlock_;t.Gesture.prototype.startDraggingBlock_=function(...e){let s=this.targetBlock_;const i=!(this.mostRecentEvent_ instanceof MouseEvent),d=a&&l&&!i&&!this.flyout_&&!this.shouldDuplicateOnDrag_&&"procedures_definition"!==this.targetBlock_.type,u=r&&!i&&s.getParent(),p=(n||d)&&c===!u&&!s.isShadow();if((d||p)&&(t.Events.getGroup()||t.Events.setGroup(!0)),d){let e;this.startWorkspace_.setResizesEnabled(!1),t.Events.disable();try{const o=t.Xml.blockToDom(s);e=t.Xml.domToBlock(o,this.startWorkspace_),t.scratchBlocksUtils.changeObscuredShadowIds(e);const n=s.getRelativeToSurfaceXY();e.moveBy(n.x,n.y)}catch(e){console.error(e)}t.Events.enable(),e&&(s=e,this.targetBlock_=e,t.Events.isEnabled()&&t.Events.fire(new t.Events.BlockCreate(e)))}if(p){if(i||d){const e=s.getNextBlock();e&&e.dispose()}s.unplug(!0)}return o.call(this,...e)}}},1683:function(e,t,o){(t=e.exports=o(9)(!1)).i(o(1635),""),t.push([e.i,'.sa-find-bar {\n display: flex;\n align-items: center;\n white-space: nowrap;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n width: 100%;\n height: 100%;\n margin-left: 1em;\n}\n.sa-find-bar[hidden] {\n /* !important to override displayNoneWhileDisabled */\n display: none !important;\n}\n\n.sa-find-wrapper {\n overflow: visible;\n position: relative;\n height: 2rem;\n width: 100%;\n max-width: 16em;\n}\n\n.sa-find-dropdown-out {\n display: block;\n top: -6px;\n z-index: 100;\n width: 100%;\n max-width: 16em;\n position: relative;\n padding: 4px;\n border: none;\n border-radius: 4px;\n margin-top: 6px;\n}\n\n.sa-find-dropdown-out.visible {\n position: absolute;\n width: 16em;\n box-shadow: 0px 0px 8px 1px var(--ui-black-transparent, rgba(0, 0, 0, 0.3));\n background-color: var(--ui-primary, white);\n}\n\n/* We need to modify Scratch styles so that the place where the find bar is injected */\n/* has actually correct size information, which is used to make the find bar not cover up controls */\n[class*="gui_tab-list_"] {\n width: 100%;\n}\n[class*="gui_tab_"] {\n flex-grow: 0;\n}\n\n.sa-find-input {\n width: 100%;\n box-sizing: border-box !important;\n /* !important required for extension, because CSS injection method (and hence order) differs from addon */\n height: 1.5rem;\n\n /* Change Scratch default styles */\n border-radius: 0.25rem;\n font-size: 0.75rem;\n padding-left: 0.4em;\n}\n\n.sa-find-input:focus {\n /* Change Scratch default styles */\n box-shadow: none;\n}\n\n.sa-find-dropdown {\n display: none;\n position: relative;\n padding: 0.2em 0;\n font-size: 0.75rem;\n line-height: 1;\n overflow-y: auto;\n min-height: 128px;\n max-height: 65vh;\n user-select: none;\n max-width: 100%;\n margin-top: 6px;\n border: none;\n}\n\n.sa-find-dropdown-out.visible > .sa-find-dropdown {\n display: block;\n}\n\n.sa-find-dropdown > li {\n display: block;\n padding: 0.5em 0.3em;\n white-space: nowrap;\n margin: 0;\n font-weight: bold;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.sa-find-dropdown > li > b {\n background-color: #aaffaa;\n color: black;\n}\n\n/* Drop down items */\n.sa-find-dropdown > li:hover,\n.sa-find-dropdown > li.sel {\n color: var(--sa-block-text-on-bright-background);\n cursor: pointer;\n}\n\n.sa-find-dropdown > li::before {\n content: "\\25CF "; /* ● */\n}\n\n.sa-find-flag {\n color: #4cbf56;\n}\n/* .sa-find-dropdown added for specificity */\n.sa-find-dropdown > .sa-find-flag:hover,\n.sa-find-dropdown > .sa-find-flag.sel {\n background-color: #4cbf56;\n color: white;\n}\n\n.sa-find-dropdown .sa-block-color {\n color: var(--sa-block-colored-text);\n}\n.sa-find-dropdown .sa-block-color:hover,\n.sa-find-dropdown .sa-block-color.sel {\n background-color: var(--sa-block-bright-background);\n}\n\n.sa-find-carousel {\n font-weight: normal;\n position: absolute;\n right: 0;\n white-space: nowrap;\n background-color: inherit;\n z-index: 1;\n padding: 0;\n}\n\n.sa-find-carousel-control {\n padding: 0 6px;\n}\n\n.sa-find-carousel-control:hover {\n color: #ffff80;\n}\n',""])},1684:function(e,t,o){(t=e.exports=o(9)(!1)).i(o(1635),""),t.push([e.i,'/* Find Input Box */\n.sa-float-bar-input {\n width: 100%;\n box-sizing: border-box !important;\n /* !important required for extension, because CSS injection method (and hence order) differs from addon */\n height: 1.5rem;\n\n /* Change Scratch default styles */\n border-radius: 0.25rem;\n font-size: 0.75rem;\n padding-left: 0.4em;\n}\n[theme="dark"] input.s3devInp {\n color: #eee;\n background: #3333;\n}\n[theme="dark"] input.s3devInp:hover {\n background: #333;\n}\n\n.sa-float-bar-input:focus {\n /* Change Scratch default styles */\n box-shadow: none;\n}\n\n/* Drop down from find button */\n.sa-float-bar-dropdown-out {\n display: block;\n top: -6px;\n z-index: 100;\n max-width: 16em;\n padding: 4px;\n position: absolute;\n width: 16em;\n box-shadow: 0px 0px 8px 1px var(--ui-black-transparent, rgba(0, 0, 0, 0.3));\n background-color: var(--ui-primary, white);\n border: none;\n border-radius: 4px;\n}\n\n/* Drop down from find button */\n.sa-float-bar-dropdown {\n display: none;\n position: relative;\n padding: 0.2em 0;\n font-size: 0.75rem;\n line-height: 1;\n overflow-y: auto;\n min-height: 128px;\n user-select: none;\n max-width: 100%;\n max-height: 200px;\n margin-bottom: 0;\n}\n\n.sa-float-bar-dropdown-out.vis .sa-float-bar-dropdown {\n display: block;\n border: none;\n}\n\n/* Drop down items */\n.sa-float-bar-dropdown > li {\n display: block;\n padding: 0.5em 0.3em;\n white-space: nowrap;\n margin: 0;\n font-weight: bold;\n text-overflow: ellipsis;\n overflow: hidden;\n cursor: pointer;\n}\n\n.sa-float-bar-dropdown > li > b {\n background-color: #aaffaa;\n color: black;\n}\n\n.sa-float-bar-dropdown > li {\n height: 19px;\n padding: 3px 8px;\n margin: 2px 0.3em;\n box-sizing: border-box;\n position: relative;\n background-color: var(--sa-block-colored-background);\n color: var(--sa-block-text);\n font-weight: bold;\n width: min-content;\n}\n.sa-float-bar-dropdown > li:hover,\n.sa-float-bar-dropdown > li.sel {\n background-color: var(--sa-block-colored-background-secondary);\n}\n\n.sa-float-bar-dropdown > li.sa-hat {\n border-radius: 14px 14px 3px 3px;\n}\n.sa-float-bar-dropdown > li.sa-block {\n border-radius: 3px;\n}\n.sa-float-bar-dropdown > li.sa-reporter {\n border-radius: 10px;\n}\n\n.sa-float-bar-dropdown > li.sa-boolean {\n width: min-content;\n}\n.sa-float-bar-dropdown > li.sa-boolean::before {\n content: "";\n position: absolute;\n left: 0;\n top: 0;\n width: 0;\n height: 0;\n border-right: 9px solid transparent;\n border-top: 9px solid var(--ui-primary, white);\n border-bottom: 10px solid var(--ui-primary, white);\n}\n.sa-float-bar-dropdown > li.sa-boolean::after {\n content: "";\n position: absolute;\n right: 0;\n top: 0;\n width: 0;\n height: 0;\n border-left: 9px solid transparent;\n border-top: 9px solid var(--ui-primary, white);\n border-bottom: 10px solid var(--ui-primary, white);\n}\n[theme="dark"] .s3devDD > li.boolean::before {\n border-top-color: #111;\n border-bottom-color: #111;\n}\n[theme="dark"] .s3devDD > li.boolean::after {\n border-top-color: #111;\n border-bottom-color: #111;\n}\n\n.sa-float-bar {\n display: flex;\n white-space: nowrap;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n\n position: absolute;\n min-width: 128px;\n background-color: white;\n border-radius: 4px;\n box-shadow: rgba(0, 0, 0, 0.3) 0 0 3px, rgba(0, 0, 0, 0.2) 0 3px 10px;\n\n z-index: 999;\n}\n[theme="dark"] #s3devFloatingBar {\n background-color: #111;\n}\n\n.sa-float-bar-dropdown > li > b {\n background-color: rgba(0, 0, 0, 0.6);\n color: white;\n}\n\n[data-highlighted="true"] {\n background-color: hsla(30, 100%, 55%, 1) !important; /* orange */\n color: white !important;\n}\n',""])},1685:function(e,t,o){(e.exports=o(9)(!1)).push([e.i,".u-dropdown-searchbar {\n width: 100%;\n box-sizing: border-box;\n /* based on styles for the title input */\n color: white;\n background-color: hsla(0, 100%, 100%, 0.25);\n border: 1px solid hsla(0, 0%, 0%, 0.15);\n padding: 0.5rem;\n outline: none;\n transition: 0.25s ease-out;\n font-size: 13px;\n font-weight: bold;\n border-radius: 4px;\n}\n.u-dropdown-searchbar:hover {\n background-color: hsla(0, 100%, 100%, 0.5);\n}\n.u-dropdown-searchbar:focus {\n background-color: white;\n color: black;\n}\n.blocklyDropDownDiv .goog-menu {\n overflow-x: hidden;\n}\n",""])},1711:function(e,t,o){(e.exports=o(9)(!1)).push([e.i,'.sa-color-picker {\n display: flex;\n}\n\n.sa-color-picker-code {\n margin: 8px 0;\n}\n\n.sa-color-picker-paint {\n margin-top: 16px;\n margin-bottom: 4px;\n}\n\n.sa-color-picker > .sa-color-picker-color {\n border: none;\n border-top-left-radius: 1rem;\n border-bottom-left-radius: 1rem;\n padding: 0;\n padding-left: 0.6rem;\n padding-right: 0.4rem;\n margin-left: 0.5rem;\n outline: none;\n box-sizing: border-box;\n width: 3rem;\n height: 2rem;\n}\n[theme="dark"] .sa-color-picker > .sa-color-picker-color {\n background: var(--ui-secondary);\n}\n\n.sa-color-picker > .sa-color-picker-text {\n box-sizing: border-box;\n width: calc(150px - 3rem);\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n[dir="rtl"] .sa-color-picker > .sa-color-picker-color {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-top-right-radius: 1rem;\n border-bottom-right-radius: 1rem;\n margin-left: 0;\n margin-right: 0.5rem;\n}\n\n[dir="rtl"] .sa-color-picker > .sa-color-picker-text {\n border-top-left-radius: 1rem;\n border-bottom-left-radius: 1rem;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\nbody.sa-hide-eye-dropper-background div[class*="stage_color-picker-background"] {\n /* Do not show eye dropper background if the color picker is "fake" */\n display: none;\n}\n',""])},1712:function(e,t,o){(e.exports=o(9)(!1)).push([e.i,'.sa-onion-button {\n position: relative;\n}\n.sa-onion-button:focus-within {\n background-color: hsla(0, 100%, 65%, 0.2);\n}\n[theme="dark"] .sa-onion-image {\n filter: brightness(0) invert(0.8);\n}\n.sa-onion-button[data-enabled="true"] .sa-onion-image {\n filter: brightness(0) invert(1);\n}\n.sa-onion-button[data-enabled="true"] {\n background-color: #ff4c4c;\n}\n\n.sa-onion-group {\n position: relative;\n flex-direction: row;\n}\n\n.sa-onion-settings-wrapper {\n position: absolute;\n justify-items: center;\n left: 50%;\n width: 1.95rem;\n height: 1.95rem;\n display: grid;\n}\n\n.sa-onion-settings {\n position: absolute;\n bottom: 100%;\n /* based on the styles for the color dropdown */\n padding: 4px;\n border-radius: 4px;\n border: 1px solid var(--paint-ui-pane-border, #ddd);\n box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, 0.3);\n transition-property: bottom, opacity;\n transition-duration: 500ms;\n transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1);\n opacity: 0;\n pointer-events: none;\n background: var(--ui-primary, white);\n min-height: 100%;\n min-width: 100%;\n display: flex;\n flex-direction: column;\n gap: 0.25em;\n}\n.sa-onion-settings[data-visible="true"] {\n bottom: calc(100% + 22px);\n pointer-events: auto;\n opacity: 1;\n}\n\n.sa-onion-settings-line {\n display: flex;\n justify-content: flex-end;\n align-items: baseline;\n gap: 0.25em;\n}\n\n.sa-onion-settings-input {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n text-align: center;\n border: 0;\n background: transparent;\n -moz-appearance: textfield;\n border: 0;\n outline: 0;\n}\n\n.sa-onion-settings-input::-webkit-outer-spin-button,\n.sa-onion-settings-input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n.sa-onion-settings-tip {\n position: absolute;\n bottom: 0;\n transform: translateY(100%);\n right: calc(50% - 7px);\n}\n.sa-onion-settings-polygon {\n fill: var(--ui-primary, white);\n stroke: var(--paint-ui-pane-border, #ddd);\n}\n\n.sa-onion-settings-label {\n white-space: nowrap;\n}\n',""])},1716:function(e,t,o){(e.exports=o(9)(!1)).push([e.i,'.sa-stage-color-picker-picking [class^="stage_color-picker-background_"] {\n display: none;\n}\n',""])},1736:function(e,t,o){(e.exports=o(9)(!1)).push([e.i,'.sa-folders-contextmenu-item {\n max-width: 250px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n[sa-folders-context-type="folder"] .react-contextmenu > :not(.sa-ctx-menu) {\n display: none;\n}\n',""])},1747:function(e,t,o){(e.exports=o(9)(!1)).push([e.i,".sa-comment-preview-outer {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 100000000;\n pointer-events: none;\n}\n\n.sa-comment-preview-inner {\n width: calc(200px - 16px);\n max-height: calc(132px - 8px);\n padding: 8px;\n overflow: hidden;\n\n font-size: 12px;\n white-space: pre-wrap;\n pointer-events: none;\n\n color: rgb(87, 94, 117);\n background-color: rgb(255 255 255 / 90%);\n border-style: none;\n border-radius: 8px;\n filter: drop-shadow(0px 5px 5px rgb(0 0 0 / 10%));\n\n transform: perspective(200px);\n}\n\n@supports (backdrop-filter: blur(16px)) {\n .sa-comment-preview-inner {\n background-color: rgb(255 255 255 / 75%);\n backdrop-filter: blur(16px);\n }\n}\n\n.sa-comment-preview-fade {\n transition: opacity 0.1s, filter 0.1s, transform 0.1s linear;\n}\n\n.sa-comment-preview-hidden {\n opacity: 0;\n filter: none;\n transform: perspective(200px) translateZ(-20px);\n}\n\n.sa-comment-preview-reduce-transparency {\n background-color: rgb(255 255 255);\n backdrop-filter: none;\n}\n",""])},1762:function(e,t,o){"use strict";o.r(t),o.d(t,"resources",(function(){return c}));class n{constructor(e){this.addon=e,this.vm=e.tab.traps.vm,this.events=[]}triggerDragAndDrop(e,t,o,n){n=n||!1;let r=function(e,t,o,r){let s=document.createEvent("MouseEvents");s.initMouseEvent(e,!0,!0,window,1,1,1,o,r,n,!1,!1,!1,0,t),t.dispatchEvent(s)},s=e,a=t;if(!s)return!1;let i=s.getBoundingClientRect(),c=Math.floor((i.left+i.right)/2),l=Math.floor((i.top+i.bottom)/2);if(r("mouseover",s,c,l),r("mousedown",s,c,l),r("dragstart",s,c,l),r("drag",s,c,l),r("mousemove",s,c,l),!a){if(o){let e=o.x,t=o.y;r("drag",s,e,t),r("mousemove",s,e,t)}return!1}i=a.getBoundingClientRect();let d=Math.floor((i.left+i.right)/2),u=Math.floor((i.top+i.bottom)/2);return r("drag",s,d,u),r("mousemove",a,d,u),r("mouseenter",a,d,u),r("dragenter",a,d,u),r("mouseover",a,d,u),r("dragover",a,d,u),r("drop",a,d,u),r("dragend",s,d,u),r("mouseup",s,d,u),!0}bindOnce(e,t,o,n){n=!!n,e.removeEventListener(t,o,n),e.addEventListener(t,o,n),this.events.push(new r(e,t,o,n))}unbindAllEvents(){for(const e of this.events)e.dom.removeEventListener(e.event,e.func,e.capture);this.events=[]}}class r{constructor(e,t,o,n){this.dom=e,this.event=t,this.func=o,this.capture=n}}class s{static startUndoGroup(e){const t=e.undoStack_;t.length&&(t[t.length-1]._devtoolsLastUndo=!0)}static endUndoGroup(e){const t=e.undoStack_;setTimeout(()=>{const e=function(){const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#$%()*+,-./:;=?@[]^_`{|}~";let t="";for(let o=0;o<20;o++)t+=e[Math.floor(Math.random()*e.length)];return t}();for(let o=t.length-1;o>=0&&!t[o]._devtoolsLastUndo;o--)t[o].group=e},0)}}class a{constructor(e,t,o){this.addon=e,this.msg=t,this.m=o,this.domHelpers=new n(e),this.codeTab=null,this.costTab=null,this.costTabBody=null,this.selVarID=null,this.canShare=!1,this.mouseXY={x:0,y:0}}async init(){for(this.addContextMenus();;){const e=await this.addon.tab.waitForElement("ul[class*=gui_tab-list_]",{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"],reduxCondition:e=>!e.scratchGui.mode.isPlayerOnly});this.initInner(e)}}async addContextMenus(){const e=await this.addon.tab.traps.getBlockly(),t=e.WorkspaceSvg.prototype.cleanUp,o=this;e.WorkspaceSvg.prototype.cleanUp=function(){o.addon.settings.get("enableCleanUpPlus")?o.doCleanUp():t.call(this)};let n=e.Msg.CLEAN_UP;this.addon.settings.get("enableCleanUpPlus")&&(e.Msg.CLEAN_UP=this.m("clean-plus")),this.addon.settings.addEventListener("change",()=>{this.addon.settings.get("enableCleanUpPlus")?e.Msg.CLEAN_UP=this.m("clean-plus"):e.Msg.CLEAN_UP=n}),this.addon.tab.createBlockContextMenu((t,o)=>(t.push({enabled:e.clipboardXml_,text:this.m("paste"),separator:!0,_isDevtoolsFirstItem:!0,callback:()=>{let e=this.getTopBlockIDs();document.dispatchEvent(new KeyboardEvent("keydown",{keyCode:86,ctrlKey:!0,griff:!0})),setTimeout(()=>{this.beginDragOfNewBlocksNotInIDs(e)},10)}}),t),{workspace:!0}),this.addon.tab.createBlockContextMenu((e,t)=>(e.push({enabled:!0,text:this.m("make-space"),_isDevtoolsFirstItem:!0,callback:()=>{this.doCleanUp(t)},separator:!0},{enabled:!0,text:this.m("copy-all"),callback:()=>{this.eventCopyClick(t)},separator:!0},{enabled:!0,text:this.m("copy-block"),callback:()=>{this.eventCopyClick(t,1)}},{enabled:!0,text:this.m("cut-block"),callback:()=>{this.eventCopyClick(t,2)}}),e),{blocks:!0}),this.addon.tab.createBlockContextMenu((e,t)=>("data"!==t.getCategory()&&"data-lists"!==t.getCategory()||(this.selVarID=t.getVars()[0],e.push({enabled:!0,text:this.m("swap",{var:"data"===t.getCategory()?this.m("variables"):this.m("lists")}),callback:async()=>{let e=this.getWorkspace().getVariableById(this.selVarID),t=await window.prompt(this.msg("replace",{name:e.name}));t&&this.doReplaceVariable(this.selVarID,t,e.type)},separator:!0})),e),{blocks:!0,flyout:!0})}getWorkspace(){return Blockly.getMainWorkspace()}isCostumeEditor(){return this.costTab.className.indexOf("gui_is-selected")>=0}getTopBlocks(){let e=this.getOrderedTopBlockColumns().cols,t=[];for(const o of e)t=t.concat(o.blocks);return t}doCleanUp(e){let t=this.getWorkspace(),o=e&&e.getRootBlock();s.startUndoGroup(t);let n=this.getOrderedTopBlockColumns(!0),r=n.cols,a=n.orphans.blocks.length;if(a>0&&!e){let e=this.msg("orphaned",{count:a});if(confirm(e))for(const e of n.orphans.blocks)e.dispose();else r.unshift(n.orphans)}let i=48,c=n.maxWidths;for(const e of r){let t=64,n=0;for(const r of e.blocks){let e=r===o?380:0,s=r===o?480:72,a=r.getRelativeToSurfaceXY();i-a.x==0&&t-a.y==0||r.moveBy(i-a.x,t-a.y);let l=r.getHeightWidth();t+=l.height+s;let d=c[r.id]||0;n=Math.max(n,Math.max(l.width+e,d))}i+=n+96}let l=t.getTopComments();for(const e of l)e.setVisible&&(e.setVisible(!1),e.needsAutoPositioning_=!0,e.setVisible(!0));setTimeout(()=>{let e=this.getWorkspace(),t=e.getVariableMap(),o=t.getVariablesOfType(""),n=[];for(const e of o)if(e.isLocal){let o=t.getVariableUsesById(e.getId());o&&0!==o.length||n.push(e)}if(n.length>0){const t=n.length;let o=this.msg("unused-var",{count:t});for(let e=0;e0&&(o+=", "),o+=t.name}if(confirm(o))for(const t of n)e.deleteVariableById(t.getId())}let r=t.getVariablesOfType("list"),a=[];for(const e of r)if(e.isLocal){let o=t.getVariableUsesById(e.getId());o&&0!==o.length||a.push(e)}if(a.length>0){const t=a.length;let o=this.msg("unused-list",{count:t});for(let e=0;e0&&(o+=", "),o+=t.name}if(confirm(o))for(const t of a)e.deleteVariableById(t.getId())}s.endUndoGroup(e)},100)}isBlockAnOrphan(e){return!!e.outputConnection}getOrderedTopBlockColumns(e){let t=this.getWorkspace(),o=t.getTopBlocks(),n={};if(e){let e=t.getTopComments();for(const t of e)if(t.setVisible){t.setVisible(!1),t.needsAutoPositioning_=!0,t.setVisible(!0);let e=t.getBoundingRectangle().bottomRight.x,o=t.block_.getRootBlock(),r=o.getBoundingRectangle().topLeft.x;n[o.id]=Math.max(e-r,n[o.id]||0)}}let r=[];let s={x:-999999,count:0,blocks:[]};for(const t of o){let o=t.getRelativeToSurfaceXY(),n=null,a=256;if(e&&this.isBlockAnOrphan(t))s.blocks.push(t);else{for(const e of r){let t=Math.abs(o.x-e.x);te.x-t.x);for(const e of r)e.blocks.sort((e,t)=>e.getRelativeToSurfaceXY().y-t.getRelativeToSurfaceXY().y);return{cols:r,orphans:s,maxWidths:n}}getVariableUsesById(e){let t=[],o=this.getTopBlocks(!0);for(const n of o){let o=n.getDescendants();for(const n of o){let o=n.getVarModels();if(o)for(const r of o)r.getId()===e&&t.push(n)}}return t}doReplaceVariable(e,t,o){let n=this.getWorkspace(),r=n.getVariable(t,o);if(!r)return void alert(this.msg("var-not-exist"));let a=r.getId();s.startUndoGroup(n);let i=this.getVariableUsesById(e);for(const e of i)try{""===o?e.getField("VARIABLE").setValue(a):e.getField("LIST").setValue(a)}catch(e){}s.endUndoGroup(n)}getTopBlockIDs(){let e=this.getWorkspace().getTopBlocks(),t=new Set;for(const o of e)t.add(o.id);return t}beginDragOfNewBlocksNotInIDs(e){if(!this.addon.settings.get("enablePasteBlocksAtMouse"))return;let t=this.getWorkspace().getTopBlocks();for(const o of t)if(!e.has(o.id)){let e={x:this.mouseXY.x,y:this.mouseXY.y};o.setIntersects(!0),this.domHelpers.triggerDragAndDrop(o.svgPath_,null,e)}}updateMousePosition(e){this.mouseXY.x=e.clientX,this.mouseXY.y=e.clientY}eventMouseMove(e){this.updateMousePosition(e)}eventKeyDown(e){const t=e=>{let t=this.costTabBody.querySelector("div[class*='sprite-selector-item_is-selected']"),o=e?t.parentNode.previousSibling:t.parentNode.nextSibling;if(o){let e=o.closest("div[class*=gui_flex-wrapper]");o.querySelector("div[class^='sprite-selector-item_sprite-name']").click(),o.scrollIntoView({behavior:"auto",block:"center",inline:"start"}),e.scrollTop=0}};if(document.URL.indexOf("editor")<=0)return;let o=e.ctrlKey||e.metaKey;if(37===e.keyCode&&o){if("INPUT"===document.activeElement.tagName)return;if(this.isCostumeEditor())return t(!0),e.cancelBubble=!0,e.preventDefault(),!0}if(39===e.keyCode&&o){if("INPUT"===document.activeElement.tagName)return;if(this.isCostumeEditor())return t(!1),e.cancelBubble=!0,e.preventDefault(),!0}if(86===e.keyCode&&o&&!e.griff){let e=this.getTopBlockIDs();setTimeout(()=>{this.beginDragOfNewBlocksNotInIDs(e)},10)}}eventCopyClick(e,t){let o=this.getWorkspace();if(e){e.select();let n=t?e.getNextBlock():null;n&&n.unplug(!1),document.dispatchEvent(new KeyboardEvent("keydown",{keyCode:67,ctrlKey:!0})),(n||2===t)&&setTimeout(()=>{n&&o.undo(),2===t&&(s.startUndoGroup(o),e.dispose(!0),s.endUndoGroup(o))},0)}}eventMouseDown(e){this.updateMousePosition(e)}eventMouseUp(e){this.updateMousePosition(e)}initInner(e){let t=e.childNodes;this.codeTab&&t[0]!==this.codeTab&&this.domHelpers.unbindAllEvents(),this.codeTab=t[0],this.costTab=t[1],this.costTabBody=document.querySelector("div[aria-labelledby="+this.costTab.id+"]"),this.domHelpers.bindOnce(document,"keydown",(...e)=>this.eventKeyDown(...e),!0),this.domHelpers.bindOnce(document,"mousemove",(...e)=>this.eventMouseMove(...e),!0),this.domHelpers.bindOnce(document,"mousedown",(...e)=>this.eventMouseDown(...e),!0),this.domHelpers.bindOnce(document,"mouseup",(...e)=>this.eventMouseUp(...e),!0)}}class i{constructor(e,t,o){this.x=e,this.count=t,this.blocks=o}}const c={"userscript.js":async function({addon:e,console:t,msg:o,safeMsg:n}){new a(e,o,n).init()},"icon--close.svg":"data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3LjQ4IDcuNDgiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6MnB4O308L3N0eWxlPjwvZGVmcz48dGl0bGU+aWNvbi0tYWRkPC90aXRsZT48bGluZSBjbGFzcz0iY2xzLTEiIHgxPSIzLjc0IiB5MT0iNi40OCIgeDI9IjMuNzQiIHkyPSIxIi8+PGxpbmUgY2xhc3M9ImNscy0xIiB4MT0iMSIgeTE9IjMuNzQiIHgyPSI2LjQ4IiB5Mj0iMy43NCIvPjwvc3ZnPg=="}},1763:function(e,t,o){"use strict";o.r(t),o.d(t,"resources",(function(){return r}));var n=o(1712);const r={"userscript.js":async function({addon:e,console:t,msg:o}){const n=await e.tab.traps.getPaper(),r=await e.tab.waitForElement("[class^='paint-editor_canvas-container']");try{if(!("colorIndex"in e.tab.redux.state.scratchPaint.fillMode))return void t.error("Detected new paint editor; this will be supported in future versions.")}catch(e){}const s=r[e.tab.traps.getInternalKey(r)].child.child.child.stateNode,a=[],i=e=>{const t=e.substr(1),o=parseInt(t,16);return[o>>16&255,o>>8&255,255&o]},c={enabled:e.settings.get("default")&&!e.self.disabled,previous:+e.settings.get("previous"),next:+e.settings.get("next"),opacity:+e.settings.get("opacity"),opacityStep:+e.settings.get("opacityStep"),layering:e.settings.get("layering"),mode:e.settings.get("mode"),beforeTint:i(e.settings.get("beforeTint")),afterTint:i(e.settings.get("afterTint"))},l=()=>n.project.layers.find(e=>e.data.isBackgroundGuideLayer).children[0].position;let d=0;const u=()=>++d,p=()=>{u();const e=n.project;if(!e)return;a.length=0;const t=e.layers;for(let e=t.length-1;e>=0;e--){const o=t[e];o.data.sa_isOnionLayer&&o.remove()}},h=()=>{const e=n.project;if(!e)return;const t=e.layers.find(e=>e.data.sa_isOnionLayer);if(t)if("front"===c.layering)e.addLayer(t);else{0===e.layers.find(e=>e.data.isRasterLayer).index?e.insertLayer(0,t):e.insertLayer(1,t)}},f=(e,t)=>{if(e.children)for(const o of e.children)f(o,t);t(e)},m=(e,t,o,n)=>{const r=n?c.beforeTint:c.afterTint,s=(e+t+o)/3/255/1.5+(1-1/1.5);return[r[0]*s,r[1]*s,r[2]*s]},g=(e,t)=>(([e,t,o])=>{const n=Math.round(e).toString(16).padStart(2,"0"),r=Math.round(t).toString(16).padStart(2,"0"),s=Math.round(o).toString(16).padStart(2,"0");return"#".concat(n).concat(r).concat(s)})(m(255*e.red,255*e.green,255*e.blue,t)),b=(e,t)=>{const{width:o,height:n}=e.canvas,r=e.context,s=r.getImageData(0,0,o,n),a=s.data;for(let e=0;e{const t=e.strokeBounds,{width:o,height:r}=t,s=Math.min(3e3/o,3e3/r),a=new n.Raster(new n.Size(o,r));a.remove(),a.smoothing=!0,a.guide=!0,a.locked=!0;let i=0;const c=a.draw;return a.draw=function(...a){const l=this.getView().getZoom()*window.devicePixelRatio,d=Math.max(1,Math.min(s,2**Math.ceil(Math.log2(l))));if(d>i){i=d;const s=this.canvas,a=this.context,c=o*d,l=r*d;s.width=c,s.height=l,this._size=new n.Size(c,l);const u=t.getTopLeft(),p=t.getBottomRight(),h=new n.Size(p.subtract(u)),f=(new n.Matrix).scale(d).translate(u.negate());a.save(),f.applyToContext(a),e.draw(a,new n.Base({matrices:[f]})),a.restore(),this.matrix.reset(),this.transform((new n.Matrix).translate(u.add(h.divide(2))).scale(1/d))}return c.call(this,...a)},a},v=(e,t,o,r)=>new Promise((s,a)=>{const{rotationCenterX:i,rotationCenterY:d}=t,u=(o=(o=o.split(/<\s*svg:/).join("<")).split(/<\/\s*svg:/).join("]*>/);u&&-1===u[0].indexOf("xmlns=")&&(o=o.replace("{t?s((e=>{const t=[];return f(e,e=>{e instanceof n.Raster&&t.push(new Promise((t,o)=>{e.on("load",()=>t()),e.on("error",()=>o(new Error("Raster inside SVG failed to load")))}))}),Promise.all(t)})(t).then(()=>(t=>{if(t.opacity=e,f(t,e=>{"PathItem"===e.className&&(e.clockwise=!0),"PointText"===e.className||e.children||e.strokeWidth&&(e.strokeWidth=2*e.strokeWidth),e.locked=!0,e.guide=!0}),t.scale(2,new n.Point(0,0)),"tint"===c.mode){const e=new Set;f(t,t=>{if(t.strokeColor&&(t.strokeColor=g(t.strokeColor,r)),t.fillColor){const o=t.fillColor.gradient;if(o){if(e.has(o))return;e.add(o);for(const e of o.stops)e.color=g(e.color,r)}else t.fillColor=g(t.fillColor,r)}t.canvas&&b(t,r)})}const o=l();if(void 0!==i&&void 0!==d){let e=new n.Point(i,d);h&&h.length>=2&&!isNaN(h[0])&&!isNaN(h[1])&&(e=e.subtract(h[0],h[1])),t.translate(o.subtract(e.multiply(2)))}else t.translate(o.subtract(t.bounds.width,t.bounds.height));return y(t)})(t))):a(new Error("could not load onion skin"))}})}),k=async()=>{const o=n.project;if(!o)return;const r=(()=>{const e=document.querySelector("[class*='selector_list-item'][class*='sprite-selector-item_is-selected']");if(!e)return-1;const t=e.querySelector("[class*='sprite-selector-item_number']");return t?+t.textContent-1:-1})();if(-1===r)return;p();const s=u(),a=e.tab.traps.vm;if(!a)return;const i=o.activeLayer,f=a.editingTarget.sprite.costumes,m=Math.max(0,r-c.previous),g=Math.min(f.length-1,r+c.next);try{const e=[];for(let t=m;t<=g;t++){if(t===r)continue;const o=t{const r=f[e],s=a.getCostume(e);if("svg"===r.dataFormat)return v(o,r,s,t);if("png"===r.dataFormat||"jpg"===r.dataFormat)return((e,t,o,r)=>new Promise((s,a)=>{let{rotationCenterX:i,rotationCenterY:d}=t;const u=new Image;u.onload=()=>{const t=l(),o=Math.min(2*t.x,u.width),a=Math.min(2*t.y,u.height);void 0===i&&(i=o/2),void 0===d&&(d=a/2);const p=new n.Raster(u);p.opacity=e,p.guide=!0,p.locked=!0;const h=o/2+(t.x-i),f=a/2+(t.y-d);p.position=new n.Point(h,f),p.remove(),"tint"===c.mode&&b(p,r),s(p)},u.onerror=()=>{a(new Error("could not load image"))},u.src=o}))(o,r,s,t);throw new Error("Unknown data format: ".concat(r.dataFormat))}));if(d===s){const e=(()=>{const e=new n.Layer;return e.locked=!0,e.guide=!0,e.data.sa_isOnionLayer=!0,e})();for(const o of t)e.addChild(o);h()}}catch(e){t.error(e)}i.activate()},w=e=>{c.enabled!==e&&(c.enabled=e,c.enabled?(0===c.next&&0===c.previous&&(c.previous=1,A.previous.value=c.previous),0===c.opacity&&(c.opacity=25,A.opacity.value=c.opacity),k()):p(),N.dataset.enabled=c.enabled)},x=e=>{0===c.previous&&0===c.next||0===c.opacity?w(!1):c.enabled?e?h():k():(c.previous>0||c.next>0)&&w(!0)},_=()=>{const e=document.createElement("div");return e.className="sa-onion-group",e},I=({useButtonTag:e}={})=>{const t=document.createElement(e?"button":"span");return t.className="sa-onion-button",t.setAttribute("role","button"),t},T=t=>{const o=document.createElement("img");return o.className="sa-onion-image",o.draggable=!1,o.dataset.image=t,o.loading="lazy",o.src=e.self.getResource("/"+t+".svg"),o},C=_();e.tab.displayNoneWhileDisabled(C,{display:"flex"});const N=I();N.dataset.enabled=c.enabled,N.addEventListener("click",()=>w(!c.enabled)),N.title=o("toggle"),N.appendChild(T("toggle"));const L=I();L.addEventListener("click",()=>D(!M())),L.title=o("settings"),L.appendChild(T("settings"));const S=document.createElement("div");S.className="sa-onion-settings-wrapper",C.append(S,N,L);const E=document.createElement("div");E.className="sa-onion-settings";const D=e=>{L.dataset.enabled=e,E.dataset.visible=e},M=()=>"true"===E.dataset.visible,A={};for(const e of["previous","next","opacity","opacityStep"]){const t=document.createElement("label");t.className="sa-onion-settings-line";const n=document.createElement("div");n.className="sa-onion-settings-label",n.textContent=o(e),t.appendChild(n);const r=_(),s=I(),a=document.createElement("div");a.style.width="20px",s.appendChild(a);const i=document.createElement("input");A[e]=i,i.className="sa-onion-settings-input",i.type="number",i.step="1",i.min="0",i.max="100",i.value=c[e],i.addEventListener("input",t=>{if(0===i.value.length)return c[e]=0,void x();let o=+i.value;o>+i.max?o=+i.max:o<0&&(o=0),i.value=o,c[e]=o,x()}),i.addEventListener("blur",()=>{i.value||(i.value="0")}),s.appendChild(i);const l=I();l.appendChild(T("decrement")),l.addEventListener("click",()=>{c[e]>0&&(c[e]--,i.value=c[e],x())});const d=I();d.appendChild(T("increment")),d.addEventListener("click",()=>{c[e]<+i.max&&(c[e]++,i.value=c[e],x())}),r.appendChild(l),r.appendChild(s),r.appendChild(d),t.appendChild(r),E.appendChild(t)}const O=document.createElement("div");O.className="sa-onion-settings-line";const j=document.createElement("div");j.className="sa-onion-settings-label",j.textContent=o("mode");const B=_();O.appendChild(j);const R=I({useButtonTag:!0});R.appendChild(document.createTextNode(o("merge"))),B.appendChild(R),R.addEventListener("click",e=>{c.mode="merge",z.dataset.enabled=!1,R.dataset.enabled=!0,x()}),R.dataset.enabled="merge"===c.mode;const z=I({useButtonTag:!0});z.appendChild(document.createTextNode(o("tint"))),B.appendChild(z),z.addEventListener("click",e=>{c.mode="tint",z.dataset.enabled=!0,R.dataset.enabled=!1,x()}),z.dataset.enabled="tint"===c.mode,O.appendChild(B),E.appendChild(O);const Z=document.createElement("div");Z.className="sa-onion-settings-line";const W=document.createElement("div");W.className="sa-onion-settings-label",W.textContent=o("layering");const P=_();Z.appendChild(W);const U=I({useButtonTag:!0});U.appendChild(document.createTextNode(o("front"))),P.appendChild(U),U.addEventListener("click",e=>{c.layering="front",G.dataset.enabled=!1,U.dataset.enabled=!0,x(!0)}),U.dataset.enabled="front"===c.layering;const G=I({useButtonTag:!0});G.appendChild(document.createTextNode(o("behind"))),P.appendChild(G),G.addEventListener("click",e=>{c.layering="behind",G.dataset.enabled=!0,U.dataset.enabled=!1,x(!0)}),G.dataset.enabled="behind"===c.layering,Z.appendChild(P),E.appendChild(Z);const H="http://www.w3.org/2000/svg",Y=document.createElementNS(H,"svg");Y.setAttribute("class","sa-onion-settings-tip"),Y.setAttribute("width","14"),Y.setAttribute("height","7");const V=document.createElementNS(H,"polygon");V.setAttribute("class","sa-onion-settings-polygon"),V.setAttribute("points","0,0 7,7, 14,0"),Y.appendChild(V),E.appendChild(Y);let F=null;e.self.addEventListener("disabled",()=>{D(!1),F=c.enabled,w(!1)}),e.self.addEventListener("reenabled",()=>{w(F)});(()=>{const e=n.Project.prototype.addLayer;n.Project.prototype.addLayer=function(t){const o=e.call(this,t);if(t.data.isBackgroundGuideLayer){let t;for(;t=a.shift();)e.call(this,t);h()}return o};const t=n.Project.prototype.importJSON;n.Project.prototype.importJSON=function(e){const o=t.call(this,e);return c.enabled&&k(),o};const o=n.Layer.prototype.remove;n.Layer.prototype.remove=function(){if(this.data.isBackgroundGuideLayer){for(const e of n.project.layers)e.data.sa_isOnionLayer&&a.push(e);for(const e of a)e.remove()}return o.call(this)}})(),(()=>{let e=!1;const t=s.constructor,o=t.prototype.importImage;t.prototype.importImage=function(...t){return e=!0,p(),o.call(this,...t)};const n=t.prototype.recalibrateSize;t.prototype.recalibrateSize=function(t){return n.call(this,()=>{t&&t(),e&&(e=!1,c.enabled&&k())})},s.recalibrateSize=t.prototype.recalibrateSize.bind(s),s.importImage=t.prototype.importImage.bind(s)})(),(async()=>{let t=!1;for(;;){const o=(await e.tab.waitForElement("[class^='paint-editor_canvas-controls']",{markAsSeen:!0,reduxEvents:["scratch-gui/navigation/ACTIVATE_TAB","scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE","scratch-gui/targets/UPDATE_TARGET_LIST"],reduxCondition:e=>1===e.scratchGui.editorTab.activeTabIndex&&!e.scratchGui.mode.isPlayerOnly})).querySelector("[class^='paint-editor_zoom-controls']");if(e.tab.appendToSharedSpace({space:"paintEditorZoomControls",element:C,order:1}),S.appendChild(E),!t){t=!0;const e=o.firstChild.className,n=o.firstChild.firstChild.className,r=o.firstChild.firstChild.firstChild.className;for(const t of document.querySelectorAll(".sa-onion-group"))t.className+=" "+e;for(const e of document.querySelectorAll(".sa-onion-button"))e.className+=" "+n;for(const e of document.querySelectorAll(".sa-onion-image"))e.className+=" "+r}c.enabled&&k()}})()},"style.css":o.n(n).a,"decrement.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggc3R5bGU9ImZpbGw6IzU3NWU3NTtzdHJva2Utd2lkdGg6LjczNDczNiIgZD0iTTMuMjUgMTEuMzU4aDE3LjUwMXYxLjI4NUgzLjI1eiIvPjwvc3ZnPg==","increment.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHdpZHRoPSIyNCI+PHBhdGggc3R5bGU9ImZpbGw6IzU3NWU3NTtzdHJva2Utd2lkdGg6LjczNDczNiIgZD0iTTMuMjUgMTEuMzU4aDE3LjUwMXYxLjI4NUgzLjI1eiIvPjxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDkwKSIgc3R5bGU9ImZpbGw6IzU3NWU3NTtzdHJva2Utd2lkdGg6LjczNDczNiIgZD0iTTMuMjUtMTIuNjQyaDE3LjUwMXYxLjI4NUgzLjI1eiIvPjwvc3ZnPg==","settings.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggc3R5bGU9Im9wYWNpdHk6Ljc1O2ZpbGw6bm9uZTtzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgZD0iTTU2IDE2djk2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMi4zNzYgLTIuMzc2KSBzY2FsZSguMjI0NjIpIi8+PHBhdGggc3R5bGU9Im9wYWNpdHk6LjU7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiBkPSJNNDAgMzJ2NjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjM3NiAtMi4zNzYpIHNjYWxlKC4yMjQ2MikiLz48cGF0aCBzdHlsZT0ib3BhY2l0eTouMjU7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiBkPSJNMjQgNDh2MzIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjM3NiAtMi4zNzYpIHNjYWxlKC4yMjQ2MikiLz48cGF0aCBzdHlsZT0ib3BhY2l0eTouNzU7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiBkPSJNNzIgMTZ2OTYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjM3NiAtMi4zNzYpIHNjYWxlKC4yMjQ2MikiLz48cGF0aCBzdHlsZT0ib3BhY2l0eTouNTtmaWxsOm5vbmU7c3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIGQ9Ik04OCAzMnY2NCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIuMzc2IC0yLjM3Nikgc2NhbGUoLjIyNDYyKSIvPjxwYXRoIHN0eWxlPSJvcGFjaXR5Oi4yNTtmaWxsOm5vbmU7c3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIGQ9Ik0xMDQgNDh2MzIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjM3NiAtMi4zNzYpIHNjYWxlKC4yMjQ2MikiLz48L3N2Zz4=","toggle.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGcgc3Ryb2tlLXdpZHRoPSIxLjIiIHN0cm9rZT0iIzAwMTAyNiI+PGcgc3R5bGU9Im9wYWNpdHk6LjU7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lIj48cGF0aCBzdHlsZT0ibWl4LWJsZW5kLW1vZGU6bm9ybWFsO2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MCIgZmlsbD0iI2JmYmZiZiIgZD0iTTY4LjQ1IDMyLjQ1N2MuMy0uMi44LS4xLjkuM2wyLjYgMTAuN3M2LjQgNC43IDguMyA4YzMuMiA1LjUgMy4zIDEwIDMuMyAxMHM3LjEgMi4xIDguMyA3LjhjMS4yIDUuNy0zLjIgMTYuNS0yMiAyMC4yLTE4LjggMy43LTMzLjktMS40LTQxLTEyLjgtNy4xLTExLjQgNC4xLTI1IDMuNS0yNC4ybC0yLjEtMTcuOWMtLjEtLjQuNC0uNy44LS41bDEyLjEgNy45czQuNS0xLjcgOS4yLTEuOWMyLjgtLjIgNS4yIDAgNy41LjR6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNC42NTIgLTQuNjUpIHNjYWxlKC4yMzI5KSIvPjxwYXRoIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTpub3JtYWw7ZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGZpbGw9Im5vbmUiIGQ9Ik0xMDEuNjUgNjIuOTU3Yy00LjcgMy44LTExLjkgMy45LTExLjkgMy45bTEwLjYgNy4zYy02LjMuNS0xMC4yLTEuNC0xMC4yLTEuNG0tNjguOC0xMC4xczguNiAyLjggMTIuMSA1LjltLjMgMy41Yy00LjMgMS43LTExLjcuNi0xMS43LjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00LjY1MiAtNC42NSkgc2NhbGUoLjIzMjkpIi8+PC9nPjxnIHN0eWxlPSJvcGFjaXR5Oi43NTtzdHJva2Utd2lkdGg6NDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmUiPjxwYXRoIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTpub3JtYWw7ZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowIiBmaWxsPSIjYmZiZmJmIiBkPSJNNjguNDUgMzIuNDU3Yy4zLS4yLjgtLjEuOS4zbDIuNiAxMC43czYuNCA0LjcgOC4zIDhjMy4yIDUuNSAzLjMgMTAgMy4zIDEwczcuMSAyLjEgOC4zIDcuOGMxLjIgNS43LTMuMiAxNi41LTIyIDIwLjItMTguOCAzLjctMzMuOS0xLjQtNDEtMTIuOC03LjEtMTEuNCA0LjEtMjUgMy41LTI0LjJsLTIuMS0xNy45Yy0uMS0uNC40LS43LjgtLjVsMTIuMSA3LjlzNC41LTEuNyA5LjItMS45YzIuOC0uMiA1LjIgMCA3LjUuNHoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjMyMyAtMi4zMjEpIHNjYWxlKC4yMzI5KSIvPjxwYXRoIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTpub3JtYWw7ZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGZpbGw9Im5vbmUiIGQ9Ik0xMDEuNjUgNjIuOTU3Yy00LjcgMy44LTExLjkgMy45LTExLjkgMy45bTEwLjYgNy4zYy02LjMuNS0xMC4yLTEuNC0xMC4yLTEuNG0tNjguOC0xMC4xczguNiAyLjggMTIuMSA1LjltLjMgMy41Yy00LjMgMS43LTExLjcuNi0xMS43LjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjMyMyAtMi4zMjEpIHNjYWxlKC4yMzI5KSIvPjwvZz48ZyBzdHlsZT0ic3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lIj48cGF0aCBzdHlsZT0ibWl4LWJsZW5kLW1vZGU6bm9ybWFsO2ZpbGw6I2ZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MCIgZmlsbD0iI2JmYmZiZiIgZD0iTTczLjQ1IDM3LjQ1N2MuMy0uMi44LS4xLjkuM2wyLjYgMTAuN3M2LjQgNC43IDguMyA4YzMuMiA1LjUgMy4zIDEwIDMuMyAxMHM3LjEgMi4xIDguMyA3LjhjMS4yIDUuNy0zLjIgMTYuNS0yMiAyMC4yLTE4LjggMy43LTMzLjktMS40LTQxLTEyLjgtNy4xLTExLjQgNC4xLTI1IDMuNS0yNC4ybC0yLjEtMTcuOWMtLjEtLjQuNC0uNy44LS41bDEyLjEgNy45czQuNS0xLjcgOS4yLTEuOWMyLjgtLjIgNS4yIDAgNy41LjR6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMS4xNTkgLTEuMTU3KSBzY2FsZSguMjMyOSkiLz48cGF0aCBzdHlsZT0ibWl4LWJsZW5kLW1vZGU6bm9ybWFsO2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBmaWxsPSJub25lIiBkPSJNMTA2LjY1IDY3Ljk1N2MtNC43IDMuOC0xMS45IDMuOS0xMS45IDMuOW0xMC42IDcuM2MtNi4zLjUtMTAuMi0xLjQtMTAuMi0xLjRtLTY4LjgtMTAuMXM4LjYgMi44IDEyLjEgNS45bS4zIDMuNWMtNC4zIDEuNy0xMS43LjYtMTEuNy42IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMS4xNTkgLTEuMTU3KSBzY2FsZSguMjMyOSkiLz48L2c+PC9nPjwvc3ZnPg=="}},1772:function(e,t,o){"use strict";o.r(t),o.d(t,"resources",(function(){return i}));class n{constructor(e,t,o,n){this.cls=e,this.procCode=t,this.labelID=o,this.y=n,this.lower=t.toLowerCase(),this.clones=null,this.eventName=null}matchesID(e){if(this.labelID===e)return!0;if(this.clones)for(const t of this.clones)if(t===e)return!0;return!1}}var r=o(1645),s=o(1643),a=o(1683);const i={"userscript.js":async function({addon:e,msg:t,console:o}){const a=await e.tab.traps.getBlockly();class i{constructor(e){this.utils=e,this.el=null,this.items=[],this.selected=null,this.carousel=new c(this.utils)}get workspace(){return a.getMainWorkspace()}createDom(){return this.el=document.createElement("ul"),this.el.className="sa-find-dropdown",this.el}inputKeyDown(e){return 38===e.keyCode?(this.navigateFilter(-1),void e.preventDefault()):40===e.keyCode?(this.navigateFilter(1),void e.preventDefault()):13===e.keyCode?(this.selected&&this.navigateFilter(1),void e.preventDefault()):void this.carousel.inputKeyDown(e)}navigateFilter(e){let t;for(this.selected&&"none"!==this.selected.style.display?t=-1===e?this.selected.previousSibling:this.selected.nextSibling:(t=this.items[0],e=1);t&&"none"===t.style.display;)t=-1===e?t.previousSibling:t.nextSibling;t&&(t.scrollIntoView({block:"nearest"}),this.onItemClick(t))}addItem(e){const t=document.createElement("li");t.innerText=e.procCode,t.data=e;const o={receive:"events",event:"events",define:"more",var:"data",VAR:"data",list:"data-lists",LIST:"data-lists",costume:"looks",sound:"sounds"};if("flag"===e.cls)t.className="sa-find-flag";else{const n=o[e.cls];t.className="sa-block-color sa-block-color-".concat(n)}return t.addEventListener("mousedown",e=>(this.onItemClick(t),e.preventDefault(),e.cancelBubble=!0,!1)),this.items.push(t),this.el.appendChild(t),t}onItemClick(t,o){this.selected&&this.selected!==t&&(this.selected.classList.remove("sel"),this.selected=null),this.selected!==t&&(t.classList.add("sel"),this.selected=t);let n=t.data.cls;if("costume"===n||"sound"===n){const o=document.querySelector("[class^=asset-panel_wrapper]");if(o){o[e.tab.traps.getInternalKey(o)].child.stateNode.props.onItemClick(t.data.y);o.firstChild.firstChild.children[t.data.y].scrollIntoView({behavior:"auto",block:"center",inline:"start"}),o.closest("div[class*=gui_flex-wrapper]").scrollTop=0}}else if("var"===n||"VAR"===n||"list"===n||"LIST"===n){let e=this.getVariableUsesById(t.data.labelID);this.carousel.build(t,e,o)}else if("define"===n){let e=this.getCallsToProcedureById(t.data.labelID);this.carousel.build(t,e,o)}else if("receive"===n){let e=this.getCallsToEventsByName(t.data.eventName);if(!o){const t=this.utils.getEditingTarget().id;for(const n of e)if(n.targetId===t){o=n;break}}this.carousel.build(t,e,o)}else if(t.data.clones){let e=[this.workspace.getBlockById(t.data.labelID)];for(const o of t.data.clones)e.push(this.workspace.getBlockById(o));this.carousel.build(t,e,o)}else this.utils.scrollBlockIntoView(t.data.labelID),this.carousel.remove()}getVariableUsesById(e){let t=[],o=this.workspace.getTopBlocks();for(const n of o){let o=n.getDescendants();for(const n of o){let o=n.getVarModels();if(o)for(const r of o)r.getId()===e&&t.push(n)}}return t}getCallsToProcedureById(e){let t=this.workspace.getBlockById(e),o=t.getChildren()[0].getProcCode(),n=[t],r=this.workspace.getTopBlocks();for(const e of r){let t=e.getDescendants();for(const e of t)"procedures_call"===e.type&&e.getProcCode()===o&&n.push(e)}return n}getCallsToEventsByName(o){let n=[];const s=e.tab.traps.vm.runtime.targets;for(const e of s){if(!e.isOriginal)continue;const s=e.blocks;if(s._blocks)for(const a of Object.keys(s._blocks)){const i=s._blocks[a];if("event_whenbroadcastreceived"===i.opcode&&i.fields.BROADCAST_OPTION.value===o)n.push(new r.a(e,i));else if("event_broadcast"===i.opcode||"event_broadcastandwait"===i.opcode){const a=i.inputs.BROADCAST_INPUT.block,c=s._blocks[a];if(c){let s;s="event_broadcast_menu"===c.opcode?c.fields.BROADCAST_OPTION.value:t("complex-broadcast"),s===o&&n.push(new r.a(e,i))}}}}return n}empty(){for(const e of this.items)this.el.contains(e)&&this.el.removeChild(e);this.items=[],this.selected=null}}class c{constructor(e){this.utils=e,this.el=null,this.count=null,this.blocks=[],this.idx=0}build(e,t,o){if(this.el&&this.el.parentNode===e)this.navRight();else{if(this.remove(),this.blocks=t,e.appendChild(this.createDom()),this.idx=0,o)for(const e of Object.keys(this.blocks)){if(this.blocks[e].id===o.id){this.idx=Number(e);break}}this.idxthis.navLeft(e)),this.count=this.el.appendChild(document.createElement("span")),this.count.innerText=this.blocks.length>0?this.idx+1+" / "+this.blocks.length:"0";const t=this.el.appendChild(document.createElement("span"));return t.className="sa-find-carousel-control",t.textContent="▶",t.addEventListener("mousedown",e=>this.navRight(e)),this.el}inputKeyDown(e){37===e.keyCode&&this.el&&this.blocks&&this.navLeft(e),39===e.keyCode&&this.el&&this.blocks&&this.navRight(e)}navLeft(e){return this.navSideways(e,-1)}navRight(e){return this.navSideways(e,1)}navSideways(e,t){this.blocks.length>0&&(this.idx=(this.idx+t+this.blocks.length)%this.blocks.length,this.count.innerText=this.idx+1+" / "+this.blocks.length,this.utils.scrollBlockIntoView(this.blocks[this.idx])),e&&(e.cancelBubble=!0,e.preventDefault())}remove(){this.el&&(this.el.remove(),this.blocks=[],this.idx=0)}}const l=new class{constructor(){this.utils=new s.a(e),this.prevValue="",this.findBarOuter=null,this.findWrapper=null,this.findInput=null,this.dropdownOut=null,this.dropdown=new i(this.utils),document.addEventListener("keydown",e=>this.eventKeyDown(e),!0)}get workspace(){return a.getMainWorkspace()}createDom(o){this.findBarOuter=document.createElement("div"),this.findBarOuter.className="sa-find-bar",e.tab.displayNoneWhileDisabled(this.findBarOuter,{display:"flex"}),o.appendChild(this.findBarOuter),this.findWrapper=this.findBarOuter.appendChild(document.createElement("span")),this.findWrapper.className="sa-find-wrapper",this.dropdownOut=this.findWrapper.appendChild(document.createElement("label")),this.dropdownOut.className="sa-find-dropdown-out",this.findInput=this.dropdownOut.appendChild(document.createElement("input")),this.findInput.className=e.tab.scratchClass("input_input-form",{others:"sa-find-input"}),this.findInput.id="sa-find-input",this.findInput.type="search",this.findInput.placeholder=t("find-placeholder"),this.findInput.autocomplete="off",this.dropdownOut.appendChild(this.dropdown.createDom()),this.bindEvents(),this.tabChanged()}bindEvents(){this.findInput.addEventListener("focus",()=>this.inputChange()),this.findInput.addEventListener("keydown",e=>this.inputKeyDown(e)),this.findInput.addEventListener("keyup",()=>this.inputChange()),this.findInput.addEventListener("focusout",()=>this.hideDropDown())}tabChanged(){if(!this.findBarOuter)return;const t=e.tab.redux.state.scratchGui.editorTab.activeTabIndex,o=0===t||1===t||2===t;this.findBarOuter.hidden=!o}inputChange(){this.showDropDown();let e=(this.findInput.value||"").toLowerCase();if(e===this.prevValue)return;this.prevValue=e,this.dropdown.blocks=null;let t=this.dropdown.items;for(const o of t){let t=o.data.procCode,n=o.data.lower.indexOf(e);if(n>=0){for(o.style.display="block";o.firstChild;)o.removeChild(o.firstChild);n>0&&o.appendChild(document.createTextNode(t.substring(0,n)));let r=document.createElement("b");r.appendChild(document.createTextNode(t.substr(n,e.length))),o.appendChild(r),n+e.length0?(this.findInput.value="",this.inputChange()):this.findInput.blur(),void e.preventDefault()):void 0;this.findInput.blur()}eventKeyDown(t){if(e.self.disabled||!this.findBarOuter)return;let o=t.ctrlKey||t.metaKey;if("f"===t.key&&o&&!t.shiftKey)return this.findInput.focus(),this.findInput.select(),t.cancelBubble=!0,t.preventDefault(),!0;if(37===t.keyCode&&o){if("INPUT"===document.activeElement.tagName)return;if(0===this.selectedTab)return this.utils.navigationHistory.goBack(),t.cancelBubble=!0,t.preventDefault(),!0}if(39===t.keyCode&&o){if("INPUT"===document.activeElement.tagName)return;if(0===this.selectedTab)return this.utils.navigationHistory.goForward(),t.cancelBubble=!0,t.preventDefault(),!0}}showDropDown(e,t){if(!e&&this.dropdownOut.classList.contains("visible"))return;this.prevValue=e?"":null,this.dropdownOut.classList.add("visible");let o=0===this.selectedTab?this.getScratchBlocks():1===this.selectedTab?this.getScratchCostumes():2===this.selectedTab?this.getScratchSounds():[];this.dropdown.empty();for(const n of o){let o=this.dropdown.addItem(n);e&&(n.matchesID(e)?this.dropdown.onItemClick(o,t):o.style.display="none")}this.utils.offsetX=this.dropdownOut.getBoundingClientRect().width+32,this.utils.offsetY=32}hideDropDown(){this.dropdownOut.classList.remove("visible")}get selectedTab(){return e.tab.redux.state.scratchGui.editorTab.activeTabIndex}getScratchBlocks(){let e=[],t={},o=this.workspace.getTopBlocks();function r(o,r,s){let a=s.id?s.id:s.getId?s.getId():null,i=t[r];if(i)return i.clones||(i.clones=[]),i.clones.push(a),i;let c=new n(o,r,a,0);return c.y=s.getRelativeToSurfaceXY?s.getRelativeToSurfaceXY().y:null,e.push(c),t[r]=c,c}function s(e){let t,o=e.inputList[0];for(const e of o.fieldRow)t=(t?t+" ":"")+e.getText();return t}for(const e of o)if("procedures_definition"!==e.type)if("event_whenflagclicked"!==e.type)if("event_whenbroadcastreceived"!==e.type)"event_when"!==e.type.substr(0,10)&&"control_start_as_clone"!==e.type||r("event",s(e),e);else{let t=e.inputList[0].fieldRow.find(e=>"BROADCAST_OPTION"===e.name).getText();r("receive","event "+t,e).eventName=t}else r("flag",s(e),e);else{const t=e.getChildren()[0].getProcCode();if(!t)continue;const o=e.inputList.findIndex(e=>e.fieldRow.length>0);if(-1===o)continue;const n=e.inputList[o].fieldRow[0].getText();r("define",0===o?"".concat(n," ").concat(t):"".concat(t," ").concat(n),e)}let a=this.workspace.getVariableMap(),i=a.getVariablesOfType("");for(const e of i)r(e.isLocal?"var":"VAR",(e.isLocal?"var ":"VAR ")+e.name,e);let c=a.getVariablesOfType("list");for(const e of c)r(e.isLocal?"list":"LIST",(e.isLocal?"list ":"LIST ")+e.name,e);const l=this.getCallsToEvents();for(const e of l)r("receive","event "+e.eventName,e.block).eventName=e.eventName;const d={flag:0,receive:1,event:2,define:3,var:4,VAR:5,list:6,LIST:7};return e.sort((e,t)=>{let o=d[e.cls]-d[t.cls];return 0!==o?o:e.lowert.lower?1:e.y-t.y}),e}getScratchCostumes(){let e=this.utils.getEditingTarget().getCostumes(),t=[],o=0;for(const r of e){let e=new n("costume",r.name,r.assetId,o);t.push(e),o++}return t}getScratchSounds(){let e=this.utils.getEditingTarget().getSounds(),t=[],o=0;for(const r of e){let e=new n("sound",r.name,r.assetId,o);t.push(e),o++}return t}getCallsToEvents(){const e=[],o=new Set;for(const n of this.workspace.getAllBlocks()){if("event_broadcast"!==n.type&&"event_broadcastandwait"!==n.type)continue;const r=n.getChildren()[0];if(!r)continue;let s="";s="event_broadcast_menu"===r.type?r.inputList[0].fieldRow[0].getText():t("complex-broadcast"),o.has(s)||(o.add(s),e.push({eventName:s,block:n}))}return e}},d=a.Gesture.prototype.doBlockClick_;for(a.Gesture.prototype.doBlockClick_=function(){if(!e.self.disabled&&(1===this.mostRecentEvent_.button||this.mostRecentEvent_.shiftKey)){let e=this.startBlock_;for(;e;e=e.getSurroundParent()){if("procedures_definition"===e.type||!this.jumpToDef&&"procedures_call"===e.type){let t=e.id?e.id:e.getId?e.getId():null;return l.findInput.focus(),void l.showDropDown(t)}if("data_variable"===e.type||"data_changevariableby"===e.type||"data_setvariableto"===e.type){let t=e.getVars()[0];return l.findInput.focus(),l.showDropDown(t,e),void(l.selVarID=t)}if("event_whenbroadcastreceived"===e.type||"event_broadcastandwait"===e.type||"event_broadcast"===e.type){let t=e.id;return l.findInput.focus(),l.showDropDown(t,e),void(l.selVarID=t)}}}d.call(this)},e.tab.redux.initialize(),e.tab.redux.addEventListener("statechanged",e=>{"scratch-gui/navigation/ACTIVATE_TAB"===e.detail.action.type&&l.tabChanged()});;){const t=await e.tab.waitForElement("ul[class*=gui_tab-list_]",{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"],reduxCondition:e=>!e.scratchGui.mode.isPlayerOnly});l.createDom(t)}},"userstyle.css":o.n(a).a}},1773:function(e,t,o){"use strict";o.r(t),o.d(t,"resources",(function(){return c}));var n=o(1640),r=o(1641),s=o(1642),a=async({addon:e,console:t,msg:o})=>{const a=new r.a(250),i=(t,o)=>{if(t=Object(n.b)(t),!e.tab.redux.state||!e.tab.redux.state.scratchGui)return;const r=({detail:t})=>{"scratch-gui/color-picker/DEACTIVATE_COLOR_PICKER"===t.action.type&&(e.tab.redux.removeEventListener("statechanged",r),setTimeout(()=>{document.body.classList.remove("sa-hide-eye-dropper-background")},50))},s=({detail:o})=>{"scratch-gui/color-picker/ACTIVATE_COLOR_PICKER"===o.action.type&&(e.tab.redux.removeEventListener("statechanged",s),e.tab.redux.addEventListener("statechanged",r),setTimeout(()=>{e.tab.redux.dispatch({type:"scratch-gui/color-picker/DEACTIVATE_COLOR_PICKER",color:t})},50))};e.tab.redux.addEventListener("statechanged",s),document.body.classList.add("sa-hide-eye-dropper-background"),o.click()},c=()=>{const t=document.querySelector("button.scratchEyedropper");a.abort(!1),e.tab.redux.initialize();const r=(e=>{const{children:t}=e.parentElement,o=t[1].getAttribute("aria-valuenow"),n=t[3].getAttribute("aria-valuenow"),r=t[5].getAttribute("aria-valuenow"),a=Number(r)/255;return Object(s.a)("hsv(".concat(o,", ").concat(n,", ").concat(a||0,")")).toHexString()})(t),c=Object.assign(document.createElement("div"),{className:"sa-color-picker sa-color-picker-code"});e.tab.displayNoneWhileDisabled(c,{display:"flex"});const l=Object.assign(document.createElement("input"),{className:"sa-color-picker-color sa-color-picker-code-color",type:"color",value:r||"#000000"}),d=Object.assign(document.createElement("input"),{className:e.tab.scratchClass("input_input-form",{others:"sa-color-picker-text sa-color-picker-code-text"}),type:"text",pattern:"^#?([0-9a-fA-F]{3}){1,2}$",placeholder:o("hex"),value:r||""});l.addEventListener("input",()=>a.limit(()=>i(d.value=l.value,t))),d.addEventListener("change",()=>{const{value:e}=d;Object(n.a)().test(e)&&i(l.value=Object(n.b)(e),t)}),c.appendChild(l),c.appendChild(d),t.parentElement.insertBefore(c,t)},l=await e.tab.traps.getBlockly(),d=l.FieldColourSlider.prototype.showEditor_;l.FieldColourSlider.prototype.showEditor_=function(...e){const t=d.call(this,...e);return c(),t}},i=o(1711);const c={"userscript.js":async e=>{a(e)},"style.css":o.n(i).a}},1775:function(e,t,o){"use strict";function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function r(e){for(var t=1;t{const t=e.indexOf("//");return-1===t||0===t?null:e.substr(0,t)},u=e=>{const t=e.indexOf("//");return-1===t||0===t?e:e.substr(t+"//".length)},p=(e,t)=>{const o=u(e);return t?"".concat(t).concat("//").concat(o):o},h=e=>!e.includes("//")&&!e.endsWith("/"),f=["_mouse_","_stage_","_edge_","_myself_","_random_"],m=e=>""===e?"2":f.includes(e)?"".concat(e,"2"):e,g=e=>{const t=e.closest("[class*='sprite-selector_sprite-selector']");if(t)return t[s].child.sibling.child.stateNode;const o=e.closest('[class*="asset-panel_wrapper"]');if(o)return o[s].child.child.stateNode;throw new Error("cannot find SortableHOC")},b=(e,t,o)=>Math.min(Math.max(e,t),o),y=e=>e&&e.name&&"object"==typeof e.name?e.name:null,v={assetId:"&__sa_folders_folder",encodeDataURI:()=>e.self.getResource("/folder.svg")},k="data:image/svg+xml;base64,".concat(btoa('\n\n \n \n \n'));let w=null;const x=Object.create(null),_=e=>{const t=e=>{const t=(e=>{let t=0;for(let o=0;o>>15,1|e),(((e^=e+Math.imul(e^e>>>7,61|e))^e>>>14)>>>0)/4294967296});var n;return o(),o(),o(),o(),o()};if(!x[e]){w||(w=document.createElement("style"),document.head.appendChild(w));const o=360*t(e),n="hsla(".concat(o,"deg, 100%, 85%, 0.5)"),r=Object.keys(x).length,s="sa-folders-color-".concat(r);x[e]=s,w.textContent+=".".concat(s,"{background-color:").concat(n," !important;}"),w.textContent+=".".concat(s,'[class*="sprite-selector_raised"]:not([class*="sa-folders-folder"]){background-color:hsla(').concat(o,"deg, 100%, 77%, 1) !important;}")}return x[e]},I=e=>{const t=Object.create(null),o=[];for(const n of e){const e=n.getName?n.getName():n.name,r=d(e);"string"==typeof r?(t[r]||(t[r]=[],o.push(t[r])),t[r].push(n)):o.push(n)}const n=o.flat();for(let t=0;t{const{items:e,changed:t}=I(n.runtime.targets);t&&(n.runtime.targets=e,n.emitTargetsUpdate())},C=(e=n.editingTarget)=>{const{items:t,changed:o}=I(e.sprite.costumes);o&&(e.sprite.costumes=t,n.emitTargetsUpdate())},N=(e=n.editingTarget)=>{const{items:t,changed:o}=I(e.sprite.sounds);o&&(e.sprite.sounds=t,n.emitTargetsUpdate())},L=e=>{const t=e.constructor;if(!Array.isArray(e.props.items)||"string"!=typeof e.props.selectedId&&"number"!=typeof e.props.selectedItemIndex||void 0===e.containerBox||void 0!==t.prototype.componentDidMount||void 0!==t.prototype.componentDidUpdate||"function"!=typeof t.prototype.handleAddSortable||"function"!=typeof t.prototype.handleRemoveSortable||"function"!=typeof t.prototype.setRef)throw new Error("Can not comprehend SortableHOC")};class S{constructor(){this.cache=new Map,this.usedThisTick=new Set}has(e){return this.cache.has(e)}get(e){return this.usedThisTick.add(e),this.cache.get(e)}set(e,t){this.usedThisTick.add(e),this.cache.set(e,t)}startTick(){this.usedThisTick.clear()}endTick(){for(const e of Array.from(this.cache.keys()))this.usedThisTick.has(e)||this.cache.delete(e)}clear(){this.usedThisTick.clear(),this.cache.clear()}}const E=(e,t)=>{const o=new S,n=new S,s=new S,u=[[0,0],[40,0],[0,40],[40,40]],p=e=>{let t='data:image/svg+xml;,');for(let o=0;o'))}return t+="",t},h=e=>{let t="sa_folder&&";for(let o=0;o{if(1===t){return e.props.items.find(t=>t.id===e.props.selectedId)}if(2===t){return e.props.items[e.props.selectedItemIndex]}return null};e.prototype.saInitialSetup=function(){o.clear(),n.clear(),s.clear();const e=[],r=f(this);if(r&&!r.isStage){const o=d(r.name);e.push(o),1===t?a=o:2===t&&(i=o)}this.setState({folders:e})},e.prototype.componentDidMount=function(){const e=f(this);if(e){const o=d(e.name);1===t?a=o:2===t&&(i=o)}this.saInitialSetup()},e.prototype.componentDidUpdate=function(e,o){const n=f(this);if(n){const o=d(n.name),r=this.state.folders.includes(o)?o:null;let s;1===t?a=r:2===t&&(i=r),s=this.props.selectedId?this.props.selectedId!==e.selectedId:this.props.items[this.props.selectedItemIndex]&&e.items[e.selectedItemIndex]&&this.props.items[this.props.selectedItemIndex].name!==e.items[e.selectedItemIndex].name,s&&(n.isStage||"string"!=typeof o||this.state.folders.includes(o)||this.setState(e=>({folders:[...e.folders,o]})))}};const m=e.prototype.render;e.prototype.render=function(){const e=this.props;this.props=r(r({},this.props),((e,r)=>{const a=e=>{const t=e.name;let n,r;o.has(t)?(n=o.get(t),r=n.name):(r={toString:()=>"_".concat(e.name)},n={},o.set(t,n));const s=d(e.name);return Object.assign(n,e),r.realName=e.name,r.realIndex=u,r.inFolder=s,n.name=r,{newItem:n,itemData:r}};o.startTick(),n.startTick(),s.startTick();const i=new Map,c=[],l={items:c};let u=0;for(;uk}},_={toString:()=>k},n.set(y,x)),_.folder=f,_.folderOpen=o,x.items=m,x.name=_,o?I=v:s.has(w)?I=s.get(w):(I={assetId:w,encodeDataURI:()=>p(m)},s.set(w,I)),1===t?(x.costume||(x.costume={}),x.costume.asset=I,x.id||(x.id={}),x.id.sa_folder_items=m,x.id.toString=()=>k):(x.asset=I,x.dragPayload||(x.dragPayload={}),x.dragPayload.sa_folder_items=m),c.push(x),o)for(const e of m)c.push(e)}u++}return o.endTick(),n.endTick(),s.endTick(),l})(this.state&&this.state.folders||[],this.props)),1===t?c=this.props.items:2===t&&(l=this.props.items);const a=m.call(this);return this.props=e,a}},D=(e,t)=>{const o=g(e.ref);return(o.state&&o.state.folders||[]).includes(t)},M=(e,t,o)=>{g(e.ref).setState(e=>{let n=e&&e.folders||[];return n=n.filter(e=>e!==t),o?{folders:[...n,t]}:{folders:n}})};e.tab.createEditorContextMenu((t,r)=>{if("sprite"!==t&&"costume"!==t&&"sound"!==t)return;const s=r.target[e.tab.traps.getInternalKey(r.target)].return.return.return.stateNode,a=y(s.props);if(a){if("string"==typeof a.folder){r.target.setAttribute("sa-folders-context-type","folder");const t=e=>{const t=D(s,a.folder);if(M(s,a.folder,!1),t&&"string"==typeof e&&M(s,e,!0),"SPRITE"===s.props.dragType){for(const t of n.runtime.targets)t.isOriginal&&d(t.getName())===a.folder&&n.renameSprite(t.id,m(p(t.getName(),e)));n.emitWorkspaceUpdate(),T()}else if("COSTUME"===s.props.dragType){for(let t=0;t{let n=await e.tab.prompt(o("rename-folder-prompt-title"),o("rename-folder-prompt"),a.folder,{useEditorClasses:!0});null!==n&&(h(n)?(n||(n=null),t(n)):alert(o("name-not-allowed")))},c=()=>{t(null)};return[{className:"sa-folders-rename-folder",label:o("rename-folder"),callback:i,position:"assetContextMenuAfterDelete",order:10},{className:"sa-folders-remove-folder",label:o("remove-folder"),callback:c,position:"assetContextMenuAfterDelete",order:11}]}{r.target.setAttribute("sa-folders-context-type","asset");const t=e=>{if("SPRITE"===s.props.dragType){const t=n.runtime.getTargetById(s.props.id);n.renameSprite(s.props.id,m(p(t.getName(),e))),T(),n.emitWorkspaceUpdate()}else if("COSTUME"===s.props.dragType){const t=y(s.props).realIndex,o=n.editingTarget.sprite.costumes[t];n.renameCostume(n.editingTarget.sprite.costumes.indexOf(o),p(o.name,e)),C()}else if("SOUND"===s.props.dragType){const t=y(s.props).realIndex,o=n.editingTarget.sprite.sounds[t];n.renameSound(n.editingTarget.sprite.sounds.indexOf(o),p(o.name,e)),N()}},i=async()=>{const n=await e.tab.prompt(o("name-prompt-title"),o("name-prompt"),u(a.realName),{useEditorClasses:!0});null!==n&&(h(n)?t(n):alert(o("name-not-allowed")))},d=[{border:!0,className:"sa-folders-create-folder",label:o("create-folder"),callback:i,position:"assetContextMenuAfterDelete",order:13}],f=a.inFolder;return"string"==typeof f&&d.push({className:"sa-folders-remove-from-folder",label:o("remove-from-folder"),callback:()=>t(null),position:"assetContextMenuAfterDelete",order:14}),d.concat((e=>{const t=new Set;let o;o="SPRITE"===e.props.dragType?c:l;for(const e of o){const o=y(e);"string"==typeof o.folder&&t.add(o.folder)}return Array.from(t)})(s).filter(e=>e!==f).map((e,n)=>({className:"sa-folders-add-to-folder",label:o("add-to-folder",{folder:e}),callback:()=>t(e),position:"assetContextMenuAfterDelete",order:20+n})))}}});const A=t=>{for(const e of["handleDelete","handleDuplicate","handleExport"]){const o=t.prototype[e];t.prototype[e]=function(...e){if("number"==typeof this.props.id){const t=y(this.props);if(t){const n=this.props;this.props=r(r({},n),{},{id:t.realIndex});const s=o.call(this,...e);return this.props=n,s}}return o.call(this,...e)}}const n=t.prototype.handleDragEnd;t.prototype.handleDragEnd=function(...t){const o=y(this.props);if(o&&"number"==typeof o.realIndex&&this.props.dragging){const t=this.props.index,n=o.realIndex;if(t!==n){const o=e.tab.redux.state.scratchGui.assetDrag.currentOffset,r=g(this.ref);o&&r&&null===r.getMouseOverIndex()&&(this.props.index=n,this.handleDrag(o),this.props.index=t)}}return n.call(this,...t)};const s=t.prototype.handleClick;t.prototype.handleClick=function(...e){const t=e[0];if(t&&!this.noClick){const e=y(this.props);if(e){if("string"==typeof e.folder)return t.preventDefault(),void M(this,e.folder,!D(this,e.folder));if("number"==typeof this.props.number&&"number"==typeof e.realIndex)return t.preventDefault(),void(this.props.onClick&&this.props.onClick(e.realIndex))}}return s.call(this,...e)};const a=t.prototype.render;t.prototype.render=function(){const e=y(this.props);if(e){const t=this.props;this.props=r({},this.props),"string"==typeof e.realName&&(this.props.name=u(e.realName)),"number"==typeof this.props.number&&"number"==typeof e.realIndex&&(this.props.number=e.realIndex+1),"string"==typeof e.folder&&(this.props.name=e.folder,e.folderOpen?this.props.details=o("open-folder"):this.props.details=o("closed-folder"),this.props.selected=!1,this.props.number=null,this.props.className+=" ".concat(_(e.folder)," sa-folders-folder")),"string"==typeof e.inFolder&&(this.props.className+=" ".concat(_(e.inFolder)));const n=a.call(this);return this.props=t,n}return a.call(this)}},O=()=>{const e=n.runtime.targets[0].constructor,o=n.installTargets;n.installTargets=function(...e){if(null!==a){const t=e[0],o=e[2];if(Array.isArray(t)&&!o)for(const e of t)e.sprite&&(e.sprite.name=p(e.sprite.name,a))}return o.call(this,...e).then(e=>(T(),e))};const r=e.prototype.addCostume;e.prototype.addCostume=function(...e){if(null!==i){const t=e[0];t&&"string"!=typeof d(t.name)&&(t.name=p(t.name,i))}const t=r.call(this,...e);return C(this),t};const s=e.prototype.addSound;e.prototype.addSound=function(...e){if(null!==i){const t=e[0];t&&"string"!=typeof d(t.name)&&(t.name=p(t.name,i))}const t=s.call(this,...e);return N(this),t};const u=({guiItems:e,getAll:o,set:n,rename:r,getVMItemFromGUIItem:s,zeroIndexed:a,onFolderChanged:i},c,l)=>{if((c=b(c,a?0:1,a?e.length-1:e.length))===(l=b(l,a?0:1,a?e.length-1:e.length)))return!1;let d=o();const u=o(),h=e[c-(a?0:1)],f=e[l-(a?0:1)],m=y(h),g=y(f);if(!m||!g)return t.warn("should never happen"),!1;const v=("string"==typeof m.folder?h.items:[h]).map(e=>s(e,d)).filter(e=>e);if("number"==typeof g.realIndex){const e=s(f,d);if(!e||v.includes(e))return!1}let k,w=null;if(d=d.filter(e=>!v.includes(e)),l===(a?0:1))k=a?0:1;else if(l===e.length-(a?1:0))k=d.length;else if("number"==typeof g.realIndex){w="string"==typeof g.inFolder?g.inFolder:null;let e=s(f,d);if(!e)return t.warn("should never happen"),!1;k=d.indexOf(e),l>c&&k++}else{if("string"!=typeof g.folder)return t.warn("should never happen"),!1;{let e,o=0;ld.length)return t.warn("should never happen"),!1;if(d.splice(k,0,...v),n(d),"string"!=typeof m.folder&&m.inFolder!==w){for(const e of v){const t=e.getName?e.getName():e.name;r(e,p(t,w))}i&&i()}return!0}};n.constructor.prototype.reorderTarget=function(e,t){return u({getAll:()=>this.runtime.targets,set:e=>{this.runtime.targets=e,this.emitTargetsUpdate()},rename:(e,t)=>{this.renameSprite(e.id,m(t))},getVMItemFromGUIItem:(e,t)=>t.find(t=>t.id===e.id),onFolderChanged:()=>{this.emitWorkspaceUpdate()},guiItems:c,zeroIndexed:!1},e,t)},e.prototype.reorderCostume=function(e,t){return u({getAll:()=>this.sprite.costumes,set:e=>{this.sprite.costumes=e},rename:(e,t)=>{this.renameCostume(this.sprite.costumes.indexOf(e),t)},getVMItemFromGUIItem:(e,t)=>{const o=y(e);return t.find(e=>e.name===o.realName)},guiItems:l,zeroIndexed:!0},e,t)},e.prototype.reorderSound=function(e,t){return u({getAll:()=>this.sprite.sounds,set:e=>{this.sprite.sounds=e},rename:(e,t)=>{this.renameSound(this.sprite.sounds.indexOf(e),t)},getVMItemFromGUIItem:(e,t)=>{const o=y(e);return t.find(e=>e.name===o.realName)},guiItems:l,zeroIndexed:!0},e,t)};const h=n.shareSoundToTarget;n.shareSoundToTarget=function(...e){return this.runtime.getTargetById(e[1])?h.call(this,...e):Promise.reject(new Error("Dropping sound into folder is not supported"))}},j=t=>{const n=t.constructor;n.prototype.sa_loadNextItem=function(){if(!this.sa_queuedItems)return;const e=this.sa_queuedItems.pop();if(e){let t,o;e.dragPayload?(o=e.url?"SOUND":"COSTUME",t=e.dragPayload):e.id&&(o="SPRITE",t=e.id),o&&t&&r.call(this,{dragType:o,payload:t})}},n.prototype.componentDidUpdate=function(e,t){this.state.loading||!t.loading||this.state.error||this.sa_loadNextItem()};const r=n.prototype.handleDrop;n.prototype.handleDrop=function(...t){const n=t[0],s=n&&n.payload&&n.payload.sa_folder_items;if(!Array.isArray(s))return r.call(this,...t);e.tab.confirm("",o("confirm-backpack-folder"),{useEditorClasses:!0}).then(e=>{e&&(this.sa_queuedItems=s,this.sa_loadNextItem())})},t.handleDrop=n.prototype.handleDrop.bind(t)};{const e=t=>{t.target.closest('[class*="backpack_backpack-header_"]')&&setTimeout(()=>{const t=document.querySelector("[class^='backpack_backpack-list_']");if(!t)return;document.removeEventListener("click",e);const o=(e=>{const t=e.closest('[class*="gui_editor-wrapper"]');if(!t)throw new Error("cannot find Backpack");return t[s].child.sibling.child.child.stateNode})(t);(e=>{const t=e.constructor;if("function"!=typeof t.prototype.handleDrop||void 0!==t.prototype.componentDidUpdate)throw new Error("Can not comprehend Backpack")})(o),j(o)})};document.addEventListener("click",e,!0)}{const t=await e.tab.waitForElement("[class^='sprite-selector_sprite-wrapper']",{reduxCondition:e=>!e.scratchGui.mode.isPlayerOnly});n=e.tab.traps.vm,s=Object.keys(t).find(e=>e.startsWith("__reactInternalInstance$"));const o=g(t),r=t[s].child.child.child.stateNode;L(o),(e=>{const t=e.constructor;if("object"!=typeof e.props.asset||"string"!=typeof e.props.name||"string"!=typeof e.props.dragType||"function"!=typeof t.prototype.handleClick||"function"!=typeof t.prototype.setRef||"function"!=typeof t.prototype.handleDrag||"function"!=typeof t.prototype.handleDragEnd||"function"!=typeof t.prototype.handleDelete||"function"!=typeof t.prototype.handleDuplicate||"function"!=typeof t.prototype.handleExport)throw new Error("Can not comprehend SpriteSelectorItem")})(r),(e=>{const t=e.runtime.targets[0];if("function"!=typeof e.installTargets||"function"!=typeof e.reorderTarget||"function"!=typeof t.reorderCostume||"function"!=typeof t.reorderSound||"function"!=typeof t.addCostume||"function"!=typeof t.addSound)throw new Error("Can not comprehend VM")})(n),E(o.constructor,1),A(r.constructor),o.saInitialSetup(),O()}{const t=await e.tab.waitForElement("[class*='selector_list-item']",{reduxCondition:e=>0!==e.scratchGui.editorTab.activeTabIndex&&!e.scratchGui.mode.isPlayerOnly}),o=g(t);L(o),E(o.constructor,2),o.saInitialSetup()}},"style.css":o.n(a).a,"folder.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHdpZHRoPSIyNCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJoLThsLTItMnoiLz48L3N2Zz4="}},1780:function(e,t,o){"use strict";o.r(t),o.d(t,"resources",(function(){return r}));var n=o(1684);const r={"userscript.js":async function({addon:e,msg:t,console:o}){const n=await e.tab.traps.getBlockly();let r={x:0,y:0};const s=new class{constructor(){this.floatBar=null,this.floatInput=null,this.dropdownOut=null,this.dropdown=null,this.prevVal="",this.DROPDOWN_BLOCK_LIST_MAX_ROWS=25,this.createDom()}get workspace(){return n.getMainWorkspace()}get selectedTab(){return e.tab.redux.state.scratchGui.editorTab.activeTabIndex}createDom(){this.floatBar=document.body.appendChild(document.createElement("div")),this.floatBar.className="sa-float-bar",this.floatBar.dir=e.tab.direction,this.floatBar.style.display="none",this.dropdownOut=this.floatBar.appendChild(document.createElement("div")),this.dropdownOut.className="sa-float-bar-dropdown-out",this.floatInput=this.dropdownOut.appendChild(document.createElement("input")),this.floatInput.placeholder=t("start-typing"),this.floatInput.className="sa-float-bar-input",this.floatInput.className=e.tab.scratchClass("input_input-form",{others:"sa-float-bar-input"}),this.dropdown=this.dropdownOut.appendChild(document.createElement("ul")),this.dropdown.className="sa-float-bar-dropdown",this.floatInput.addEventListener("keyup",()=>this.inputChange()),this.floatInput.addEventListener("focus",()=>this.inputChange()),this.floatInput.addEventListener("keydown",(...e)=>this.inputKeyDown(...e)),this.floatInput.addEventListener("focusout",()=>this.hide()),this.dropdownOut.addEventListener("mousedown",(...e)=>this.onClick(...e)),document.addEventListener("keydown",t=>{if("editor"!==e.tab.editorMode)return;let o=t.ctrlKey||t.metaKey;return" "===t.key&&o?(this.show(t),t.cancelBubble=!0,t.preventDefault(),!0):void 0})}show(e){var t,o;0===this.selectedTab&&(e.cancelBubble=!0,e.preventDefault(),this.buildFilterList(),this.floatBar.style.left=(null!==(t=e.clientX)&&void 0!==t?t:r.x)+16+"px",this.floatBar.style.top=(null!==(o=e.clientY)&&void 0!==o?o:r.y)-8+"px",this.floatBar.style.display="",this.floatInput.value="",this.floatInput.focus())}onClick(e){e.cancelBubble=!0,e.target.closest("input")||e.preventDefault();let t=e&&e.target;"B"===t.tagName&&(t=t.parentNode),e instanceof MouseEvent&&"LI"!==t.tagName||(t&&t.data||(t=this.dropdown.querySelector(".sel")),t&&(this.createDraggingBlock(t,e),e.shiftKey&&(this.floatBar.style.display="",this.floatInput.focus())))}createDraggingBlock(e,t){let o=e.data.option;if(o.option){let e=o.dom.querySelector("field[name="+o.pickField+"]");e.getAttribute("id")?(e.innerText=o.option[0],e.setAttribute("id",o.option[1]+"-"+o.option[0])):e.innerText=o.option[1],"other scripts in sprite"===o.option[1]&&o.dom.querySelector("mutation").setAttribute("hasnext","true")}this.workspace.setResizesEnabled(!1),n.Events.disable();try{var s=n.Xml.domToBlock(o.dom,this.workspace);if(n.scratchBlocksUtils.changeObscuredShadowIds(s),!s.getSvgRoot())throw new Error("newBlock is not rendered.");let e=s.svgPath_.getBoundingClientRect(),t=Math.floor((r.x-(e.left+e.right)/2)/this.workspace.scale),a=Math.floor((r.y-(e.top+e.bottom)/2)/this.workspace.scale);s.moveBy(t,a)}finally{n.Events.enable()}n.Events.isEnabled()&&n.Events.fire(new n.Events.BlockCreate(s));var a={clientX:r.x,clientY:r.y,type:"mousedown",preventDefault:function(){t.preventDefault()},stopPropagation:function(){t.stopPropagation()},target:e};this.workspace.startDragWithFakeEvent(a,s)}inputChange(){let e=(this.floatInput.value||"").toLowerCase();if(e===this.prevVal)return;this.prevVal=e;let t=this.dropdown.parentNode;this.dropdown.remove();let o=0,n=e.split(" "),r=this.dropdown.getElementsByTagName("li");for(const e of r){const t=e.data.text,r=e.data.lower;let s=0,a=[];for(let e=0;er&&(e.appendChild(document.createTextNode(t.substring(r,s))),r=s);let i=document.createElement("b"),c=n[o].length;i.appendChild(document.createTextNode(t.substr(r,c))),e.appendChild(i),r+=c}r0?(this.floatInput.value="",this.inputChange(e)):this.hide(),void e.preventDefault()):void 0}buildFilterList(){let t=[],o=this.workspace.getToolbox();if(!o)return;let r=o.flyout_.getWorkspace().getTopBlocks(),s=n.Xml.workspaceToDom(o.flyout_.getWorkspace());const a={};for(const e of s.children)if("BLOCK"===e.tagName){a[e.getAttribute("id")]=e}for(const e of r)this.getBlockText(e,t,a);t.sort((e,t)=>e.desc.lengtht.desc.length?1:e.desc.localeCompare(t.desc));let i=0;for(;this.dropdown.firstChild;)this.dropdown.removeChild(this.dropdown.firstChild);for(const o of t){const t=document.createElement("li"),n=o.desc;let r=this.getEdgeTypeClass(o.block);i++,t.innerText=n,t.data={text:n,lower:" "+n.toLowerCase(),option:o};const s={sensing_of:"sensing",event_whenbackdropswitchesto:"events"};let a=o.block.getCategory()||s[o.block.type]||"null";o.block.isScratchExtension?a="pen":e.tab.getCustomBlock(o.block.procCode_)&&(a="addon-custom-block"),t.className="sa-block-color sa-block-color-"+a+" sa-"+r,i>this.DROPDOWN_BLOCK_LIST_MAX_ROWS&&(t.style.display="none"),this.dropdown.appendChild(t)}this.dropdownOut.classList.add("vis")}navigateFloatFilter(e){let t,o=this.dropdown.getElementsByClassName("sel");for(o.length>0&&"none"!==o[0].style.display?t=-1===e?o[0].previousSibling:o[o.length-1].nextSibling:(t=this.dropdown.children[0],e=1);t&&"none"===t.style.display;)t=-1===e?t.previousSibling:t.nextSibling;if(t){for(const e of o)e.classList.remove("sel");t.classList.add("sel")}}getBlockText(e,t,o){let n,r,s,a=o[e.id];const i=e=>{for(const t of e.inputList){let e=t.fieldRow;for(const t of e){let e;r||"blocklyText blocklyDropdownText"!==t.className_?e=t.getText():(r=t.getOptions(),s=t.name,e=r&&r.length>0?"^^":t.getText()),n=(n?n+" ":"")+e}if(t.connection){let e=t.connection.targetBlock();e&&i(e)}}};if(i(e),r)for(const o of r){let r=o[1];"string"==typeof r&&"DELETE_VARIABLE_ID"!==r&&"RENAME_VARIABLE_ID"!==r&&"NEW_BROADCAST_MESSAGE_ID"!==r&&"NEW_BROADCAST_MESSAGE_ID"!==r&&"createGlobalVariable"!==r&&"createLocalVariable"!==r&&"createGlobalList"!==r&&"createLocalList"!==r&&"createBroadcast"!==r&&"RENAME_BROADCAST_MESSAGE_ID"!==r&&t.push({desc:n.replace("^^",o[0]),block:e,dom:a,option:o,pickField:s})}else t.push({desc:n,block:e,dom:a});return n}getEdgeTypeClass(e){switch(e.edgeShape_){case 1:return"boolean";case 2:return"reporter";default:return e.startHat_?"hat":"block"}}hide(){this.floatBar.style.display="none"}},a=n.Gesture.prototype.doWorkspaceClick_;n.Gesture.prototype.doWorkspaceClick_=function(){e.self.disabled||1!==this.mostRecentEvent_.button&&!this.mostRecentEvent_.shiftKey||s.show(this.mostRecentEvent_),a.call(this)},document.addEventListener("mousemove",e=>{r={x:e.clientX,y:e.clientY}})},"userstyle.css":o.n(n).a}},1781:function(e,t,o){"use strict";o.r(t),o.d(t,"resources",(function(){return r}));var n=o(1685);const r={"userscript.js":async function({addon:e,console:t,msg:o}){const n=await e.tab.traps.getBlockly(),r=e.tab.traps.vm,s=["RENAME_VARIABLE_ID","DELETE_VARIABLE_ID","NEW_BROADCAST_MESSAGE_ID","RENAME_BROADCAST_MESSAGE_ID"],a=(e,t)=>!r.runtime.getAllVarNamesOfType(t).includes(e),i=(e,t)=>!r.editingTarget.lookupVariableByNameAndType(e,t),c={createGlobalVariable:{enabled:e=>a(e,""),createVariable:(e,t)=>e.createVariable(t)},createLocalVariable:{enabled:e=>i(e,""),createVariable:(e,t)=>e.createVariable(t,"",null,!0)},createGlobalList:{enabled:e=>a(e,"list"),createVariable:(e,t)=>e.createVariable(t,"list")},createLocalList:{enabled:e=>i(e,"list"),createVariable:(e,t)=>e.createVariable(t,"list",null,!0)},createBroadcast:{enabled:e=>a(e,"broadcast_msg"),createVariable:(e,t)=>e.createVariable(t,"broadcast_msg")}};let l=null,d=null,u=null,p=[],h=[],f=[],m=[];const g=n.DropDownDiv.show;n.DropDownDiv.show=function(...t){if(d=document.querySelector(".blocklyDropdownMenu"),!d)return g.call(this,...t);d.focus=()=>{},u=document.createElement("input"),e.tab.displayNoneWhileDisabled(u,{display:"flex"}),u.type="text",u.addEventListener("input",w),u.addEventListener("keydown",x),u.classList.add("u-dropdown-searchbar"),d.insertBefore(u,d.firstChild),p=Array.from(d.children).filter(e=>"INPUT"!==e.tagName).map(e=>({element:e,text:e.textContent})),f=m,w();const o=g.call(this,...t);return l=n.DropDownDiv.getContentDiv(),l.style.width=getComputedStyle(l).width,l.style.height=getComputedStyle(l).height,d.insertBefore(u,d.firstChild),u.focus(),o};const b=n.DropDownDiv.clearContent;n.DropDownDiv.clearContent=function(){b.call(this),p=[],h=[],n.DropDownDiv.content_.style.height=""};const y=n.FieldDropdown.prototype.getOptions;n.FieldDropdown.prototype.getOptions=function(){const e=y.call(this),t=this.sourceBlock_,o=r.editingTarget&&r.editingTarget.isStage;return t&&("data"===t.category_?(e.push(_("createGlobalVariable")),o||e.push(_("createLocalVariable"))):"data-lists"===t.category_?(e.push(_("createGlobalList")),o||e.push(_("createLocalList"))):"event_broadcast_menu"!==t.type&&"event_whenbroadcastreceived"!==t.type||e.push(_("createBroadcast"))),m=e,e};const v=n.FieldVariable.prototype.onItemSelected;function k(e,t){e.dispatchEvent(new MouseEvent("mousedown",{relatedTarget:e,bubbles:!0})),t&&e.dispatchEvent(new MouseEvent("mouseup",{relatedTarget:e,bubbles:!0}));const o=e.offsetTop,n=o+e.offsetHeight,r=l.scrollTop,s=l.offsetHeight,a=r+s;r>o?l.scrollTop=o:n>a&&(l.scrollTop=n-s)}function w(){const e=h;h=function(){const e=u.value.trim(),t=e.trim().toLowerCase(),o=(o,n)=>{const r=f[n][1];if(s.includes(r))return t?-1:0;if(Object.prototype.hasOwnProperty.call(c,r)){if(!t)return-1;return c[r].enabled(e)?(o.element.lastChild.lastChild.textContent=_(r)[0],0):-1}const a=o.text.toLowerCase();return t===a?2:a.startsWith(t)?1:a.includes(t)?0:-1};return p.map((e,t)=>({item:e,score:o(e,t)})).sort(({score:e},{score:t})=>Math.max(0,t)-Math.max(0,e))}();let t=e.length!==h.length;if(!t)for(let o=0;o0){for(const{item:t}of e)t.element.remove();for(const{item:e}of h)d.appendChild(e.element)}for(const{item:e,score:t}of h)e.element.hidden=t<0}function x(e){if("Enter"===e.key){e.stopPropagation(),e.preventDefault();const t=document.querySelector(".goog-menuitem-highlight");if(t&&!t.hidden)return void k(t,!0);const o=n.selected;if(""===u.value&&o&&("event_broadcast"===o.type||"event_broadcastandwait"===o.type||"event_whenbroadcastreceived"===o.type))return void n.DropDownDiv.hide();for(const{item:e}of h)if(!e.element.hidden){k(e.element,!0);break}}else if("Escape"===e.key)n.DropDownDiv.hide();else if("ArrowDown"===e.key||"ArrowUp"===e.key){e.preventDefault(),e.stopPropagation();const t=h.filter(e=>e.score>=0).map(e=>e.item);if(0===t.length)return;let o=-1;for(let e=0;e{if(!e.tab.redux.state)return t.warn("Redux is not available!");e.tab.redux.initialize(),e.tab.redux.addEventListener("statechanged",({detail:o})=>{if(e.self.disabled)return;const n=o;if(!n.action||"scratch-paint/clipboard/SET"!==n.action.type)return;const r=n.next.scratchPaint.clipboard.items;if(1!==r.length)return;const s=r[0];if(!Array.isArray(s)||"Raster"!==s[0])return t.log("copied element is vector");const a=s[1].source;e.tab.copyImage(a).then(()=>t.log("Image successfully copied")).catch(e=>t.error("Image could not be copied: ".concat(e)))})}}},1789:function(e,t,o){"use strict";function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function r(e){for(var t=1;tdocument.body.classList.toggle("sa-stage-color-picker-picking",e);let a=!1;document.addEventListener("click",e=>{a=e.isTrusted},{capture:!0}),e.tab.redux.initialize(),e.tab.redux.addEventListener("statechanged",t=>{const o=t.detail.action;o[n]||(!e.self.disabled&&a&&"scratch-paint/eye-dropper/ACTIVATE_COLOR_PICKER"===o.type&&(s(!0),e.tab.redux.dispatch({type:"scratch-gui/color-picker/ACTIVATE_COLOR_PICKER",callback:t=>{queueMicrotask(()=>{e.tab.redux.dispatch(r(r({},o),{},{[n]:!0})),o.callback(t),o.previousMode&&o.previousMode.activate(),e.tab.redux.dispatch({type:"scratch-paint/eye-dropper/DEACTIVATE_COLOR_PICKER",[n]:!0}),s(!1)})}})),"scratch-paint/eye-dropper/DEACTIVATE_COLOR_PICKER"===o.type&&(s(!1),e.tab.redux.state.scratchGui.colorPicker.active&&e.tab.redux.dispatch({type:"scratch-gui/color-picker/DEACTIVATE_COLOR_PICKER",[n]:!0})))})},"style.css":o.n(a).a}},1797:function(e,t,o){"use strict";o.r(t),o.d(t,"resources",(function(){return n}));const n={"userscript.js":async function({addon:e,console:t,msg:o}){const n=await e.tab.traps.getBlockly(),r=e.tab.traps.vm;let s={},a={};const i={isNoop:!0},c=()=>{const e=Math.floor(256*Math.random()*256*256);return"#".concat(e.toString(16).padStart(6,"0"))},l=()=>{if(s={},a={},e.settings.get("motion")&&(s.motion_turnright=[i,{opcode:"motion_turnleft"}],s.motion_turnleft=[{opcode:"motion_turnright"},i],s.motion_setx=[i,{opcode:"motion_changexby",remapInputName:{X:"DX"}},{opcode:"motion_sety",remapInputName:{X:"Y"}},{opcode:"motion_changeyby",remapInputName:{X:"DY"}}],s.motion_changexby=[{opcode:"motion_setx",remapInputName:{DX:"X"}},i,{opcode:"motion_sety",remapInputName:{DX:"Y"}},{opcode:"motion_changeyby",remapInputName:{DX:"DY"}}],s.motion_sety=[{opcode:"motion_setx",remapInputName:{Y:"X"}},{opcode:"motion_changexby",remapInputName:{Y:"DX"}},i,{opcode:"motion_changeyby",remapInputName:{Y:"DY"}}],s.motion_changeyby=[{opcode:"motion_setx",remapInputName:{DY:"X"}},{opcode:"motion_changexby",remapInputName:{DY:"DX"}},{opcode:"motion_sety",remapInputName:{DY:"Y"}},i],s.motion_xposition=[i,{opcode:"motion_yposition"}],s.motion_yposition=[{opcode:"motion_xposition"},i]),e.settings.get("looks")&&(s.looks_seteffectto=[i,{opcode:"looks_changeeffectby",remapInputName:{VALUE:"CHANGE"}}],s.looks_changeeffectby=[{opcode:"looks_seteffectto",remapInputName:{CHANGE:"VALUE"}},i],s.looks_setsizeto=[i,{opcode:"looks_changesizeby",remapInputName:{SIZE:"CHANGE"}}],s.looks_changesizeby=[{opcode:"looks_setsizeto",remapInputName:{CHANGE:"SIZE"}},i],s.looks_costumenumbername=[i,{opcode:"looks_backdropnumbername"}],s.looks_backdropnumbername=[{opcode:"looks_costumenumbername"},i],s.looks_show=[i,{opcode:"looks_hide"}],s.looks_hide=[{opcode:"looks_show"},i],s.looks_nextcostume=[i,{opcode:"looks_nextbackdrop"}],s.looks_nextbackdrop=[{opcode:"looks_nextcostume"},i],s.looks_say=[i,{opcode:"looks_sayforsecs",createInputs:{SECS:{shadowType:"math_number",value:"2"}}},{opcode:"looks_think"},{opcode:"looks_thinkforsecs",createInputs:{SECS:{shadowType:"math_number",value:"2"}}}],s.looks_think=[{opcode:"looks_say"},{opcode:"looks_sayforsecs",createInputs:{SECS:{shadowType:"math_number",value:"2"}}},i,{opcode:"looks_thinkforsecs",createInputs:{SECS:{shadowType:"math_number",value:"2"}}}],s.looks_sayforsecs=[{opcode:"looks_say",splitInputs:["SECS"]},{opcode:"looks_think",splitInputs:["SECS"]},i,{opcode:"looks_thinkforsecs"}],s.looks_thinkforsecs=[{opcode:"looks_say",splitInputs:["SECS"]},{opcode:"looks_think",splitInputs:["SECS"]},{opcode:"looks_sayforsecs"},i],s.looks_switchbackdropto=[i,{opcode:"looks_switchbackdroptoandwait"}],s.looks_switchbackdroptoandwait=[{opcode:"looks_switchbackdropto"},i],s.looks_gotofrontback=[i,{opcode:"looks_goforwardbackwardlayers",remapInputName:{FRONT_BACK:"FORWARD_BACKWARD"},mapFieldValues:{FRONT_BACK:{front:"forward",back:"backward"}},createInputs:{NUM:{shadowType:"math_integer",value:"1"}}}],s.looks_goforwardbackwardlayers=[{opcode:"looks_gotofrontback",splitInputs:["NUM"],remapInputName:{FORWARD_BACKWARD:"FRONT_BACK"},mapFieldValues:{FORWARD_BACKWARD:{forward:"front",backward:"back"}}},i]),e.settings.get("sound")&&(s.sound_play=[i,{opcode:"sound_playuntildone"}],s.sound_playuntildone=[{opcode:"sound_play"},i],s.sound_seteffectto=[i,{opcode:"sound_changeeffectby"}],s.sound_changeeffectby=[{opcode:"sound_seteffectto"},i],s.sound_setvolumeto=[i,{opcode:"sound_changevolumeby"}],s.sound_changevolumeby=[{opcode:"sound_setvolumeto"},i]),e.settings.get("event")&&(s.event_broadcast=[i,{opcode:"event_broadcastandwait"}],s.event_broadcastandwait=[{opcode:"event_broadcast"},i]),e.settings.get("control")&&(s.control_if=[i,{opcode:"control_if_else"}],s.control_if_else=[{opcode:"control_if",splitInputs:["SUBSTACK2"]},i],s.control_repeat_until=[i,{opcode:"control_wait_until",splitInputs:["SUBSTACK"]},{opcode:"control_forever",splitInputs:["CONDITION"]}],s.control_forever=[{opcode:"control_repeat_until"},i],s.control_wait_until=[{opcode:"control_repeat_until"},i]),e.settings.get("operator")&&(s.operator_equals=[{opcode:"operator_gt"},i,{opcode:"operator_lt"}],s.operator_gt=[i,{opcode:"operator_equals"},{opcode:"operator_lt"}],s.operator_lt=[{opcode:"operator_gt"},{opcode:"operator_equals"},i],s.operator_add=[i,{opcode:"operator_subtract"},{opcode:"operator_multiply"},{opcode:"operator_divide"},{opcode:"operator_mod"}],s.operator_subtract=[{opcode:"operator_add"},i,{opcode:"operator_multiply"},{opcode:"operator_divide"},{opcode:"operator_mod"}],s.operator_multiply=[{opcode:"operator_add"},{opcode:"operator_subtract"},i,{opcode:"operator_divide"},{opcode:"operator_mod"}],s.operator_divide=[{opcode:"operator_add"},{opcode:"operator_subtract"},{opcode:"operator_multiply"},i,{opcode:"operator_mod"}],s.operator_mod=[{opcode:"operator_add"},{opcode:"operator_subtract"},{opcode:"operator_multiply"},{opcode:"operator_divide"},i],s.operator_and=[i,{opcode:"operator_or"}],s.operator_or=[{opcode:"operator_and"},i]),e.settings.get("sensing")&&(s.sensing_mousex=[i,{opcode:"sensing_mousey"}],s.sensing_mousey=[{opcode:"sensing_mousex"},i],s.sensing_touchingcolor=[i,{opcode:"sensing_coloristouchingcolor",createInputs:{COLOR2:{shadowType:"colour_picker",value:c}}}],s.sensing_coloristouchingcolor=[{opcode:"sensing_touchingcolor",splitInputs:["COLOR2"]},i]),e.settings.get("data")&&(s.data_setvariableto=[i,{opcode:"data_changevariableby",remapShadowType:{VALUE:"math_number"}}],s.data_changevariableby=[{opcode:"data_setvariableto",remapShadowType:{VALUE:"text"}},i],s.data_showvariable=[i,{opcode:"data_hidevariable"}],s.data_hidevariable=[{opcode:"data_showvariable"},i],s.data_showlist=[i,{opcode:"data_hidelist"}],s.data_hidelist=[{opcode:"data_showlist"},i],s.data_replaceitemoflist=[i,{opcode:"data_insertatlist"}],s.data_insertatlist=[{opcode:"data_replaceitemoflist"},i],s.data_deleteoflist=[i,{opcode:"data_deletealloflist",splitInputs:["INDEX"]}],s.data_deletealloflist=[{opcode:"data_deleteoflist",createInputs:{INDEX:{shadowType:"math_integer",value:"1"}}},i]),e.settings.get("extension")&&(s.pen_penDown=[i,{opcode:"pen_penUp"}],s.pen_penUp=[{opcode:"pen_penDown"},i],s.pen_setPenColorParamTo=[i,{opcode:"pen_changePenColorParamBy"}],s.pen_changePenColorParamBy=[{opcode:"pen_setPenColorParamTo"},i],s.pen_setPenHueToNumber=[i,{opcode:"pen_changePenHueBy"}],s.pen_changePenHueBy=[{opcode:"pen_setPenHueToNumber"},i],s.pen_setPenShadeToNumber=[i,{opcode:"pen_changePenShadeBy"}],s.pen_changePenShadeBy=[{opcode:"pen_setPenShadeToNumber"},i],s.pen_setPenSizeTo=[i,{opcode:"pen_changePenSizeBy"}],s.pen_changePenSizeBy=[{opcode:"pen_setPenSizeTo"},i],s.music_setTempo=[i,{opcode:"music_changeTempo"}],s.music_changeTempo=[{opcode:"music_setTempo"},i]),e.settings.get("sa")){const e="​​log​​ %s",t="​​warn​​ %s",n="​​error​​ %s",r=o("debugger_log"),s=o("debugger_warn"),i=o("debugger_error"),c={mutate:{proccode:e},msg:r},l={mutate:{proccode:t},msg:s},d={mutate:{proccode:n},msg:i};a[e]=[{msg:r,isNoop:!0},l,d],a[t]=[c,{msg:s,isNoop:!0},d],a[n]=[c,l,{msg:i,isNoop:!0}]}s.data_variable=[],s.data_listcontents=[]};l(),e.settings.addEventListener("change",l);const d=e=>"text"===e?"TEXT":"colour_picker"===e?"COLOUR":"NUM",u=(e,t)=>()=>{var o;if(!t.isNoop)if(t.fieldValue)e.setFieldValue(t.fieldValue,"VALUE");else try{n.Events.setGroup(!0);const r=e.workspace,s=[];if(t.splitInputs)for(const o of t.splitInputs){const t=e.getInput(o);if(!t)continue;const n=t.connection;if(n&&n.isConnected()){const e=n.targetBlock();e.isShadow()||(n.disconnect(),s.push(e))}}const a=n.Xml.blockToDom(e),i=e.getRelativeToSurfaceXY();a.setAttribute("x",i.x),a.setAttribute("y",i.y),t.opcode&&a.setAttribute("type",t.opcode);const c=e.getParent();let l,u;if(c){l=c.getConnections_().find(t=>t.targetConnection&&t.targetConnection.sourceBlock_===e);const t=e.getConnections_().find(e=>e.targetConnection&&e.targetConnection.sourceBlock_===c);u=t.type}for(const e of Array.from(a.children)){const o=e.getAttribute("name");if(t.splitInputs&&t.splitInputs.includes(o)){a.removeChild(e);continue}const n=t.remapInputName&&t.remapInputName[o];n&&e.setAttribute("name",n);const r=t.remapShadowType&&t.remapShadowType[o];if(r){const t=e.firstChild,o=t.firstChild;t.setAttribute("type",r),o.setAttribute("name",d(r))}const s=t.mapFieldValues&&t.mapFieldValues[o];if(s&&"FIELD"===e.tagName){const t=s[e.innerText];"string"==typeof t&&(e.innerText=t)}}if(t.mutate){const e=a.querySelector("mutation");for(const[o,n]of Object.entries(t.mutate))e.setAttribute(o,n)}if(t.createInputs)for(const[e,n]of Object.entries(t.createInputs)){const t=document.createElement("value");t.setAttribute("name",e);const r=document.createElement("shadow");r.setAttribute("type",n.shadowType);const s=document.createElement("field");s.setAttribute("name",d(n.shadowType)),s.innerText="function"==typeof(o=n.value)?o():o,r.appendChild(s),t.appendChild(r),a.appendChild(t)}e.dispose();const p=((e,t)=>{const o=n.Xml.domToBlock(t,e),r=+t.getAttribute("x"),s=+t.getAttribute("y");return o.moveBy(r,s),o})(r,a);if(l){const e=p.getConnections_();e.find(e=>e.type===u).connect(l)}for(const e of s){const t=e.getSvgRoot();t.parentNode.appendChild(t)}}finally{n.Events.setGroup(!1)}};e.tab.createBlockContextMenu((t,r)=>{if(!e.self.disabled){const c=r.type;let l=s[r.type]||[];const d=e.settings.get("customargs")?e.settings.get("customargsmode"):"off";if("off"!==d&&["argument_reporter_boolean","argument_reporter_string_number"].includes(c)&&!r.isShadow()){const e=p();if("all"===d)switch(c){case"argument_reporter_string_number":l=Object.values(e).map(e=>e.stringArgs).flat(1);break;case"argument_reporter_boolean":l=Object.values(e).map(e=>e.boolArgs).flat(1)}else if("defOnly"===d){const o=r.getRootBlock();if("procedures_definition"!==o.type)return t;const n=e[o.getChildren(!0)[0].getProcCode()];switch(c){case"argument_reporter_string_number":l=n.stringArgs;break;case"argument_reporter_boolean":l=n.boolArgs}}const o=r.getFieldValue("VALUE");l=(i=l,[...new Set(i)]).map(e=>({isNoop:e===o,fieldValue:e,msg:e}))}if("procedures_call"===r.type){const e=r.getProcCode();a[e]&&(l=a[e])}if(e.settings.get("noop")||(l=l.filter(e=>!e.isNoop)),l.forEach((e,n)=>{const s=t.findIndex(e=>e._isDevtoolsFirstItem),a=-1!==s?s:t.length,i=e.msg?e.msg:e.opcode?o(e.opcode):o(r.type);t.splice(a,0,{enabled:!0,text:i,callback:u(r,e),separator:0===n})}),"data_variable"===r.type||"data_listcontents"===r.type){const e=t.findIndex(e=>e.text===n.Msg.DELETE_BLOCK),o=t[e+1];o&&(o.separator=!0)}}var i;return t},{blocks:!0});const p=()=>{const e={},t=r.editingTarget;return Object.values(t.blocks._blocks).filter(e=>"procedures_prototype"===e.opcode).forEach(t=>{const o=t.mutation.proccode,n=JSON.parse(t.mutation.argumentnames),r=o.split(/(?=[^\\]%[nbs])/g).map(e=>e.trim()).filter(e=>"%"===e.charAt(0)).map(e=>e.substring(0,2));const s=[],a=[];for(let e=0;e{n.b(!e.self.disabled,e.settings.get("invertDrag"))};e.self.addEventListener("disabled",o),e.self.addEventListener("reenabled",o),e.settings.addEventListener("change",o),o(),n.a(e)}}},1808:function(e,t,o){"use strict";o.r(t),o.d(t,"resources",(function(){return n}));const n={"userscript.js":async({addon:e,console:t,msg:o})=>{const n=["sound","costume"];e.tab.createEditorContextMenu(t=>{const o=e.tab.traps.vm.editingTarget;"sound"===t.type?o.reorderSound(t.index,0):o.reorderCostume(t.index,0),queueMicrotask(()=>{e.tab.traps.vm.emitTargetsUpdate(),e.tab.traps.vm.runtime.emitProjectChanged(),t.target.click()})},{types:n,position:"assetContextMenuAfterExport",order:1,label:o("top"),condition:e=>0!==e.index}),e.tab.createEditorContextMenu(t=>{const o=e.tab.traps.vm.editingTarget;"sound"===t.type?o.reorderSound(t.index,1/0):o.reorderCostume(t.index,1/0),queueMicrotask(()=>{e.tab.traps.vm.emitTargetsUpdate(),e.tab.traps.vm.runtime.emitProjectChanged(),t.target.click()})},{types:n,position:"assetContextMenuAfterExport",order:2,label:o("bottom"),condition:e=>e.index!==e.target.parentNode.parentNode.childElementCount-1})}}},1810:function(e,t,o){"use strict";o.r(t),o.d(t,"resources",(function(){return r}));var n=o(1647);const r={"userscript.js":async function({addon:e,console:t}){const o=()=>{n.c(!e.self.disabled)};e.self.addEventListener("disabled",o),e.self.addEventListener("reenabled",o),o(),n.a(e)}}},1811:function(e,t,o){"use strict";o.r(t),o.d(t,"resources",(function(){return n}));const n={"userscript.js":async function({addon:e,msg:t,console:o}){const n=e.tab.traps.vm,r=await e.tab.traps.getBlockly(),s=r.BROADCAST_MESSAGE_VARIABLE_TYPE,a=r.FieldVariable.dropdownCreate;r.FieldVariable.dropdownCreate=function(){const o=a.call(this);return!e.self.disabled&&this.defaultType_===s&&this.sourceBlock_.workspace.getVariableTypes().includes("broadcast_msg")&&o.push([t("RENAME_BROADCAST"),"RENAME_BROADCAST_MESSAGE_ID"]),o};const i=r.FieldVariable.prototype.onItemSelected;r.FieldVariable.prototype.onItemSelected=function(e,t){const o=this.sourceBlock_.workspace;if(!this.sourceBlock_||!o||"RENAME_BROADCAST_MESSAGE_ID"!==t.getValue())return i.call(this,e,t);u(o,this.variable_)};const c=()=>{const e=new Set(n.runtime.targets.map(e=>e.blocks));for(const t of e)t.resetCache()},l=e=>{const t=r.Events.FIRE_QUEUE_[0],o=t.run;t.run=function(t){o.call(this,t),e(t)}},d=(e,t)=>{const o=n.runtime.getTargetForStage().variables[e];o.name=t,o.value=t;const r=new Set(n.runtime.targets.map(e=>e.blocks));for(const o of r)for(const n of Object.values(o._blocks)){const o=n.fields&&n.fields.BROADCAST_OPTION;o&&o.id===e&&(o.value=t)}c()},u=(e,o)=>{const a=t("RENAME_BROADCAST_MODAL_TITLE"),i=o.name,u=o.getId(),p=t("RENAME_BROADCAST_TITLE",{name:i}),h=i;r.prompt(p,h,(function(t){if(!(t=r.Variables.trimName_(t)))return;!!e.getVariable(t,s)?((e,t,o,s)=>{const a=n.runtime.getTargetForStage().lookupBroadcastByInputValue(s).id;r.Events.setGroup(!0);for(const o of e.getAllBlocks())for(const e of o.inputList)for(const o of e.fieldRow)"BROADCAST_OPTION"===o.name&&o.getValue()===t&&o.setValue(a);e.deleteVariableById(t),r.Events.setGroup(!1);const i=[],d=new Set(n.runtime.targets.map(e=>e.blocks));for(const e of d)for(const o of Object.values(e._blocks)){const e=o.fields&&o.fields.BROADCAST_OPTION;e&&e.id===t&&i.push(o)}const u=e=>{const n=e?a:t,r=e?s:o;for(const e of i){const t=e.fields.BROADCAST_OPTION;t.id=n,t.value=r}c()};u(!0),l(e=>{u(e)})})(e,u,i,t):((e,t,o,n)=>{e.renameVariableById(t,n),d(t,n),l(e=>{d(t,e?n:o)})})(e,u,i,t)}),a,s)};(()=>{const e=r.getMainWorkspace(),t=e&&e.getFlyout();if(e&&t){const o=[...e.getAllBlocks(),...t.getWorkspace().getAllBlocks()];for(const e of o)for(const t of e.inputList)for(const e of t.fieldRow)e instanceof r.FieldVariable&&(e.menuGenerator_=r.FieldVariable.dropdownCreate)}})()}}},1813:function(e,t,o){"use strict";o.r(t),o.d(t,"resources",(function(){return r}));var n=o(1747);const r={"userscript.js":async function({addon:e,console:t}){const o=e.tab.traps.vm,n=()=>{d.classList.toggle("sa-comment-preview-delay","none"!==e.settings.get("delay")),d.classList.toggle("sa-comment-preview-reduce-transparency",e.settings.get("reduce-transparency")),d.classList.toggle("sa-comment-preview-fade",!e.settings.get("reduce-animation"))};let r=null,s=null,a=0,i=0,c=!1;const l=document.createElement("div");l.classList.add("sa-comment-preview-outer");const d=document.createElement("div");d.classList.add("sa-comment-preview-inner"),d.classList.add("sa-comment-preview-hidden"),n(),e.settings.addEventListener("change",n),l.appendChild(d),document.body.appendChild(l);const u=e=>o.editingTarget.blocks.getBlock(e)||o.runtime.flyoutBlocks.getBlock(e),p=e=>e&&e.comment&&o.editingTarget.comments[e.comment],h=()=>{l.style.transform="translate(".concat(a+8,"px, ").concat(i+8,"px)")},f=()=>{r&&(r=null,d.classList.add("sa-comment-preview-hidden"))};document.addEventListener("mouseover",t=>{if(e.self.disabled)return;if(clearTimeout(s),c)return;const n=t.target.closest(".blocklyBubbleCanvas > g, .blocklyBlockCanvas .blocklyDraggable[data-id]");if(n===r)return;if(!n)return void f();let a=null;if(e.settings.get("hover-view")&&t.target.closest(".blocklyBubbleCanvas > g")&&!t.target.closest("line")){if("none"!==n.querySelector("text.scratchCommentText").getAttribute("display")){const e=n.querySelector("textarea");a=e.value}}else if(t.target.closest(".blocklyBlockCanvas .blocklyDraggable[data-id]")){const t=n.dataset.id,r=u(t),s=p(r);if(e.settings.get("hover-view-block")&&s)a=s.text;else if(r&&"procedures_call"===r.opcode&&e.settings.get("hover-view-procedure")){const e=(e=>{const t=Object.values(o.editingTarget.blocks._blocks).find(t=>"procedures_prototype"===t.opcode&&t.mutation.proccode===e);if(t){if(t.parent)return u(t.parent);const e=t.id;return Object.values(o.editingTarget.blocks._blocks).find(t=>"procedures_definition"===t.opcode&&t.inputs.custom_block&&t.inputs.custom_block.block===e)}return null})(r.mutation.proccode),t=p(e);t&&(a=t.text)}}null!==a&&""!==a.trim()?s=(t=>{if(!d.classList.contains("sa-comment-preview-hidden"))return void t();const o=e.settings.get("delay");return"long"===o?setTimeout(t,500):"short"===o?setTimeout(t,300):void t()})(()=>{r=n,(e=>{d.innerText=e,d.classList.remove("sa-comment-preview-hidden"),h()})(a)}):f()}),document.addEventListener("mousemove",t=>{a=t.clientX,i=t.clientY,c=!1,e.settings.get("follow-mouse")&&!d.classList.contains("sa-comment-preview-hidden")&&h()}),document.addEventListener("mousedown",()=>{f(),c=!0},{capture:!0})},"userstyle.css":o.n(n).a}}}]); \ No newline at end of file diff --git a/js/addon-entry-2d-color-picker.9167dae4b14171701f20.js b/js/addon-entry-2d-color-picker.9167dae4b14171701f20.js new file mode 100644 index 0000000..62c0b60 --- /dev/null +++ b/js/addon-entry-2d-color-picker.9167dae4b14171701f20.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[5],{1640:function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return a}));const r=()=>/^#?[0-9a-fA-F]{3,8}$/,a=e=>{let t=String(e);if(!r().test(t))return"#000000";if(t.startsWith("#")||(t="#".concat(t)),4===t.length){const[e,n,r,a]=t;t="#".concat(n).concat(n).concat(r).concat(r).concat(a).concat(a)}return t.toLowerCase()}},1641:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));class r{constructor(e){this.timeout=null,this.callback=null,this.wait=e}abort(e=!0){this.timeout&&(clearTimeout(this.timeout),e&&this.callback(),this.timeout=this.callback=null)}limit(e){this.abort(!1),this.callback=e,this.timeout=setTimeout(()=>{this.timeout=this.callback=null,e()},this.wait)}}},1642:function(e,t,n){"use strict";const r=function(e){var t=/^\s+/,n=/\s+$/,r=0,a=e.round,s=e.min,i=e.max,o=e.random;function f(o,c){if(c=c||{},(o=o||"")instanceof f)return o;if(!(this instanceof f))return new f(o,c);var l=function(r){var a={r:0,g:0,b:0},o=1,f=null,c=null,l=null,h=!1,A=!1;"string"==typeof r&&(r=function(e){e=e.replace(t,"").replace(n,"").toLowerCase();var r,a=!1;if(y[e])e=y[e],a=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};if(r=I.rgb.exec(e))return{r:r[1],g:r[2],b:r[3]};if(r=I.rgba.exec(e))return{r:r[1],g:r[2],b:r[3],a:r[4]};if(r=I.hsl.exec(e))return{h:r[1],s:r[2],l:r[3]};if(r=I.hsla.exec(e))return{h:r[1],s:r[2],l:r[3],a:r[4]};if(r=I.hsv.exec(e))return{h:r[1],s:r[2],v:r[3]};if(r=I.hsva.exec(e))return{h:r[1],s:r[2],v:r[3],a:r[4]};if(r=I.hex8.exec(e))return{r:Q(r[1]),g:Q(r[2]),b:Q(r[3]),a:M(r[4]),format:a?"name":"hex8"};if(r=I.hex6.exec(e))return{r:Q(r[1]),g:Q(r[2]),b:Q(r[3]),format:a?"name":"hex"};if(r=I.hex4.exec(e))return{r:Q(r[1]+""+r[1]),g:Q(r[2]+""+r[2]),b:Q(r[3]+""+r[3]),a:M(r[4]+""+r[4]),format:a?"name":"hex8"};if(r=I.hex3.exec(e))return{r:Q(r[1]+""+r[1]),g:Q(r[2]+""+r[2]),b:Q(r[3]+""+r[3]),format:a?"name":"hex"};return!1}(r));"object"==typeof r&&(z(r.r)&&z(r.g)&&z(r.b)?(g=r.r,u=r.g,d=r.b,a={r:255*E(g,255),g:255*E(u,255),b:255*E(d,255)},h=!0,A="%"===String(r.r).substr(-1)?"prgb":"rgb"):z(r.h)&&z(r.s)&&z(r.v)?(f=j(r.s),c=j(r.v),a=function(t,n,r){t=6*E(t,360),n=E(n,100),r=E(r,100);var a=e.floor(t),s=t-a,i=r*(1-n),o=r*(1-s*n),f=r*(1-(1-s)*n),c=a%6;return{r:255*[r,o,i,i,f,r][c],g:255*[f,r,r,o,i,i][c],b:255*[i,i,f,r,r,o][c]}}(r.h,f,c),h=!0,A="hsv"):z(r.h)&&z(r.s)&&z(r.l)&&(f=j(r.s),l=j(r.l),a=function(e,t,n){var r,a,s;function i(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}if(e=E(e,360),t=E(t,100),n=E(n,100),0===t)r=a=s=n;else{var o=n<.5?n*(1+t):n+t-n*t,f=2*n-o;r=i(f,o,e+1/3),a=i(f,o,e),s=i(f,o,e-1/3)}return{r:255*r,g:255*a,b:255*s}}(r.h,f,l),h=!0,A="hsl"),r.hasOwnProperty("a")&&(o=r.a));var g,u,d;return o=k(o),{ok:h,format:r.format||A,r:s(255,i(a.r,0)),g:s(255,i(a.g,0)),b:s(255,i(a.b,0)),a:o}}(o);this._originalInput=o,this._r=l.r,this._g=l.g,this._b=l.b,this._a=l.a,this._roundA=a(100*this._a)/100,this._format=c.format||l.format,this._gradientType=c.gradientType,this._r<1&&(this._r=a(this._r)),this._g<1&&(this._g=a(this._g)),this._b<1&&(this._b=a(this._b)),this._ok=l.ok,this._tc_id=r++}function c(e,t,n){e=E(e,255),t=E(t,255),n=E(n,255);var r,a,o=i(e,t,n),f=s(e,t,n),c=(o+f)/2;if(o==f)r=a=0;else{var l=o-f;switch(a=c>.5?l/(2-o-f):l/(o+f),o){case e:r=(t-n)/l+(t>1)+720)%360;--t;)r.h=(r.h+a)%360,s.push(f(r));return s}function C(e,t){t=t||6;for(var n=f(e).toHsv(),r=n.h,a=n.s,s=n.v,i=[],o=1/t;t--;)i.push(f({h:r,s:a,v:s})),s=(s+o)%1;return i}f.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var t,n,r,a=this.toRgb();return t=a.r/255,n=a.g/255,r=a.b/255,.2126*(t<=.03928?t/12.92:e.pow((t+.055)/1.055,2.4))+.7152*(n<=.03928?n/12.92:e.pow((n+.055)/1.055,2.4))+.0722*(r<=.03928?r/12.92:e.pow((r+.055)/1.055,2.4))},setAlpha:function(e){return this._a=k(e),this._roundA=a(100*this._a)/100,this},toHsv:function(){var e=l(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=l(this._r,this._g,this._b),t=a(360*e.h),n=a(100*e.s),r=a(100*e.v);return 1==this._a?"hsv("+t+", "+n+"%, "+r+"%)":"hsva("+t+", "+n+"%, "+r+"%, "+this._roundA+")"},toHsl:function(){var e=c(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=c(this._r,this._g,this._b),t=a(360*e.h),n=a(100*e.s),r=a(100*e.l);return 1==this._a?"hsl("+t+", "+n+"%, "+r+"%)":"hsla("+t+", "+n+"%, "+r+"%, "+this._roundA+")"},toHex:function(e){return h(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return function(e,t,n,r,s){var i=[T(a(e).toString(16)),T(a(t).toString(16)),T(a(n).toString(16)),T(O(r))];if(s&&i[0].charAt(0)==i[0].charAt(1)&&i[1].charAt(0)==i[1].charAt(1)&&i[2].charAt(0)==i[2].charAt(1)&&i[3].charAt(0)==i[3].charAt(1))return i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0)+i[3].charAt(0);return i.join("")}(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:a(this._r),g:a(this._g),b:a(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+a(this._r)+", "+a(this._g)+", "+a(this._b)+")":"rgba("+a(this._r)+", "+a(this._g)+", "+a(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:a(100*E(this._r,255))+"%",g:a(100*E(this._g,255))+"%",b:a(100*E(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+a(100*E(this._r,255))+"%, "+a(100*E(this._g,255))+"%, "+a(100*E(this._b,255))+"%)":"rgba("+a(100*E(this._r,255))+"%, "+a(100*E(this._g,255))+"%, "+a(100*E(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(x[h(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+A(this._r,this._g,this._b,this._a),n=t,r=this._gradientType?"GradientType = 1, ":"";if(e){var a=f(e);n="#"+A(a._r,a._g,a._b,a._a)}return"progid:DXImageTransform.Microsoft.gradient("+r+"startColorstr="+t+",endColorstr="+n+")"},toString:function(e){var t=!!e;e=e||this._format;var n=!1,r=this._a<1&&this._a>=0;return t||!r||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"hex4"!==e&&"hex8"!==e&&"name"!==e?("rgb"===e&&(n=this.toRgbString()),"prgb"===e&&(n=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(n=this.toHexString()),"hex3"===e&&(n=this.toHexString(!0)),"hex4"===e&&(n=this.toHex8String(!0)),"hex8"===e&&(n=this.toHex8String()),"name"===e&&(n=this.toName()),"hsl"===e&&(n=this.toHslString()),"hsv"===e&&(n=this.toHsvString()),n||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return f(this.toString())},_applyModification:function(e,t){var n=e.apply(null,[this].concat([].slice.call(t)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(b,arguments)},brighten:function(){return this._applyModification(v,arguments)},darken:function(){return this._applyModification(w,arguments)},desaturate:function(){return this._applyModification(g,arguments)},saturate:function(){return this._applyModification(u,arguments)},greyscale:function(){return this._applyModification(d,arguments)},spin:function(){return this._applyModification(P,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(m,arguments)},complement:function(){return this._applyCombination(B,arguments)},monochromatic:function(){return this._applyCombination(C,arguments)},splitcomplement:function(){return this._applyCombination(p,arguments)},triad:function(){return this._applyCombination(D,arguments)},tetrad:function(){return this._applyCombination(H,arguments)}},f.fromRatio=function(e,t){if("object"==typeof e){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]="a"===r?e[r]:j(e[r]));e=n}return f(e,t)},f.equals=function(e,t){return!(!e||!t)&&f(e).toRgbString()==f(t).toRgbString()},f.random=function(){return f.fromRatio({r:o(),g:o(),b:o()})},f.mix=function(e,t,n){n=0===n?0:n||50;var r=f(e).toRgb(),a=f(t).toRgb(),s=n/100;return f({r:(a.r-r.r)*s+r.r,g:(a.g-r.g)*s+r.g,b:(a.b-r.b)*s+r.b,a:(a.a-r.a)*s+r.a})},f.readability=function(t,n){var r=f(t),a=f(n);return(e.max(r.getLuminance(),a.getLuminance())+.05)/(e.min(r.getLuminance(),a.getLuminance())+.05)},f.isReadable=function(e,t,n){var r,a,s=f.readability(e,t);switch(a=!1,(r=function(e){var t,n;t=((e=e||{level:"AA",size:"small"}).level||"AA").toUpperCase(),n=(e.size||"small").toLowerCase(),"AA"!==t&&"AAA"!==t&&(t="AA");"small"!==n&&"large"!==n&&(n="small");return{level:t,size:n}}(n)).level+r.size){case"AAsmall":case"AAAlarge":a=s>=4.5;break;case"AAlarge":a=s>=3;break;case"AAAsmall":a=s>=7}return a},f.mostReadable=function(e,t,n){var r,a,s,i,o=null,c=0;a=(n=n||{}).includeFallbackColors,s=n.level,i=n.size;for(var l=0;lc&&(c=r,o=f(t[l]));return f.isReadable(e,o,{level:s,size:i})||!a?o:(n.includeFallbackColors=!1,f.mostReadable(e,["#fff","#000"],n))};var y=f.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},x=f.hexNames=function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}(y);function k(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function E(t,n){(function(e){return"string"==typeof e&&-1!=e.indexOf(".")&&1===parseFloat(e)})(t)&&(t="100%");var r=function(e){return"string"==typeof e&&-1!=e.indexOf("%")}(t);return t=s(n,i(0,parseFloat(t))),r&&(t=parseInt(t*n,10)/100),e.abs(t-n)<1e-6?1:t%n/parseFloat(n)}function F(e){return s(1,i(0,e))}function Q(e){return parseInt(e,16)}function T(e){return 1==e.length?"0"+e:""+e}function j(e){return e<=1&&(e=100*e+"%"),e}function O(t){return e.round(255*parseFloat(t)).toString(16)}function M(e){return Q(e)/255}var J,L,N,I=(L="[\\s|\\(]+("+(J="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+J+")[,|\\s]+("+J+")\\s*\\)?",N="[\\s|\\(]+("+J+")[,|\\s]+("+J+")[,|\\s]+("+J+")[,|\\s]+("+J+")\\s*\\)?",{CSS_UNIT:new RegExp(J),rgb:new RegExp("rgb"+L),rgba:new RegExp("rgba"+N),hsl:new RegExp("hsl"+L),hsla:new RegExp("hsla"+N),hsv:new RegExp("hsv"+L),hsva:new RegExp("hsva"+N),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function z(e){return!!I.CSS_UNIT.exec(e)}return f}(Math);t.a=r},1714:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".sa-2dcolor-picker {\n width: 150px;\n height: 150px;\n border-radius: 8px;\n margin: 8px;\n position: relative;\n user-select: none;\n}\n\n.sa-2dcolor-picker-image {\n border-radius: 8px;\n width: 150px;\n height: 150px;\n user-select: none;\n}\n",""])},1768:function(e,t,n){"use strict";n.r(t),n.d(t,"resources",(function(){return o}));var r=n(1640),a=n(1641),s=n(1642),i=n(1714);const o={"userscript.js":async e=>{(async({addon:e,console:t,msg:n})=>{let i;const o=new a.a(250),f=t=>{let n;const r=e.tab.redux.state;if(r.scratchPaint.modals.fillColor)n="fill";else{if(!r.scratchPaint.modals.strokeColor)return;n="stroke"}const a=["primary","secondary"][r.scratchPaint.fillMode.colorIndex],i=r.scratchPaint.color["".concat(n,"Color")][a];if(null!==i&&"scratch-paint/style-path/mixed"!==i)return Object(s.a)(i).toHex8()},c=(t,n)=>{if(t=Object(r.b)(t),!e.tab.redux.state||!e.tab.redux.state.scratchPaint)return;const a=({detail:n})=>{"scratch-paint/eye-dropper/ACTIVATE_COLOR_PICKER"===n.action.type&&(e.tab.redux.removeEventListener("statechanged",a),setTimeout(()=>{const n=e.tab.redux.state.scratchPaint.color.eyeDropper.previousTool;n&&n.activate(),e.tab.redux.state.scratchPaint.color.eyeDropper.callback(t),e.tab.redux.dispatch({type:"scratch-paint/eye-dropper/DEACTIVATE_COLOR_PICKER"})},50))};e.tab.redux.addEventListener("statechanged",a),n.children[1].children[0].click()},l=e=>{let t=Object(s.a)(e).toHsv();return t.s=1,t.v=1,Object(s.a)(t).toHex()};for(;;){const r=await e.tab.waitForElement('div[class*="color-picker_swatch-row"]',{markAsSeen:!0,reduxCondition:e=>1===e.scratchGui.editorTab.activeTabIndex&&!e.scratchGui.mode.isPlayerOnly});if(o.abort(!1),!("colorIndex"in e.tab.redux.state.scratchPaint.fillMode))return void t.error("Detected new paint editor; this will be supported in future versions.");function h(){o.limit(()=>{let e=f(),t=Object(s.a)(e).toHsv();g(t.s,t.v),d.style.background="#"+l(f())})}if(e.tab.redux.initialize(),e.tab.redux.addEventListener("statechanged",e=>"scratch-paint/fill-style/CHANGE_FILL_COLOR"===e.detail.action.type||"scratch-paint/fill-style/CHANGE_FILL_COLOR_2"===e.detail.action.type||"scratch-paint/stroke-style/CHANGE_STROKE_COLOR"===e.detail.action.type||"scratch-paint/stroke-style/CHANGE_STROKE_COLOR_2"===e.detail.action.type?h():0),e.tab.redux&&"function"==typeof i&&(e.tab.redux.removeEventListener("statechanged",i),i=null),"editor"!==e.tab.editorMode)continue;let a=f();const d=document.createElement("div");d.className="sa-2dcolor-picker",d.style.background="#"+l(a||"ff0000");const b=Object.assign(document.createElement("img"),{className:"sa-2dcolor-picker-image",src:e.self.getResource("/assets/sv-gr.png"),draggable:!1}),v=Object.assign(document.createElement("div"),{className:e.tab.scratchClass("slider_handle")});v.style.pointerEvents="none";const w=document.createElement("div");w.className=e.tab.scratchClass("color-picker_row-header",{others:"sa-2dcolor-label"});const P=document.createElement("span");P.className=e.tab.scratchClass("color-picker_label-name",{others:"sa-2dcolor-label-name"}),P.innerText=n("shade");const B=document.createElement("span");B.className=e.tab.scratchClass("color-picker_label-readout",{others:"sa-2dcolor-label-val"}),w.appendChild(P),w.appendChild(B);let D=-1,H={x:0,y:0};window.addEventListener("keydown",e=>D=e.keyCode),window.addEventListener("keyup",()=>D=-1);let p=0,m=null,C=function(e){return A(e,D,H),!1},y=function(e){u(e,D,H)};function A(t,n,r){let a=Math.min(Math.max(t.clientX-d.getBoundingClientRect().x,0),150),i=Math.min(Math.max(t.clientY-d.getBoundingClientRect().y,0),150);if(16===n&&(Math.abs(a-r.x)>Math.abs(i-r.y)?i=r.y:a=r.x),v.style.left=a-8+"px",v.style.top=i-8+"px",B.innerText="".concat(Math.round(a/150*100),", ").concat(100-Math.round(i/150*100)),(!e.tab.redux.state.scratchPaint.fillMode.gradientType||"SOLID"===e.tab.redux.state.scratchPaint.fillMode.gradientType)&&m){let e=Object(s.a)({h:p,s:a/150,v:1-i/150}).toHex();e.startsWith("#")?m.style.background=e:m.style.background="#"+e}}function g(e,t){v.style.left=150*e-8+"px",v.style.top=150*(1-t)-8+"px",B.innerText="".concat(Math.round(100*e),", ").concat(Math.round(100*t))}function u(e,t,n){o.limit(()=>{let a=Math.min(Math.max(e.clientX-d.getBoundingClientRect().x,0),150),i=Math.min(Math.max(e.clientY-d.getBoundingClientRect().y,0),150);16===t&&(Math.abs(a-n.x)>Math.abs(i-n.y)?i=n.y:a=n.x);let o=Object(s.a)(f()).toHsv(),l=a/150,h=1-i/150,A=Object(s.a)({h:o.h,s:l,v:h,a:o.a}).toHex8();c(A,r),g(l,h)}),window.removeEventListener("pointermove",C),window.removeEventListener("pointerup",y)}if(a){let e=Object(s.a)(a).toHsv();g(e.s,e.v)}else g(1,1);d.addEventListener("pointerdown",t=>{let n;t.preventDefault(),H={x:parseFloat(v.style.left)+8,y:parseFloat(v.style.top)+8};const r=e.tab.redux.state;n=r.scratchPaint.modals.fillColor?"fill":r.scratchPaint.modals.strokeColor?"stroke":"wh",m=null,"fill"===n?m=document.getElementsByClassName(e.tab.scratchClass("color-button_color-button-swatch"))[0]:"stroke"===n&&(m=document.getElementsByClassName(e.tab.scratchClass("color-button_color-button-swatch"))[1]),m&&(p=Object(s.a)(m.style.background).toHsv().h),A(t),window.addEventListener("pointermove",C),window.addEventListener("pointerup",y)}),i=({detail:e})=>{"scratch-paint/color-index/CHANGE_COLOR_INDEX"===e.action.type&&setTimeout(()=>{h()},100)},e.tab.redux.addEventListener("statechanged",i),d.appendChild(b),d.appendChild(v);const[x,k,E]=[...r.parentElement.querySelectorAll('[class^="color-picker_row-header"]')].map(e=>e.parentElement);k.style.display="none",E.style.display="none",x.insertAdjacentElement("afterend",d),x.insertAdjacentElement("afterend",w)}})(e)},"style.css":n.n(i).a,"assets/sv-gr.png":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAADAFBMVEUBAQEDAwMCAgICAgIDAwMCAgIEBAQNDQ0CAgIDAwMEBAQEBAQFBQUODg4kJCQFBQUMDAwEBAQQEBAWFhYFBQUJCQkEBAQtLS0LCwsTExMpKSkgICAFBQUsLCw2NjYfHx8ZGRkWFhY2NjYREREXFxcUFBQcHBwWFhYICAhAQEAcHBwhISEKCgoPDw+FhYVKSkpnZ2dqamooKChpaWk1NTUMDAwjIyMqKiorKysKCgpVVVVDQ0NAQEBhYWElJSU5OTlsbGxNTU1VVVWMjIw6OjofHx9MTEwoKCh7e3tMTEwPDw97e3tWVlaDg4MtLS01NTWGhoYyMjJeXl5xcXHFxcUzMzMkJCR1dXVXV1dAQEAVFRWqqqo3NzcrKythYWFLS0uLi4s7OztnZ2dTU1N/f39BQUEdHR2CgoJNTU2YmJh6enoUFBR4eHgeHh6EhISSkpIcHBx8fHyenp5/f39ra2uenp49PT0oKCg+Pj4rKyvFxcVAQEBfX19HR0eOjo5fX19WVlZ1dXW5ublQUFCgoKClpaXExMRQUFCpqanMzMyoqKhOTk4+Pj5sbGyVlZXAwMCJiYllZWVeXl4nJydAQECQkJCSkpIgICCzs7OysrLT09OQkJBcXFx2dna/v79eXl5TU1NiYmJHR0dSUlKEhIRzc3OXl5ecnJxCQkKOjo6goKCsrKy1tbV0dHQUFBRmZmYvLy9+fn7R0dGVlZXNzc1XV1efn5/19fXh4eHr6+tHR0d5eXne3t6goKBxcXHIyMjDw8O2trbNzc0yMjLY2NjOzs7u7u7v7+9hYWG/v7/Pz8+6urqTk5NsbGy8vLydnZ2pqamzs7O0tLTn5+fd3d28vLzMzMzz8/Pe3t4/Pz/g4ODa2tqysrKsrKzv7++urq5ERETk5OT29vasrKz4+Pja2tqQkJDJycm0tLTQ0NDs7Ozz8/Pv7+/t7e34+Pjg4ODb29v5+fmkpKSlpaXk5OT5+fmSkpL4+Pjn5+fr6+v6+vr6+vrW1tbd3d3k5OS+vr5HdEzEAAABAHRSTlP9+vXw5uva/N/UzsK69/mq8Mjk/LOMoPt20OXVlfD7+/Dh8u73xty7gfrs52nX9/r57MbZz1ut093m9Ony5fHmuNm456PJ8IPcpk35yamn2r22+vng6Jft5ZZA98W9yr3TsaZiYNQzzcz3uK3GuN9PnZqS7Mi2hnbdJSC/8OCX2NiomIV3Dvjn12nDlHeX1X91VLBoUTjFi2Q9t7Y2R9eVdoVE+4qI46XK+tWx5dKidVonymfqoueDO8iveYT54cW2taeVd1b4Vb2l+e+FZ03GpPnVqJTHlmfJaCzZxoTnkxb4peW0+aeIdNm3dtVGlbmmw1rr2tLw7+eV+uDq62T0g1J1ZAAAOipJREFUeNqElcFOWmEUhHlj13XfhauuTLRpH4JuhMSVAd25kaCpCZGmTQ1YQYJRayX9Zjj3nl8odWb+2/U3Z7CN36t6kJd6fngudf98X+ju/q7Ud7nQNzl1++32lQ7kUuODcaHz8fkrncilfp38KtX61ar1tfW11PbX7Vrvt9+vqrGR3vgk4Z2gl8kb+AlPSnqbJD7BgW8X9DZJfDvx7aBfbwAHv725gPL49obz35F1flLji59kAzj5eav8YyXw/zkA+BNf9BsWkPhJH/hvL8D8WUFJHy4GsMqf+H4lftAX+PkLyAWk1u5vozcHYP4NFby5gGDPAZBQ0if/pvmjPH4OoNAaPd5AX3RA3v4L8NVep988gUbyRwXZQEm/zk+Mvz4Am/yXn082sKGDxF9AnfgEbxhAiZ8NbJhAFpDoJX02sIqfWr+/bOUPgFhPcJOng6cNCxD5Gv3iBJfn/9//ATmBxN9EXxZgZwO2NHi+H4TRjX13Y5set/m0k37ES5n/DHbek/KEDuyygVJ5/4XfyaLowA1kBXH95NezsoE3F5DsSX8Mug056BU9n6Rv26C3MRl9HylUYFtwfyPGh50n/KDXZxxeWUAnGpDWF9AFv5sNkFB5/s37b64t4Pj3w/Hv44cHB8NP6gYw8fUV89+0b4K/bf4RwcKv+M+WPruVyZNMygX0Dg4ODw7HlZXOuCN+3sJe6aCL1UG41S3xeRSwb2+7gdUFNIV/ZVsN6LHxI9w/4JEHgEVveE2AgE5gJ7bgpcT3g53U9Cgn0DO+RrAk53MOftDD3wE86O0d2G2jKy03cIqXArwFO1IH2/uv8Zukoq8LgN34NuH6eqb3/mMBNwPTS3cYeCfwg/678Hm28F2B/STfZgPGh39lAOeyJxADqAX+CS8b8Ad8glzCvjvAXgCmgl283YTf+DbwYS8A7NpK3D4XAHuK+7ex4UPRQLmAYK9kfiv4oQ/Dfwh7/YG8Y/6FnPQ26ISP4cWPA974Jg8zACy5Ahv6K7it5Q5YAAYbCX/wMODfwfEgde8GiAW8BiDTQdDbFT46w/D7/KY3f3bQUwPksAe/MsbkHMO+1sFOdhD4yP/oByB+G/4W3k9+0HEz+W3BY0IB8BvdSfaEl0kq6HMCI90/JXrgC8G/Qo8JdgWWKhB/hwQ9CnrQlW6X1AtoYbBVgenloCfBL5PAb15Bn1r+DYgKAj+cEvxjSR+O+cNvJz5PJjW++adOj+C4f+CPFchhHwvfWig7izD8BHZSSeyqgMjARwfwo2ygCb1CBaQsIRaQeg3/OLhRaACjOYY9FfipifFDBf7Uz/AVP48CSp27gqDHCvDE+JxfRtmAz++3T2rF/XcJ2GUFpk/lAnIASjYAeuJDTwNzdxD45m9fjEZkgvWZTM7krGAKvc8/9QKAR4eVQx251E5nsaMJKDQQ+EkvJ/7pvpz338WqADcr+UewuoDUwA0MB47YHyEPk7kX0J6TNrEuZNhrfthHCY+mGHhi91LJnvgkF0ADwEeCn5QNKJb5U76/wwS4f8r8SqjxcJxKfF9fRm5gLnjYPQAl6EeYBvAkDH448Xm4N2X+08QPb1qArs8LdfVw0tsFv11pV7bA38WhzQsYyoMhFWCDV/B8DL/soC2jS+hVATI/mYQq/I9VA8AjOqCC5O+9QS+nKnzenvmFX/Infjbg/bOBEl/87/AVDzVqeoKH4h8+Dh/LDuYxAPCJfCl4vYoebK4f+OafTMEXveUB2FkB/H37p9zRw8Zf76BL8B74BMNPSnyS8LhSU84G3rkBkgswek0/LOmBxynTY8LteV7AxeQiz69w/Skv+Wv4XEBf/Bb8ekt4fT90dj7s6JWCXufH5JQG9nIAsf8tZ5fgpMe13pGrcFGAjXR9O/nB55v8l+05+LDLHoD5GUEI+snUFaR62cGR8PvGl2MBP7k9weZ3qKDs4JoR+Pb1AqhgVjcw2986FT4PeCcbIIEvflcQaYhbz/CQqwIp8UmB7wEIPTWRrWyA+08/8l4v4Airgr5MNIE++HInDDsWuT9+kGsAyb8HPJZmGPpZsYCtYC828An7+rLPT1RBw7/+egDF/V9kKniZz4ll/EtyeXHhEpKfhMAmfKZTUhRQ0JcLMH2owi9L4PSYCmTYkb6+/h70UYIWsLWP3YLAU5/cgEoA30ZXSzeCPPCJ6H+AbnrYScBf8uErfJIK/i+ityeqQPj6oCM5BpANIO+/D3k1gA9uwPBh4E1vkxhANCD02SnbP93yL0BmAEo5ANAxSXp9YgFDkvjAD01vv7y4AowE3wafT1YwwYlPsPhhx9YR96cBRAN9N2B23x/nAsD/+UH8kvmvZX/2hG8F/2xGKEDeooVqAeb3i/vDrwqIKsgOnIb5Q7ATgzuA20b3JyqQa32ZyP4kvvk9AvCPAl7uH/VTr+m9ANHnAq7De9fQp8zvCcycLSx8adcW/2fRY1dQ4X96l9IGWEDyK5o/ieu7gz/zlwofBX7SM4DowPxE+P5gnV4fNyD8Hkl+OwQ+Tl3jOD9RBzmAmYyMP8NuwDa98P2M/5eOMnZtKo6icP7ITK6GrkI2F4cQCrrUgIOKZghCh7qYZHNI0i2xhVCICG3oJNpVHFPqd07ue/e9F3vO+d10/c69r6Hn5IsrCHzUKuHNju9DUQFOeOGT6ODux3hfAZHfj4EPxQVAnvSN/YMu+jo+yfvf4yPgScr4KfavCkJu4CP0MvBu4IsN/MEF5O5/KmogOvAF7P7udtfXu+AvOoCdwD8msX/R13WOobeigu92VmA/fgC/9V56/QRXGlBCPgH0Dvhw4BPwSannjRJaeQCwV/GBFz653v2lggo9z/hBL70vHGL5bkBxB0l/eAG9/9GHLfCr9LiJX78A2Hn4w8eEb1xAFuDdY8n8vMBngC6nwL8z/535Je8fN/ZvV2V83rJsoPdLdvL+s4NCjQsI/JTpEx8b35+ASqjIHRxVC0h46OXcP9d/H/g8JHQ9Mr4DPvCb+ze6wwUkvLw0PfPX8lePBjD0xuclO0aMGn4fv53UPwDvXiMEvdGRLkD0CW8rR40LyAOo0O9n9QKgNz8xuzoIBf0MW+dz3f+8uv8lFrs76BEOIHyCAb/FJydbUrt/4HmmNz9v8keOBur4BJvfFdipIw4AE6sFtfDzAHY/4U724J8KnTC8f/lHssszG83fzwkVYA/Y6/RL4fcI7Dp/fOIOEn/7e/s7Jfi4gAkGnTDAn+BUwIca9L5+Es5PIHWf9CHhT/F+/cBjBH9Vs7GW7+A5JSD23+wAfsKjAix+x/S3PgHwsfkZpsdv1QH5UzSAXYP5NTpZAa52QHL9PON7qIAaPIb9Zw1e/L4AK+AjUqx/PAPd9LoC04dht0Ue6S1j/X4ntuGDnhf0W+BdAQ30iwsA3Ra+b2CvTqI3LmCEIbfhdvRqBaww7Kv7VW5/uhM/urue8gFkBXLsXiZavTJ3B+ezc07gnNjQI0/jE38B5kfwCz/2b3zH/AQj8UPvZAlaf+eZjPg5LGFEBdmBG4iHWyU+9Cvz3+9WBX+cP+snNXhifCJb8M/JnEhRwRJDTgoB71ixfVlD64/nGwh4nQBzIltmNzzQerbQO40TGBGsHI3EfxRXkAWAT1bmt3d6U9m6k+/88htoKzO7oLdcgf8PBj9juSSpHvH6Q7c2+FsOgFi+gT5P8Mj4/gLUQZSAOnkAaoDPoIMHRQMjhQIwCXwrvoOW8cnKMj+ZFvzXwU+Svo1L/orAnmElJPo6f0+WEp8DILduYJsyv/F5sJOJnIJdjvWrAtZP0ACDLniCRyPG0Sjws4FW8GMi/hX4ZFeun5T47THBgd+eDZmpwE+Bb1fVs0t8HjI9VkLw2ynzk6o64id+3j4xfnQw4CMQfOAzahW0Al3axRQ7iVHefxsT0Hngt+sHMLcfwV+QpE+ZvoctV5D0DIkZ+ASnOnKHl/iiD5OR7E+gqKDOTyhAJkGv7U9XSV+4nUbjMehtX4BibUS/AXuT/PPFfAG6jBa9aOAsv35G6JETqGhiJ392EBegEgZUAD+D7bsB5AqOiMRMtYzOiAuYykQyv8eeHPSxDLhtDc2Owd9sYCd+C0WbN71Hb9E7W651AVSwxrcN+iY8OaR/jY0e27cML3wG/MRjNBjpAkKgyzW1cvvGJ4lf0uuBz0NDVwB5ezhklh2QzRwnvmx+hjugAa+feP/rPH/J++/ibbdPqOCi3yd7vSYTAj4Dd3wAivF5A5kIXmOkChLf4+ACUv+ll03uEQcAeLDbG9AZQa8rELq9TJ9h0LG2T8yf8Dbw4G/7CuwMKsCvsUawGx+nAt+7D3o5lRfwxM5PoM6PiQW7TYA3PvvHMz2VwDM68Qt+YvpUwb8wv88fdhqQra7s5WNXYJs+FPRo8roz0eiQRgM4NSJyVU+OCPykdgHHoDOOp2HhT48DH3or4IdBjzdKQe+3YP08aS50G3rZ+4feSnrw9cTe9bzYXpT0TA7gAuw+FrxfhxuAn1TpD/Br9KDrAMKNAgyPtP1jP+gxSQ39gJf4ET/UPGR8D8j1CoFPzK+I3/cve3TzAmQNKrD6fn2iBoweD3Q5NXAJdcFP3pTbV57sDwBlAdDbx15+sX+hHye9z99qm57rH2KSWsgE3SxSZzjw18LPCzD+ugs8QeL3+nmghzmAPq/UpKRnXHbIpeAv/RJe7IM38DvGx2KPElRA4q9MHn6Ygt5oAHCP0Eap4/Nu5jeuoYbv7S/cwJoZ9J5dVWAHPvDIn0DcAPzG7xf4nm4g8JFKGMik1Bs6aPILHjv80SrYjY802sdTwGXpIejtlPEjlugBv8GIGfT2Xmti9SonIHQr/kj4sgLwZSvgGV9lN4CYsDs8w9sjbH4sej+XYPsCzI/NT7DoIScM9C0aqOHbKTbPgJ8kPs/4S9hlEuICuhhs/6DAJ8Bjw+sAkj51SQlgqwHbgj3wPWQkel9AiZ8lcAEpyNFD+/jB9DzlG4b92/AA/2pDMNzyDQ90W3l1uH651Cnbl0kqK0jFAaS0eV/AZbDzBoWf2pA7hkeMJ7IrSH5dgLdfUVsdYA/jA8+olnAl04HpeaDLIejN7+2nGvjrLu/2tEu6JGT4R/g/ib18Xy/9DRg/BP9TVzBQCdFAiR+uq6XrT2n1wg/60DfYgRf+Z3w1JOwfxf6vgCdiD5/dnFEB/I0DIKb3O+2ekga9TQWJT2DHYBO5Exa0huFxeQFPdf1PQQ98FPSM+ifQaIDQQnTA+iXBA440zF/Qe9zQQFUs3w74wwM4JTwdAfiF0Qs/6F+Ang18UgNee/gf3WSs2mQcRfE+kGtfohBw1kXo5pYha6AIEooWIdIloCkkFmIhmbpIn6BITcEh4FbIC/QB9HfOvenN/yuec+7/y/o798b6Gd4T9D9hd44/uwTL/MTuXkCxC51Jwa779+Fj7R78q/srw/N4qCDofye78P8Afwr8qdwcwAD/GrD73H+xA45FD/wwnllYu08nP2H7n0zvJ3VMBeYP/DiBaiD5jzoFJL4n0BXhh0wPPIMSHyV+eE+nqgDywpdA/z5QAwFPhO/HHroDSmBMj2bK7FNWIG6MOhdQ+ASDTwdUIH5NVXD0So7n+QWUbmUq8O6v3IBt/KuiT/4S5GyfN/H9DGwqSF9aWUEYcKNj0e/v3/jmJyXIw8rS+AFf9GHLyz/6fMQHVwVVQMEXvwV76R6z/tKfdOJnDJ8GPelZ/2CQ6MT4mi3rv2SyBdiZbADtKvgxA1uzV4PhMW9u3w8KeIJWjF7Y6QC5geYCbrl+nPAkxPKvCPqi3Hs4gcIX++gP4Qn2UmyfhMFn+YNLnhLgNAB25Al/NhQ6wXkBP3DnAJZgwy7nATT6bK/EvgKdYO3ewVUADazf38b6i/8LDdjNAexpBP294EHn1enHnyDxtf8B7JldBeRJ28sh3roEVBW4hBTodtvBkg6WLsFZHi9j/8V/vDoGnWi8fT/FnwXcptd7l1/sRW+ThDc+2yei76yfAZqxkfgvO/xDIg81pZncqmU3PkY/GfBFz9O9ALLiBjAdcAYoK/CoAMCJLwA1BYieaTp4CI/cAM8IeJ3/yK4KxH96eqcKkPGf82/h59nyVAfAE7vw0/Mfchff77GsFP4Ke/sWJQBf+OmDpF+DzAmsb/mhB/I107B7CILc8FgP6F14W/wEGT8b0GzDaLgVOm/3AAqfmRte4rMME8n06X2tCDY6PloBX0p+X4A27/mbDYC+hn9PD/jqAe0OABMk+nLq7qkEq2lAmQAfZvl0gAu/W4Hxwbbn82zA8v5DyT/FG9NvCj90ROSSL8DHvxb1X7+YQL+2DW/7Au6pIMH5ePnFnvAYcj6DwV1TAfgT2EUPNrGGYVIH0E8bPi328HKOqaCz/6ktbbIDTErFX/+DA9EisJlMsNfuHRqQRnK1IH53QBb4jgbkOyrAHXyN90+0f+GjHX9vOOzLdGB4OpjPWno/8C+ZRtPogBh/w4u6/M87UAGwS7yGL7/G3j5Bvn0yKp1io48Wuf6gB57YqYnwJ8LfqoHuBZgefg/kdQDQeyzTp0uQN97I/gtsVqSU8CX+AvoHBHoKcu/f8KIvjTQ+gT0tvP+FshC88T02EX5egLePSQn+HvykD36fMDN7rkQFpgecYHThTEk+O3qyOwC58El4Twc6/oK/DXxWHw2QJ91Djxt2r36BwBe5HwT6jh/scxqYkMsJ2vLZY8eQ++mH4WaCvx/kpeS/IMVPDE82NJD8qzBJmf/QJk8FvK8C0GsOH3788Fr4vCXzk2og7OXbie8KbOChly0dQDrVC/e4gZ75o4LqAM8a+ov5xVJ2DE+srAAjKoC/reAQqwNSBegEil+GHnH9pr8qeGz+ZF/wsnsPCfbiBx6T4s8T2DoB7wztPH4r2Ukr0/sAjD8tftgNL/BUXcEYcswJ1AUQF9DC+/zzAjBJPZKRPLrmAT87yAru0oUPPRWEwc4S2v2bX7sXPumBT4C35sQufILBdw+QXwR/ahNO+t0HfnSoOSQ0QOoC2gZCD2FictgfTB+PSgj4VKKXYFfEDv3ASX6Ce5O8fWJ8/gB9kqID4yf7RwJ4Wloq0C8ZtEz8pOcp+PShDXk5Cyh2v8Yn2PiYyNo+Xoyui72Wr6f4CT6/m/APcAkl+HuT+vsLHw2fVQC/J/BR8hPwNVO5VBdQGhMfwOZwzPIdFPykCrCtq2wgDt/40giDT4DuVpDwZ4a3B9BDLrfw4PsAvPsU4B18uM0uu4GkLwHP+vFz+g8Jj7kAfceJzwR8vHEBxV56wIA39I/XI3wNe3Swzw864wrOqwJifj2lHsHmrxL6Mil97H9UBR8dGpDRPPEzU1L6MN18mIr/A/b65ZVNCcJPHaUPuvgi9zwSFPim57leyH4soS/OeAg2vpLqnoDJX6oB9BL8gsfmT3jsCD7p4wBKuf53O3YsfNGrAi+eIQj6MdhM4vvBB699AUqp8K3E1/L5Fv035kwHcMburTPYNST5q4KXaf4AoE9wqko4Af0Egy521g/8UwMEtx28u4D/Hf6QHdAA+HjM0IHxV86hnKoODrrwgHf4r8MjDHv6W+IDL36MAD8zeMOPTO7wg9WTLrzB/YCPSYxLKPbaP9y+AJkP5FSgDjDJ/acSn6TqAsDXFD5plk9C8Hu8ez2wZ9TBOQmXJirh5bl3H+mFI9aJ0j+hAplg0OWkh5+Ev+J3F4QHcsn43j9B5h97Oh10K0AHtfsbgh9v8OubpBd84efu/RjdTx6A0Dv0Lw0f9Ak/yQast9UA1Jlit4xe8MgVgK8StH7wiflNz5P0qOjTe/IFrLv4BD/qvY4CqgWhXwOPaIDk+hO/rQB48Tf7B52kwT+RT4Tvie2fENzqK/xpwAMfdKSPK6CE0jj9vIUX/7mAGxt0BQv+BvjaP+iqAHjjm77wCUZv8PkbuHdOwZ/42j12ooNU///sDPAoGpASPvEbjSONxG78F7gKKHgFcsQHQd/omywtvH9c+Bpb9MZHSe8nBf1bBvwowfQEdgd6huDid0An5v/HRhnjNhUGQdjHyBFcoDRcICJItjs65A6liWJFaYycmhpBYSRSIhqkFC5NB02anMg138yuPbwHM7P7QvnN/uYb9hOQwNfY4wrwPW69+CL+L6ZnpYBfFcTy9Tk9+JpmJ9A3O+iF/3cF747snTfvsCsIfGVFVh1wVwwVlIJ+1fSy8p0RfcNH/6c/4SN18AJ7gT56AVBLeQBeXcENEb7pWaXmDz70LOmrp7mpYKiVDbi9Ap4O9AxCXwv8Kxt1A34B4FOBHXwvmbTuy6pA+Mj8GHomv4MJ3GVkeshDX/xBD33Yif3V9oK8TEKvwK2hA7jVABlI8GVS7OMK8FAmr7UxvqLDV3gDLwj0XUGZ5AUMdPMLbLnWjxvsFsYlXBY+I3Jv01+zZOsaCz82vvUBj+jh9xBd/wryqOi7g49H/o0CukzAd7D52w3v9McFmJ+xuPzNTy/gXcIPIvCg27ArxgcdW66g4K+NznYJdX1kerOXEcu6kgnsNvl2pQpK6QB0omV62L3RsQLYLfg7wCPvxm/zAqIbTEAnkPPl+JWTLqHHPv8l5Djw0NvXNIBBt12BTaRUIPwL6CupQGP4WoH/9pGP0Jm6vtdG8CykCmQidvPLfExvmZ5MhvyG7/zAgT94oIefYONHRf8OdsOfYnbmFvTI6Nj0rNz/U/Dt8Iu90Em9goYngrfv9QI29xHoXhHstVLAzRHf2/oZ/gM2Pbo0vx7/pd4+/ww/9LITfryCX9Rvxg1cgL4y/oXpo2+krOwh72DwSf8KNrJCAxrY8yNICe10oMGTXF9udtMfxH84mF5zKStAi5sGRvAEchbozb9q04A6uA39BeAr8V/xBozvGfPDThjDm9/shLVpmRxxeldAosBHwxcAuCYCPvQsxxV8ts1ufk3jt0nj9wf6W5u0jK/hBVxcCJ/BgyfA7OGmAlz8wTc9PwFeAN904BLw/zvA4xImufzxq+Nj6G9MjiE/XCK+pc9F731nm10TrTDg187KsS8wAZzgEXvj78HXp+n3sEt8WuBvKtF9mcz+hidnsJ85odea6PZ2jk8waUF/oABqaPb4rvjBZ4b4t4waYMytRSBn2sDDbpPUsHegP+kjNaQEtOlsxhUQ8D0YcK+zF4orwKlALyDsaQD8YmcMzxQ9gvwEL/E1/J3B0wDSAt3T5yeyri9dpYLWluH8hNevF7Av+JEM7xXNNvfMbAa5bZ3JfCAveibyTyASd/ANb0dC17pjOL4CedkdND0mvr/wO+Dn/CohFdhbDHi7RQUU0A5/d8As/6qAUAKLFvIIGBn+dgqAOnrsBoJPsBI1OFPBJmeF/nj/6GLlAM60Gj/0BBc/AX5IH/ylwInovWaxuInnbMbxYQ9+JQU0e/vweCCNj4bsvj3BYA/ub/y5zO3JGN/TLqWCrejbyl4eyfwMWnagJ/bMQ/DMA337dH3k5RaYFAB40R/cgFPXlw45fZkg48NNbNObfRf6CHCxEybwpmf83+C2709w0PMEFgI3PDK6oj8KH7ELHp0dbd03PEsmVYDhHx+BZzB61Ij8EQffC7caf87ALntBP8fXA/p4qC3xsq6YvQePH8ACU4HpGdnaEDRb4g0uuQWXwBtICSgNoIngiWx84gLQkf288YM+0JwK5oDb+gHsoEc77I+P/77o3/v8wW+L3ckPwNMCXWN62TF4G3ST6xv1+YM/rqBfgOmR1qHj03sZ//yO7/EH4Gl48FnwK9CXifG9BL8T/Xv4MfHnGf7qwMHWnpSJ6XGdf29wrB1BHUeDEkb4qWByvH5k+GJvevEDfS7kdeAxj1/knVsF7J2iLwN2+RZqsKsB8CvbZ5FHqQDytv9SA8v9ciHyBVPagH/qQHnCQ/ii947SwAT24g/+4zkLajdgfNaaBtxBlzB3A6g/xr/esYXPENb7qgAJv1bw5a08LGGPF0w3gD76QwXE+FHjk6bvz4Nj/gfTT4f0LM1kiA88FbDq9Gz4RcxiIF9raUC3pWu8m++A1258bHyZGF7WMnrTA88KPOx4zzT/nvH1Be8M6Z+WTwTNyqLHBPSH2VSf6Qz+KY7yAv7Bhx94xp+78/P1GvxCdwlzvoG3drVvVcFJ4O98f+P3PAufsFyBPdQCQ01YHnbxj/CfSHcwi6FnHPNj0L00je9MAg+2Az1flgdw+HV9rLVe6/al/LGTEdv3N7uNuoPGZ+hA2nqlg1dwv9q/WrgBJVp2cB7Bk0wM3xvmB+KlBqb86dtPTc4iUQo472Dk6wNf8fUNz8yJ3fTBr92C3fhM9EyM7/s3PRH7M6Mv/IsapBKiruD1cuk8xaQ6eGAzsJenM/jZU+6vDmQSTZqeafR8174/Absk9qAHv20Fv9lDz5Qj8AkWOrEX4t+7gsAb/7W+RA0IHGm1AH+q27fUgPhhF/+wghRwXvSs3N/sMqm5a/w4P/7AB//oqPmRduMzr+SGJ4tXZFEZCvzXvj/WLvzoQYODrxcwxQ9GJ+1UMAm+9klrDx5ogP57Pn/Lxrv5793vXQe9NDgZw9skAn8rfmvb+GzjM2GH3gP9a+aJ8BngN3009WCvlquggRRgR0Xet/cOPoGaYMGf6OfGN/wfuskYN40wCsJ7CbvKAVKCLNFR2HITBUWyLIELh4jOUhqkuMMS3CJXSMUBKNykybHyzeyIx7+bzMx7P+03b7l5VQM3Z7+uZZ71+vXP+k8SepsSbNiVmJw+Efk+HWBCBaAD71QD5bNyftLwO30BoWe1DaSC9vjQ64EdvcfwY8QiNGB+jcUDv+DXkPcmBu9NGqWBnp+R4bbF7vmdEhhreW5gIPCJVlUQ5wsY0dvBL61k6P0JaL+/m14v5MEnr0TWWvNAv2Yso7M0qQD+Ifvp7iR9Ilj4J7EnkMPvafBZ+KdMhK7EriH42XZn5tJn2LU+/9AQJuw+P+RuAHY78Fo35Ia8EqwHgU6w769NYF/fBb7FRyecHkwPu6Jl6flNzl7egw96T19hqODK+CQKPWN3OX/wFbFTQfiF78Ae/HeOTyzYkeixVCX4/j1+yfh3mOOz8UAnJR9ABt3LBPpS+IFPlgolMP4Orsofew9FAQVfzt2JL08wEf1q9U4F3J5Ixi/6C3j8umZffP9Zd0S2Fg19TKLQuwCmpdfxeeGW8v1nydxfA/pP85PhZ9A1t/f9bS82+Ixt6fjwr3Ak+OqglA5AZiKBF//Cvsv+psuP8KsEe6ClK1ALNoLcC8O+XEKfL4BgraaC7owPu+XXDQCtifL18xq+BPoAXNwJ0yr4C6jt0GOtE2FBzDToY3hseK9W0GNieMSigsB7RRQQdpIPQPwO+LTg68MecX0ngp2wcAS+E3xSWuA7VsETkacCJHS10Ohe2dDC5l7x7b/02xVoD8TxlSsSfBaxS53YATc+Cj7wNmJFcI/wcZG3FeA9zCxlYRPjs9hY+AvYbV+fJXzvjQw4E3TNF+wsydJpxOVjrygVDDvoPhd9adUnHVQDGuNPZeCnOXzJ3Dd7nj3c6iAxPBF66OEPOvG4BEYGnWTQvYy0UgJbx2fsUQtaTQuFz1id+ElDHw/psTKF3denAWmKewGu7R/Cj40Oe8EzErdnAGasE7HFnApMfzJ+vzZgx6I2eNi3fQDfGv/KiaqC5PwFDI6PRvjWFAueYI5PBzglQO3IPn864MdiL3Rm9AWAfscg3gj+DQYdE9PzGP8L6wvbx9diy3q3S9nRjysFjzv4WKaA0ef/CDl7RWSlJ/f1+wF4KmgS+NydYVtrgoEn6aD0jchKoTsbd0AJJyYSPoIdekwEXTG0FptAvhX41ibjryAFnOkfNfaKpQpw8OWR4Paaw6xlBz340Mv9GvPbpNHGU/i8kfj9FVACcgfB5/yEtaUCBfwEXOYDbvD94C74RQ/8Iwm8tujz/dsBl8WfDhhJ2wp9KvAU/f/xlRh5FT6xB9oqRs+Q4NuGZ5G2BdwZPfSPHl0+Gwe/URrgx9y3n9/gvZ+irw5SwUFBL/gbQwkv2CvaKbtdz79j/sWP2NGy+J3ojP9he/UB8QP6cQUpAPiYrLJAl1cM4v4Frz3XzElPrxr+hb4HmrGJ6R1c8P61w0ToO+g3DBnx26Pzy6SV8b2AD/2wgu6SniGgoymRneH999P5VOxT2PUCr3iVDnhxOICN6vzE9JiAXvB6yYbIxPOwYRSzP4z/Afif+ILf8gEwlvAH6or+UqsL/lbzRIYdcX2WHXBiw+4KUoLYHYHzQ7vwjW58TdnogldEz8jWDPZ41lYANEsmV6bH2k4VMOav8+OBAj/3BJ/BwCu4+An4/vhf5IUnHUDO4F3v4EsbT/4H8Es8BPIenjXDaEa2s6O/ghk+bgnwhY+yw29HXeDZRR8jNgl7TKqCfWIf5uKGX/L9rRdCCy/BZ5m+2L8xqcAKPuvB7JHgY8ETTLa8kMvo2K/jB36A7TRKBTz1BTSa9J5OJzHBVcJQe+Zg8wlArljBXzAEjwW/PRLwu83DDj9sYjXAss2eEkRuA45dwNEVxGSEb6NuBM/tJ5Nc3+8k5G9z4XsN+UFXAbo9T0OP/k8edBa51Aby0LMiVYBn8kwVhH7GEKg1xPh+g09amd6rGx5+os3BL48/99DCBN6RnmAncatcfvwJ/PJgAnAmevCSSauZhx7ApgbJFRwTbH6xxyQu/OqgC/2lBf9IBSTkgJM3MmHLVrh5nkD1YFL3v2WRW1Pf4tCzMNCMPKogHlUws4teTeQLgD3wpeCTa61xB12PX+yGzs7x36AHnMfgrOwnTA56nw6k+G81xof6ltsHnhYA9+kZgsxfPTzvHojX+AOoBjxRzm+Tgneu2WK/dqyqgQLMnSGX9Kw3Nujg2w4OPYPpAHTTuwFsejdxC3wZdPiFXvDegcdaz8Z/Jjgy+Jg++Ex8KeCvdf1j2PMUPwXk9qQRh58QOR++yeOnt/76yPjSIb41tbb1QvKkglvhl4SPnnmfbdHDXfheX0n4lXEHOT9T9FgvuQZd7lepG9P7/MA7YDOSKwh9Dp8n8ET4BH6GjQWeQC4XfknsquD5GX4N6KHnEXr4v8o8Lf6R+X5Ujsw1y/xe8jVjhd6rCrB4SkCTPMjfQDp4UgP2QH8JK2PVNqIoiOoDDGpMmqQVKgNiicPKYFRIrYghkMIqVQn1C0kgnT4kTap8Y86MhlztvpjMzJ23Ls99T3ijbCosoQQ5GygrJbN/xcEXdUr0gqcZDLxyTgudpLQC8MkJ/GBzvBN7nGP0AqLiD72nJHzFPwBqRP+DsZMbmX1zpGA9Zqiwy6qxPmkOBIfd1+/ow/Suk6yCG/2WwT+9YbIFOuL+kyygpQ9/g290Yo+1SexWvzRs4PiLLQScI5/F7wq7Iv7Di+8eQe62Qdecgm/6tPIGawUT+DphZ0YLeC5/+0aY9upb9gvg6svmcmW/TB8A4FQ2YF9j9qNfgGusg/Ap2AkKPMHn85kNuLj8U0boGeHHEwF+s4JZ8SvMM+B8ZQWy1BteJj3cvZht6AnQkHO4mRG9DTRFY9fLEXx2QFr4KrPXFuA/H84swfgnXgGdFUjGBzz06cJX2T5ngdc8V+DWmJ2jp3sZbpl4Lsrlwqg3pPC/2whmojE8yg5Mbnamu8V34VKhfxA9Fr508gpwCfYEI7pV/iWygAn7Nzt3n+byRZ+bZ0ycIUavCrv7GGcFgTc9ReROE5u+PNWZ2PATOfSqyRbmDJ6/UTUbcM3EzKhL4e+fdfnPPfBK/4VgsLUGDiraeLDRqRzHqwu/1B1fmK4zfp6Aju7QvRw60a8AXjXoSsn47QrmMtT6nM/fKPZIfgGCNz8zlR49BbeSgl25TPX96o3qO+jSkcQtPfVCOkdW1Q+gw4QVEAy/g12Fr7JLBlcC7lg+Sl4AmvD3z0Lve74QlQdw6QmwGSn3H3qGwrf4iqvwlc7BtQTMuYJ9JfaVTaRV0FudHD2A5YkIm6IT2D10raBdwIi/VpD7D71MJnef2Fbw2xcwmJ2PwBvYsQ4kXoVdVqnP8oFpVwB88EV/w14rQIJ3lWYT9FuXQHfZdfu7v/jxWMEfgi5nA7JS8u2jQwJzt4LaRmDjhBnjL7l9Zn5mBfPzfBl8BuWsXwJNtQswv6snr+LvhL/jND9V8FRp0GCTD7CnkdCZRjx+2CmINUYPPqKE7rKWCgM9O1hSS7EviT1VNhA3C4A6QXWi0BNT7xiJP4AW9s6Jws3hJzDUDobOA/uQlKDGBCtZAcGQ44JXL2VFH+CyAZjP5mbSr2wBk1pAT15lF/pO5qDFrQh/R2KyZigiesAdwyfQxy2+S3bwVGdniXXrS4bmtMFH1FyZ31P3V/x7/MoO5Jnw8U+573PyhdQGD3sePlFdwVWW2bEfQDxWR4p9D299Xelj1LBDXoZ3xYSdWHNBn65H0InVrsCD8wJ+irwH3eyE4dun2InGujDitnTv6ys4h3rg/pWhxffsBxHvNbbygFcEdn00O9gKH1GQ+0BUaZ7zXiYsgXdwT6jaRPsMZiJkAbL4Y4J3il+/UjJ+XgDcmrUHfln8VMng+/0geH3QTO7+IbPar7oHVhAXfVYgk60PXAq7vTS6tkDNaRt+joaf4QXo6m0p8HiHoeco/NKayGsm7NB77CFd+Bhq07OH8vUFEJidnDbgzJbogxidJaB/7oDYiBJ/mrHH4gXAHHRjR7vE+Exz/2Anoo9gjknJ2K5cfiT+B82ey9fPwNAdRZD5HbzdLuUcLnWxx2ArtYN5BZOxZuD7Nz+R0VMluNOQ4yjwRDI/fhrIExdP7FLHwG1z+bRfAE05GOZVoolrDclC+HfYCn4rryAeLwD1E/T4vZtDDjeFCn66AojXhINPQdMcrWDvGBtai9MDvL2igo+MnYrRgoieweSe8RZeXYGqFhD60nsZ7mvMnwOv369JlnArsGmKaAsa2PFA4TE8VufqOYLvQ+jqwmfc2UP4IV8QwGnvgNyF9s7+/zuYFbcLv1cDawOvw9cPvp1EoWYG2J9oxhE94ARNV0AEnrhqCUJPtVostwvgyYLkBeT6PWFX7Fbz2AsIvsHdGsDTu5SRVZ5HDbG9gfLAGJ/c2voodtvVyvS00D1jePCzAtAJVu7ou0VWgL0GJluYwhObzMJ/c/kUxOGGPH7UhF7sDGf0FHgS7SsYcYBPVA8coqQaeNe/6V020Ihm7hiIFwTzFUHuRq8/g1k9fONHwg89LXaoNaT8+ESB/Fjgpb3H/sy3yRUKfsHv3faN3m4f3j5s325dRBP8ZEFS3L2mnD3UDnCOCX4yC72PqR7lRFugvQZs8jUbkI3PUfDVH2XRG//6YZs86HxCTSh/bcVtk+I3do4I/MTkrrFMT5hWegEF3+IT29hK5NsPPPZHK/B995x8fYZacoMe+4sAHm8pTbGzhgVu2CdryArSpeBjMl0A+A15mTA47KGHPYmR9dnjIP3x8fMTjE8YcpoSswu73iqY+MgPgA8icCJ0DmnbgmOSHfwhrIxS0IaiIJqvgAoF/SlaLE2ggSrSDYhdRfe/lZ6ZDF7NM3Rm7r3P/p3Rtjshe7UdxKVuif8LNxV8UOFHQfdiww09S5cB+C9TAh59e/KnA1Pnhp/IBETvVrufux38O0IJqUB+V/s/Q1fktu8ds39zSUueyKORjZ1IPNQAL6jFLvzMsoVvMjG1d+B9gi4n6CiH2ynvNEYPfVsBwcTqip9g0O++OA0saxjv97+OOMc/vDDASuCFrSZYYNukEdxltfAmk/uBj3Bzj3FqCH/RY34C4neY9pcAfzXR5ct3sN8wx0b3wyn4UZuvXxoZV2D8krid4Df0jBJyVqP8Ao7wE/ND7Rj+iHck7Hmg8Lf4qSD8FAC+kxJQve5OOhB7MsKvyCM14L+tDA/4iWH7wSjhD/5pFR9wl6ALq1Jnp72DH1x9tFLBu9LCx38Xu3z1BR7dK+OvXyBzKAF6j8AJvvsnoOcCHZ94BpoJul/fNIgHWzMt0HGO4p8A57UFsR/3jOG5kDfoxCN+0nTQhd4b5ZRGGsAjBZjbMbw7gDxG7AjyzAn9hfbEsOdlfMPnzJliqDVxjrFRbt7mdg2z9spCxk/sV3XBX9NYHhnxW38TFP7AmzfHKnodAjB5rmjK8cLpIOwoJxKyrex57I/7PVv4TCujE0xK3Uf8J/P8tHKjasF2TiPo+ihsnEQpAebCn+Y1MXhiyNH80+Tg6qC0SwskNj0luAxM3vCzmx9Ct/7Vk3Dn1fJ7TtjL1ND7tapJzBy/i55tE3N/Y30zPctTCnzhS7tcvzXuYaHgx20B3z14JJae4xq9yBMcdp+zT6sJO3bATxObZ5QSFNsru/C93o3YVQFqO6h/ErWWBYBvG1s9UINWHq86e5tb0GdlHuijhj4yMDrhVpBX7Fk3m2yPDkYwy8VeHeB6NRWw5O6Nm2VsXU5scZizxn4u6XQOvoxYeRPpigFnT/FqCccc5TbN0IxSMj/R7LfGZm/DHhX8fNsOXEChIw6DBf5cfhDTR+I3/ih6YJGWj42yr4pNBdfrNHtiSKub7YUoQbkRxo+Z/8aKt7QgfDZpBTzzsYTO8JjIUahRajh7zvPCIeXFCTUrvmZmbKA5No9pLmK1BahziaC9WaaHmsXosSWiTw1ob5OmCOjj9yI6qO1GwUcw86ICDqgMqofpI9PD7TegvJFf4JIsf4yTAZve3ByWHXqUveVuMdkzkJeMv68Gmg4IJq8FSJxWoSexV9JK3FePwdmmb2RuXR24UVYexh8Mb/yih5oJP9vrqLOoIaftgMRWF/b/wRf9ioLNKUstvGXy66A16cHS2KCTrNCXQq+pCjylwOdhL3uwSbdGX9z68BWbXteJHgSLF4UfdMLytJogj+dAz0iCJoyMWL5rPbA3xv9cQnnl70P3Cv2VPO2cv3/9auq4GsCiZ2Hn+ng8BP+4OlqZV5nbm4DOIBaaMOikrMyP0mYOs91EtLCm4Pu0JXTFnlP8uqqAJXM8yPAEo3MyV0CySE3RBz8r+EaPbiQPbv0UeqDt56IDecvaxvkdNHqWsFBX375IOawcmB3Mth8aGuAaOR0E3jsT7OjiIQa7mJmVKQW9hRf9sOGaO0u28mmLaUAXZQdfU14UAGv5g8JOMDE+l4O0Ah/+y/Vxka8XL0zk4XIZOAwlsNgruh0Y9m3oh+EAPO7726Yf+psNcLGX/v93Yk9eaujW4eEmwkahPzOKp1W4WRQReIKMbHxObP6mBch7TA7zEe7QI7FvNj3e8OLy8VW3gGv5aD7x+7BdQLF/1kPz6qRld/I0M0e7NHhhrfAbmcFzanT6w6H3DHjDvc09pIm00KqqgLZtQYNJt87+yFnwf1HiAvYmhs7VK+QkDyYx72G4wJ5Y+TD0B8yRD95eaEMNbHlg5PUSvO2mA5fQreF/IQL2Zpkd5q8GdzRY8KzwBzr0peAfMBm4cmXAJAf0XMUV9Iw72Bw2vNIEs/DK7yA1NOo+ceN65SF4mDP25Qt+sGRwWcTgLf0hYYrdk10CF/ULp4b0oEsTfZook4+qnwF7tYB3cMTSDTi7eriwWcQmXp4feIFfTxK3HbTqPXafS9aVPlZbQClhUQCkdiJ4zA51DjIwKUPs5AH+0y5Df3j4x2kZJacNBjHYwXbjPrjjCQcIM3AJ7n+xflI1LMPPH0MlrXbtPklx2p6+MO8SE2uDIzFXGPnWapOHqPsh2EMX8MfMqvgtEj9+wk5mLsGp/3gFvr+0cBSDlqzFkrmqCi7bL0zyOH4Xv7Ng5ztI/t9DYueHbevjFJk5kMH2VHAz6e+SxyRQNTivxciuqcJuUsKihS+Kz9HW0P61wLQdZKuA8CH9N/TKODuTVSTrN94F8c+n8wlhquGKnRX5DIH8SuIzrs3EcIkSnB4mPkUY7iDs4HfZsxqGhPZq4jM+LOakrbg2BmDIyA4S2YLg9JVL+NJA52auN4EUsRAeXhfcBtICkVFWGmDa/EiUhQALhrvMcRgJXnmkAUhwnOFBlLCsyl4CKSEgsN35TWR7isUWpgfcZVzTguEi+t9CsVPAHUE1QVhT6b1CB84pXDQwFYQV3fsr9zUKEWD10schSvrCr7gNKbC93wJ6WkAL8hkXnSi8aJwYE72BYl7MR1zrsCGNcyP4rIIJpgNtlA6YFr8i8EoNw7eTI1tTwCUeynIpcQbUXdlPLNSBsk9eROa6Yk1uiPSQ8FN9EoiBnRZMb0rAnvdAARD1cCkCmXN+I63EFs9hrcSP9zEp/+bQutG/BoRbCTkWfEkJ2sjs1WBh4jMM/mXvB7fJ63oEFQQVPrElx980Wfck73bdWKLgw/dGWvMRiwtZoBYwcnV6qBrQQwENjuEFu6CE7iPRZZt2uHmMjWtDgBVNG9lZETzLAIYYH/UFAHtOlxCogh9LMFGI2gKSk+whJ+90UEOQK9gQrAMr2vAKjrGcmNOLH7/FDTlmUpsAb+D8S5Vg5gapod8EU0wBx3s6rw0dta0QyHxv1i16roqNYl0QNBOf52neZiXBUgJEO0gTMsDm6LZQM5C3eNSUOT8sGdvxuB4v63HDvJC5MUkPUaBrtwZH5yC+LbFn07b9FL+ue6Kdr+G+gOqAsDFUUGDlPbJWnhSeCtYNAzxiAS83hDFPMXsQVHwfqUDJuT0qId8Esu0WsYQS1isiBQTf8S5WE5EXA7gq4GBDlogg0Cq2FUjAwUMrNknPML1Xg097W8Xg0D/HZkJU0UXJ1mKDeI4RH3G0bePIENCaxxmwq4FCniZP0fD5zm+FDMkKg+L3sfb5EzbZWHQFfjeqBhYjbYgqxnVmzyOarfTAxBukhWDnc8iuJgy2CnjAJ8SJiLQqsWcfIzJBPG+Ql12J7RovlwCVGN9Fkoe5J6aPKgKZQ5MeFVfM888Nbk2DepXsJgoj3eWOb8y+oaRvAEciYvabsBk/17DUsQz/EqOW9Xa1fUqYB3oVD6HjBzwmaVTB43U5eeLncTYB+c09TMgUfAGs38OQL/6OUSypQRLnyDpEI8ZHYFML4U1EPJBSK8FhW0GQ3wjDyet8DWkhRWh6GOpHjURHz1T49iIoRBy8GnWOvMJVAZtJ/upBTbCQiJK+i4R/v4dkD2W5BHYwJLzWq3Bu6DOCq66Vw4LJ7TbGTyV2BYarIL6U+Cy0j/oyYGH/XwqLsUFEAQR/B4mOMBRaQuWvJ9JibkRrZGvcQpEqSq/V8M4XMWVpTKSH4cXYH5CQDNDNpIIKLVoJX7vejd4JrLX6DmVWTmY3fV2vN5ELDr28TLGeix+HD7l1kHhRDYhGVpA/9ReRKTizXSbgO5h7r1/9r8StAIeM2swRE9T77IN00B/god5UbNjHKAUPJ3z3N6KD5wV8tNmzbikz1o3CIaNHO5Gd/TNzwMT/wfh+E238uYiaNsb5b3tloNsgEMNQM/7/n3c1LsEXHeGG1K7TXtKQ0FaqTaBYdP27iHyM2I5GtxaqFN5aeXMSJS49jes02YxWse8zCTWOL0HCT1E5K5HiZyrch2XCCzWqXIsbbgBPyYrj0iP0TRIrEKPjwksnJDY/MG0vlIJnKtpyQ8qFFGNS9bwvgW9LzVqcySdPDIAuNA+safHBI2ltApe1M2PqgnSfIJN2rH08Sod2pRX0cv3SI17C31HszVUjfFSGLxv+KcF3azOyJV62bAB6uIVMZKnYW4aSRepxph8DE6IJ8Swkb0bcQw7nKWI/cJRICRSzQ2UjJF55zpUnQ/bCzGBQbfr2z93gT6MOyZ1mLH45hrKBwomxQS3URjTy32zyZOwLXkCYwDFWruKrMKXF3nkqmP3k4OU07dQPI+7Ce4RO6/1wTLybJUIj4RHT6n1IZP3vN2BAPH7jpmEQ9ff5vQbY/2xGliBsyKYAn21AaY6aGtnECncKH2rAjE1/W+M/t/kGwbO2XpPf9gAAAAAASUVORK5CYII="}}}]); \ No newline at end of file diff --git a/js/addon-entry-better-img-uploads.2ca5d043b5110404db52.js b/js/addon-entry-better-img-uploads.2ca5d043b5110404db52.js new file mode 100644 index 0000000..d200910 --- /dev/null +++ b/js/addon-entry-better-img-uploads.2ca5d043b5110404db52.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[6],{1715:function(L,M,j){(L.exports=j(9)(!1)).push([L.i,'[data-for*="HD Upload"]:hover + .__react_component_tooltip {\n visibility: visible;\n}\n\n.sa-better-img-uploads-btn:not([id*="_right"]) + .__react_component_tooltip {\n left: auto;\n}\n\n.sa-better-img-uploads-btn[id*="_right"] + .__react_component_tooltip,\n[data-for="sa-Choose_a_Backdrop-HD Upload"] + .__react_component_tooltip {\n right: auto;\n}\n',""])},1774:function(L,M,j){"use strict";j.r(M),j.d(M,"resources",(function(){return S}));var u=j(1715);const S={"userscript.js":async function({addon:L,console:M,msg:j}){let u=L.settings.get("fitting");L.settings.addEventListener("change",()=>{u=L.settings.get("fitting")});const S=(M,u)=>{const S=j("upload"),t=Object.assign(document.createElement("div"),{id:M}),N=Object.assign(document.createElement("button"),{className:"".concat(L.tab.scratchClass("action-menu_button")," ").concat(L.tab.scratchClass("action-menu_more-button")," sa-better-img-uploads-btn"),currentitem:"false"});N.dataset.for="sa-".concat(M,"-HD Upload"),N.dataset.tip=S;const D=Object.assign(document.createElement("img"),{className:"".concat(L.tab.scratchClass("action-menu_more-icon")," sa-better-img-uploader"),draggable:"false",src:L.self.getResource("/icon.svg"),height:"10",width:"10"});N.append(D);const y=Object.assign(document.createElement("input"),{accept:".svg, .png, .bmp, .jpg, .jpeg",className:"".concat(L.tab.scratchClass("action-menu_file-input")," sa-better-img-uploads-input"),multiple:"true",type:"file"});N.append(y),t.append(N);const w=Object.assign(document.createElement("div"),{className:"__react_component_tooltip place-".concat(u?"left":"right"," type-dark ").concat(L.tab.scratchClass("action-menu_tooltip")," sa-better-img-uploads-tooltip"),id:"sa-".concat(M,"-HD Upload"),textContent:S});return w.dataset.id="tooltip",t.append(w),L.tab.displayNoneWhileDisabled(t),[t,N,y,w]};for(;;){const M='[class*="sprite-selector_sprite-selector_"] [class*="action-menu_more-buttons_"]',j='[class*="stage-selector_stage-selector_"] [class*="action-menu_more-buttons_"]',u='[data-tabs] > :nth-child(3) [class*="action-menu_more-buttons_"]';let y=await L.tab.waitForElement("".concat(M,", ").concat(j,", ").concat(u),{markAsSeen:!0,reduxCondition:L=>!L.scratchGui.mode.isPlayerOnly,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE","scratch-gui/navigation/ACTIVATE_TAB"]}),w=y.parentElement.previousElementSibling.previousElementSibling,A=w.getAttribute("aria-label").replace(/\s+/g,"_"),x=w.parentElement.classList.contains(L.tab.scratchClass("sprite-selector_add-button"))||w.parentElement.classList.contains(L.tab.scratchClass("stage-selector_add-button"));x&&(A+="_right");const[E,i,z,T]=S(A,x);function t(L,M,j,u){let S=j.getBoundingClientRect();T.style.top=S.top+2+"px",T.style[u?"right":"left"]=u?window.innerWidth-S.right+S.width+10+"px":S.left+S.width+"px"}y.prepend(E),i.addEventListener("click",L=>{L.stopPropagation(),z.files=new D,z.click()}),z.addEventListener("change",L=>{N(L,A)}),new MutationObserver(()=>t(A,y,E,x)).observe(y,{attributes:!0,subtree:!0})}async function N(L,M){let j=M,S=L.target,t=Array.from(S.files),N=new Array;for(let L of t){if(L.type.includes("svg")){N.push(L);continue}let M=await new Promise(M=>{let j=new FileReader;j.addEventListener("load",()=>M(j.result)),j.readAsDataURL(L)}),j=new Image;j.src=M,await new Promise(L=>{j.onload=L});let S={width:j.width,height:j.height};const t=JSON.parse(JSON.stringify(S));function y(L,M){if(L<=479&&M<=360)return{width:L,height:M};if(L<=479&&M<=360)return{width:L,height:M};const j=L/M;return j>=479/360?{width:479,height:Math.floor(479/j)}:{width:Math.floor(360*j),height:360}}"fit"===u?S=y(S.width,S.height):"fill"===u&&(S.height=S.height/S.width*480,S.width=480,S.height<360&&(S.width=S.width/S.height*360,S.height=360),S.width<480&&(S.height=S.height/S.width*480,S.width=480)),N.push(new File(['\n \n \n \n \n \n ')],"".concat(L.name.replace(/(.*)\..*/,"$1"),".svg"),{type:"image/svg+xml"}))}(S=document.getElementById(j).nextElementSibling.querySelector("input")).files=new D(N),S.dispatchEvent(new L.constructor(L.type,L))}function D(L=[]){let M=new DataTransfer;for(let j of L)M.items.add(j);return M.files}},"style.css":j.n(u).a,"icon.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjY0MCI+PGRlZnM+PHBhdGggZD0iTTAgMGg2NDN2NjQzSDBWMHoiIGlkPSJhIi8+PHBhdGggZD0ibTUyMC41NyAzMzkuMjggMS4zNS4xOSAxLjMzLjI0IDEuMzEuMjkgMS4zLjM0IDEuMjYuMzggMS4yNS40NCAxLjIyLjQ4IDEuMi41MyAxLjE3LjU3IDEuMTQuNjEgMS4xMi42NiAxLjA4LjY5IDEuMDYuNzQgMS4wMi43OC45OS44Mi45Ni44NS45My44OS44OS45Mi44NS45Ni44Mi45OS43NyAxLjAzLjc0IDEuMDUuNyAxLjA5LjY2IDEuMTEuNjEgMS4xNS41NyAxLjE3LjUzIDEuMTkuNDggMS4yMy40MyAxLjI0LjM5IDEuMjcuMzQgMS4yOS4yOSAxLjMxLjI0IDEuMzQuMTkgMS4zNS4xMyAxLjM3LjA4IDEuMzkuMDMgMS40djczLjlsLS4wOSA0LjI1LS4yNSA0LjItLjQyIDQuMTYtLjU5IDQuMTEtLjc0IDQuMDYtLjkgNC0xLjA2IDMuOTUtMS4yIDMuODgtMS4zNSAzLjgxLTEuNSAzLjc1LTEuNjMgMy42Ny0xLjc3IDMuNi0xLjkgMy41Mi0yLjA0IDMuNDMtMi4xNiAzLjM1LTIuMjggMy4yNi0yLjQgMy4xNi0yLjUyIDMuMDctMi42MyAyLjk3LTIuNzUgMi44Ny0yLjg1IDIuNzYtMi45NSAyLjY1LTMuMDUgMi41My0zLjE1IDIuNDItMy4yNCAyLjMtMy4zNCAyLjE4LTMuNDIgMi4wNC0zLjUgMS45Mi0zLjU4IDEuNzktMy42NiAxLjY0LTMuNzQgMS41MS0zLjggMS4zNi0zLjg3IDEuMjEtMy45NCAxLjA3LTMuOTkuOTEtNC4wNS43NS00LjExLjU5LTQuMTUuNDMtNC4yLjI1LTQuMjUuMDlIMTkzLjQ3bC00LjI4LS4wOS00LjI0LS4yNS00LjE4LS40My00LjEzLS41OS00LjA4LS43NS00LjAyLS45MS0zLjk2LTEuMDctMy44OS0xLjIxLTMuODItMS4zNi0zLjc2LTEuNTEtMy42OC0xLjY0LTMuNi0xLjc5LTMuNTEtMS45Mi0zLjQ0LTIuMDQtMy4zNS0yLjE4LTMuMjUtMi4zLTMuMTYtMi40Mi0zLjA3LTIuNTMtMi45Ni0yLjY1LTIuODYtMi43Ni0yLjc1LTIuODctMi42NC0yLjk3LTIuNTItMy4wNy0yLjQxLTMuMTYtMi4yOS0zLjI2LTIuMTYtMy4zNS0yLjA0LTMuNDMtMS45MS0zLjUyLTEuNzctMy42LTEuNjQtMy42Ny0xLjQ5LTMuNzUtMS4zNS0zLjgxLTEuMjEtMy44OC0xLjA1LTMuOTUtLjkxLTQtLjc0LTQuMDYtLjU5LTQuMTEtLjQyLTQuMTYtLjI1LTQuMi0uMDktNC4yNXYtNzMuOWwuMDMtMS40LjA4LTEuMzkuMTQtMS4zNy4xOS0xLjM1LjI1LTEuMzQuMy0xLjMxLjM0LTEuMjkuNC0xLjI3LjQ1LTEuMjQuNDktMS4yMy41My0xLjE5LjU5LTEuMTcuNjItMS4xNS42Ny0xLjExLjcxLTEuMDkuNzUtMS4wNS43OC0xLjAzLjgzLS45OS44Ni0uOTYuOS0uOTIuOTMtLjg5Ljk3LS44NSAxLS44MiAxLjAyLS43OCAxLjA2LS43NCAxLjA5LS42OSAxLjEyLS42NiAxLjE0LS42MSAxLjE3LS41NyAxLjE5LS41MyAxLjIxLS40OCAxLjI0LS40NCAxLjI1LS4zOCAxLjI4LS4zNCAxLjMtLjI5IDEuMzEtLjI0IDEuMzMtLjE5IDEuMzQtLjEzIDEuMzYtLjA5IDEuMzctLjAyIDEuMzcuMDIgMS4zNi4wOSAxLjM1LjEzIDEuMzMuMTkgMS4zMS4yNCAxLjI5LjI5IDEuMjguMzQgMS4yNi4zOCAxLjIzLjQ0IDEuMjIuNDggMS4xOS41MyAxLjE3LjU3IDEuMTQuNjEgMS4xMS42NiAxLjA5LjY5IDEuMDYuNzQgMS4wMy43OCAxIC44Mi45Ni44NS45NC44OS44OS45Mi44Ny45Ni44Mi45OS43OSAxLjAzLjc1IDEuMDUuNzEgMS4wOS42NyAxLjExLjYyIDEuMTUuNTggMS4xNy41NCAxLjE5LjQ5IDEuMjMuNDUgMS4yNC4zOSAxLjI3LjM1IDEuMjkuMyAxLjMxLjI0IDEuMzQuMTkgMS4zNS4xNCAxLjM3LjA5IDEuMzkuMDMgMS40djczLjlsLjAzIDEuNDguMDkgMS40NS4xNCAxLjQ1LjIxIDEuNDMuMjYgMS40MS4zMSAxLjQuMzcgMS4zNy40MiAxLjM1LjQ4IDEuMzQuNTIgMS4zMS41NyAxLjI4LjYyIDEuMjYuNjcgMS4yMy43MSAxLjIxLjc2IDEuMTcuOCAxLjE1Ljg1IDEuMTEuODggMS4wOC45MiAxLjA1Ljk3IDEgMSAuOTggMS4wNC45MyAxLjA3LjkgMS4xMS44NSAxLjE0LjgxIDEuMTcuNzcgMS4yMS43MiAxLjIzLjY4IDEuMjYuNjMgMS4yOS41OSAxLjMyLjUzIDEuMzQuNDggMS4zNy40MyAxLjM5LjM4IDEuNDEuMzIgMS40My4yNyAxLjQ1LjIxIDEuNDcuMTUgMS40OS4wOSAxLjUxLjAzaDI1My41MWwxLjQ3LS4wMyAxLjQ2LS4wOSAxLjQ0LS4xNSAxLjQyLS4yMSAxLjQxLS4yNyAxLjM5LS4zMiAxLjM2LS4zOCAxLjM1LS40MyAxLjMyLS40OCAxLjI5LS41MyAxLjI4LS41OSAxLjI0LS42MyAxLjIyLS42OCAxLjE5LS43MiAxLjE2LS43NyAxLjEzLS44MSAxLjA5LS44NSAxLjA3LS45IDEuMDMtLjkzLjk5LS45OC45NS0xIC45Mi0xLjA1Ljg4LTEuMDguODQtMS4xMS43OS0xLjE1Ljc2LTEuMTcuNzEtMS4yMS42Ni0xLjIzLjYyLTEuMjYuNTctMS4yOC41Mi0xLjMxLjQ3LTEuMzQuNDItMS4zNS4zNy0xLjM3LjMxLTEuNC4yNi0xLjQxLjIxLTEuNDMuMTQtMS40NS4wOS0xLjQ1LjAzLTEuNDh2LTczLjlsLjAzLTEuNC4wOS0xLjM5LjE0LTEuMzcuMTktMS4zNS4yNC0xLjM0LjMtMS4zMS4zNS0xLjI5LjM5LTEuMjcuNDUtMS4yNC40OS0xLjIzLjU0LTEuMTkuNTgtMS4xNy42Mi0xLjE1LjY3LTEuMTEuNzEtMS4wOS43NS0xLjA1Ljc5LTEuMDMuODItLjk5Ljg3LS45Ni44OS0uOTIuOTQtLjg5Ljk2LS44NSAxLS44MiAxLjAzLS43OCAxLjA2LS43NCAxLjA5LS42OSAxLjExLS42NiAxLjE0LS42MSAxLjE3LS41NyAxLjE5LS41MyAxLjIyLS40OCAxLjIzLS40NCAxLjI2LS4zOCAxLjI4LS4zNCAxLjI5LS4yOSAxLjMxLS4yNCAxLjMzLS4xOSAxLjM1LS4xMyAxLjM2LS4wOSAxLjM3LS4wMiAxLjQuMDIgMS4zOS4wOSAxLjM3LjEzem0tMTI2LjQ2LTY0LjM2LjUxLjAxLjUxLjAxLjUxLjAxLjUxLjAxLjUxLjAxLjUxLjAyLjUxLjAyLjUxLjAyLjUxLjAyLjUxLjAyLjUxLjAzLjUxLjAyLjUxLjAzLjUxLjAzLjUxLjAzLjUxLjA0LjUxLjAzLjUxLjA0LjUxLjA0LjUxLjA0LjUxLjA0LjUxLjA1LjUuMDQuNTEuMDUuNTEuMDUuNTEuMDUuNTEuMDYuNS4wNS41MS4wNi41MS4wNi41MS4wNi41LjA2LjUxLjA3LjUxLjA3LjUuMDYuNTEuMDcuNDEuMDYuNDEuMDYuNDEuMDYuNDEuMDcuNDEuMDYuNDEuMDcuNDEuMDcuNDEuMDcuNDEuMDcuNDEuMDcuNDEuMDcuNC4wOC40MS4wNy40MS4wOC40MS4wOC40LjA4LjQxLjA5LjQxLjA4LjQuMDkuNDEuMDguNC4wOS40MS4wOS40LjEuNDEuMDkuNC4wOS40MS4xLjQuMS40LjEuNDEuMS40LjEuNC4xMS40LjEuNC4xMS40LjExLjQuMTEuNC4xMS40LjExLjQuMTEuNC4xMi40LjEyLjQ5LjE0LjQ5LjE1LjQ5LjE1LjQ5LjE2LjQ5LjE2LjQ4LjE2LjQ5LjE2LjQ4LjE3LjQ4LjE3LjQ5LjE4LjQ4LjE3LjQ3LjE4LjQ4LjE4LjQ4LjE5LjQ3LjE5LjQ4LjE5LjQ3LjIuNDcuMTkuNDcuMjEuNDcuMi40Ny4yMS40Ny4yMS40Ni4yMS40Ny4yMi40Ni4yMi40Ni4yMi40Ni4yMi40Ni4yMy40NS4yMy40Ni4yNC40NS4yMy40NS4yNC40Ni4yNS40NC4yNC40NS4yNS40NS4yNS40NC4yNi40NS4yNS40NC4yNi40NC4yNy4yNS4xNS4yNS4xNS4yNS4xNi4yNS4xNS4yNS4xNi4yNC4xNi4yNS4xNi4yNC4xNi4yNS4xNi4yNC4xNi4yNS4xNy4yNC4xNi4yNC4xNy4yNS4xNi4yNC4xNy4yNC4xNy4yNC4xNy4yNC4xNy4yMy4xNy4yNC4xNy4yNC4xOC4yMy4xNy4yNC4xOC4yMy4xNy4yNC4xOC4yMy4xOC4yMy4xOC4yNC4xOC4yMy4xOC4yMy4xOC4yMy4xOC4yMi4xOS4yMy4xOC4yMy4xOS4yMi4xOS4yMy4xOS4yMi4xOC4yMy4yLjIyLjE5LjIyLjE5LjUyLjQ2LjUyLjQ2LjUxLjQ3LjUuNDguNS40OC41LjQ4LjQ4LjQ5LjQ5LjQ5LjQ4LjUuNDcuNTEuNDcuNS40Ni41Mi40Ni41Mi40NS41Mi40NC41Mi40NC41NC40NC41My40My41NC40Mi41NS40Mi41NS40MS41NS40MS41Ni40LjU2LjQuNTYuMzkuNTcuMzguNTguMzguNTcuMzcuNTkuMzcuNTguMzYuNTkuMzUuNi4zNS41OS4zNC42LjMzLjYxLjMzLjYxLjMzLjYxLjMxLjYxLjMyLjYyLjMuNjMuMy42Mi4wNC4xLjA1LjA5LjA0LjA5LjA1LjEuMDQuMDkuMDUuMS4wNC4wOS4wNC4wOS4wNS4xLjA0LjA5LjA1LjEuMDQuMDkuMDQuMS4wNS4wOS4wNC4wOS4wNC4xLjA0LjA5LjA1LjEuMDQuMDkuMDQuMS4wNS4wOS4wNC4xLjA0LjA5LjA0LjEuMDQuMDkuMDUuMS4wNC4wOS4wNC4xLjA0LjA5LjA0LjEuMDQuMS4wNC4wOS4wNC4xLjA1LjA5LjA0LjEuMDQuMDkuMDQuMS4wNC4wOS4wNC4xLjA0LjEuMTcuNDIuMTcuNDIuMTYuNDMuMTcuNDIuMTYuNDMuMTYuNDMuMTYuNDIuMTUuNDMuMTUuNDMuMTUuNDMuMTUuNDMuMTUuNDQuMTQuNDMuMTQuNDMuMTQuNDQuMTMuNDMuMTMuNDQuMTMuNDMuMTMuNDQuMTMuNDQuMTIuNDQuMTIuNDQuMTIuNDQuMTEuNDQuMTEuNDQuMTEuNDQuMTEuNDUuMTEuNDQuMS40NC4xLjQ1LjEuNDQuMDkuNDUuMS40NC4wOC40NS4wOS40NS4wOS40NS4wOC40NS4wOC40NC4wOC40NS4wNy40NS4xMS42Ny4xMS42Ny4xLjY2LjA5LjY2LjA5LjY1LjA4LjY1LjA4LjY1LjA3LjY0LjA2LjYzLjA3LjYyLjA2LjYyLjA1LjYxLjA1LjYuMDUuNTkuMDQuNTguMDQuNTcuMDMuNTYuMDQuNTQuMDMuNTQuMDIuNTIuMDMuNTEuMDIuNS4wMi40OC4wMi40Ny4wMS40NS4wMi40My4wMS40Mi4wMS40MS4wMS4zOC4wMS4zNy4wMS4zNS4wMS4zMi4wMS4zMXYuMjlsLjAxLjI3LjAxLjI1LjAxLjIyLjAxLjIxLjAxLjE4LjAxLjE1djEuMzNsLS4wMS40NXYuNDRsLS4wMS40NC0uMDEuNDUtLjAxLjQ0LS4wMS40NC0uMDIuNDUtLjAxLjQ0LS4wMi40NC0uMDIuNDUtLjAyLjQ0LS4wMi40NC0uMDMuNDUtLjAyLjQ0LS4wMy40NC0uMDMuNDQtLjAzLjQ1LS4wMy40NC0uMDQuNDQtLjA0LjQ0LS4wMy40NC0uMDQuNDUtLjA0LjQ0LS4wNS40NC0uMDQuNDQtLjA1LjQ0LS4wNC40NC0uMDUuNDQtLjA2LjQ0LS4wNS40NC0uMDUuNDQtLjA2LjQ0LS4wNi40NC0uMDYuNDQtLjA2LjQ0LS4wNi40NC0uMDcuNDQtLjExLjcyLS4xMi43MS0uMTIuNy0uMTMuNjktLjEzLjY3LS4xMy42Ni0uMTMuNjQtLjE0LjY0LS4xNC42Mi0uMTQuNjEtLjE1LjU5LS4xNC41OC0uMTUuNTYtLjE0LjU2LS4xNS41My0uMTQuNTMtLjE1LjUxLS4xNC40OS0uMTUuNDgtLjE0LjQ3LS4xNC40NS0uMTMuNDQtLjE0LjQyLS4xMy40LS4xMy4zOS0uMTIuMzgtLjEyLjM2LS4xMi4zNC0uMTEuMzMtLjExLjMxLS4xLjI5LS4xLjI4LS4wOS4yNi0uMDguMjUtLjA4LjIzLS4wNy4yMS0uMDYuMi0uMDYuMTctLjA1LjE2LS4wNC4xNS0uMDMuMDgtLjAxLjAyLS4wMy4wOC0uMDIuMDYtLjAxLjA0LS4wMy4wNS0uMDIuMDctLjAyLjA0LS4wMi4wNi0uMDEuMDMtLjIxLjUxLS4yLjUxLS4yMS41LS4yMi41MS0uMjEuNS0uMjMuNS0uMjIuNS0uMjMuNS0uMjMuNDktLjI0LjUtLjI0LjQ5LS4yNS40OS0uMjQuNDgtLjI2LjQ5LS4yNS40OC0uMjYuNDktLjI2LjQ4LS4yNy40Ny0uMjcuNDgtLjI3LjQ3LS4yOC40Ny0uMjguNDctLjI5LjQ3LS4yOS40Ni0uMjkuNDctLjI5LjQ2LS4zLjQ1LS4zLjQ2LS4zMS40NS0uMzEuNDUtLjMxLjQ1LS4zMi40NS0uMzIuNDQtLjMyLjQ1LS4zMy40My0uMzMuNDQtLjM0LjQ0LS4zMy40My0uMzUuNDMtLjM0LjQyLS4xNS4xOS0uMTYuMTktLjE2LjE4LS4xNS4xOS0uMTYuMTgtLjE2LjE5LS4xNi4xOC0uMTYuMTktLjE2LjE4LS4xNi4xOC0uMTYuMTgtLjE2LjE4LS4xNi4xOC0uMTcuMTgtLjE2LjE4LS4xNy4xOC0uMTYuMTgtLjE3LjE3LS4xNy4xOC0uMTYuMTgtLjE3LjE3LS4xNy4xOC0uMTcuMTctLjE3LjE3LS4xNy4xOC0uMTcuMTctLjE3LjE3LS4xOC4xNy0uMTcuMTctLjE3LjE3LS4xOC4xNy0uMTcuMTctLjE4LjE2LS4xOC4xNy0uMTcuMTctLjE4LjE2LS4xOC4xNy0uMTguMTYtLjE4LjE2LS4xOC4xNy0uNS40NC0uNS40NC0uNTEuNDMtLjUxLjQzLS41Mi40Mi0uNTIuNDItLjUyLjQxLS41My40MS0uNTMuNC0uNTMuNC0uNTQuMzktLjU0LjM5LS41NC4zOC0uNTUuMzgtLjU1LjM4LS41NS4zNy0uNTYuMzYtLjU2LjM2LS41Ni4zNS0uNTcuMzUtLjU3LjM0LS41Ny4zNC0uNTguMzMtLjU4LjMzLS41OC4zMi0uNTguMzItLjU5LjMxLS41OS4zMS0uNTkuMy0uNi4yOS0uNi4yOS0uNi4yOS0uNjEuMjgtLjYuMjctLjYxLjI3LS42Mi4yNy0uNjEuMjUtLjYyLjI2LS42Mi4yNC0uNjIuMjQtLjEyLjA1LS4xMi4wNS0uMTIuMDQtLjEzLjA1LS4xMi4wNS0uMTIuMDQtLjEyLjA1LS4xMi4wNC0uMTIuMDUtLjEzLjA1LS4xMi4wNC0uMTIuMDUtLjEyLjA0LS4xMi4wNS0uMTIuMDQtLjEzLjA1LS4xMi4wNC0uMTIuMDQtLjEyLjA1LS4xMy4wNC0uMTIuMDQtLjEyLjA1LS4xMi4wNC0uMTMuMDQtLjEyLjA1LS4xMi4wNC0uMTMuMDQtLjEyLjA0LS4xMi4wNS0uMTIuMDQtLjEzLjA0LS4xMi4wNC0uMTIuMDQtLjEzLjA0LS4xMi4wNC0uMTIuMDQtLjEzLjA0LS4xMi4wNS0uMTIuMDQtLjEzLjA0LS41NC4xNy0uNTQuMTYtLjU1LjE3LS41NC4xNi0uNTUuMTYtLjU0LjE2LS41NS4xNS0uNTQuMTUtLjU1LjE1LS41NS4xNC0uNTUuMTQtLjU1LjE0LS41NS4xNC0uNTUuMTMtLjU2LjEzLS41NS4xMi0uNTUuMTMtLjU2LjEyLS41NS4xMi0uNTYuMTEtLjU1LjExLS41Ni4xMS0uNTYuMTEtLjU1LjEtLjU2LjEtLjU2LjEtLjU2LjA5LS41Ni4wOS0uNTYuMDktLjU2LjA5LS41Ni4wOC0uNTYuMDgtLjU3LjA4LS41Ni4wNy0uNTYuMDctLjU3LjA3LS41Ni4wNi0uNTYuMDYtLjU3LjA2LS41Ni4wNi0uMzMuMDMtLjMzLjAzLS4zMy4wMy0uMzMuMDMtLjMzLjAzLS4zMy4wMy0uMzMuMDItLjMzLjAzLS4zMy4wMi0uMzMuMDMtLjMzLjAyLS4zMy4wMy0uMzMuMDItLjMzLjAyLS4zMy4wMi0uMzMuMDItLjMzLjAyLS4zMy4wMi0uMzMuMDEtLjMzLjAyLS4zMy4wMi0uMzQuMDEtLjMzLjAxLS4zMy4wMi0uMzMuMDEtLjMzLjAxLS4zMy4wMS0uMzMuMDEtLjMzLjAxLS4zMy4wMS0uMzMuMDFoLS4zM2wtLjMzLjAxaC0uMzNsLS4zNC4wMWgtMy4wN2wtLjI4LS4wMWgtLjU1bC0uMjgtLjAxaC0uMjdsLS4yNy0uMDFoLS4yN2wtLjI3LS4wMWgtLjI2bC0uMjYtLjAxLS4yNS0uMDFoLS4yNWwtLjI1LS4wMS0uMjQtLjAxaC0uMjNsLS4yMy0uMDEtLjIyLS4wMWgtLjIybC0uMjEtLjAxLS4yMS0uMDFoLS4ybC0uMTktLjAxLS4xOC0uMDFoLS4xN2wtLjE3LS4wMWgtLjE2bC0uMTUtLjAxaC0uMTRsLS4xMy0uMDFoLS4xMmwtLjExLS4wMWgtLjI4bC0uMDctLjAxaC0uMTVsLS4xMi0uMDFoLS4wOGwtLjEyLS4wMWgtLjJsLS4wNy0uMDFoLS4xMmwtLjA4LS4wMWgtLjEybC0uMTItLjAxaC0uMTlsLS4wOC0uMDFoLS4xMmwtLjI1LS4wMi0uMjUtLjAxLS4yNC0uMDEtLjI1LS4wMS0uMjUtLjAyLS4yNS0uMDEtLjI0LS4wMS0uMjUtLjAyLS4yNS0uMDEtLjI0LS4wMi0uMjUtLjAyLS4yNS0uMDEtLjI1LS4wMi0uMjQtLjAyLS4yNS0uMDEtLjI1LS4wMi0uMjQtLjAyLS4yNS0uMDItLjI1LS4wMi0uMjQtLjAyLS4yNS0uMDItLjI1LS4wMi0uMjQtLjAyLS4yNS0uMDItLjI1LS4wMy0uMjQtLjAyLS4yNS0uMDItLjI1LS4wMi0uMjQtLjAzLS4yNS0uMDItLjI1LS4wMy0uMjQtLjAyLS4yNS0uMDMtLjI1LS4wMi0uMjQtLjAzLS4yNS0uMDMtLjI0LS4wMi0uMjUtLjAzLS4yNS0uMDMtLjI0LS4wM2gtLjA1bC0uMDUtLjAxLS4wOS0uMDEtLjA1LS4wMS0uMDktLjAxaC0uMDVsLS4xLS4wMS0uMDQtLjAxLS4xLS4wMS0uMDQtLjAxLS4xLS4wMWgtLjA1bC0uMDktLjAxLS4wNS0uMDEtLjA0LS4wMWgtLjA1bC0uMS0uMDEtLjA0LS4wMS0uMS0uMDEtLjA1LS4wMS0uMDktLjAxaC0uMDVsLS4wOS0uMDJoLS4wNWwtLjA5LS4wMS0uMDUtLjAxLS4wOS0uMDEtLjA1LS4wMS0uNDYtLjA2LS40NC0uMDYtLjQ1LS4wNS0uNDQtLjA3LS40My0uMDYtLjQzLS4wNi0uNDItLjA2LS40MS0uMDYtLjQxLS4wNi0uNC0uMDYtLjQtLjA2LS4zOS0uMDYtLjM4LS4wNi0uMzctLjA2LS4zNy0uMDYtLjM1LS4wNi0uMzUtLjA2LS4zNC0uMDUtLjM0LS4wNi0uMzItLjA1LS4zMS0uMDYtLjMxLS4wNS0uMjktLjA1LS4yOS0uMDUtLjI3LS4wNS0uMjctLjA1LS4yNS0uMDQtLjI1LS4wNS0uMjMtLjA0LS4yMi0uMDQtLjIxLS4wNC0uMi0uMDMtLjE5LS4wNC0uMTgtLjAzLS4xNi0uMDMtLjE1LS4wMy0uMTQtLjAyLS4xMi0uMDItLjExLS4wMi0uMS0uMDItLjItLjAzLS4yLS4wNC0uMi0uMDQtLjItLjA0LS4yLS4wNC0uMjEtLjA1LS4yLS4wNC0uMi0uMDQtLjItLjA0LS4yLS4wNS0uMi0uMDQtLjE5LS4wNS0uMi0uMDQtLjItLjA1LS4yLS4wNS0uMi0uMDUtLjItLjA0LS4yLS4wNS0uMi0uMDUtLjItLjA1LS4xOS0uMDUtLjItLjA2LS4yLS4wNS0uMi0uMDUtLjE5LS4wNS0uMi0uMDYtLjItLjA1LS4yLS4wNi0uMTktLjA2LS4yLS4wNS0uMi0uMDYtLjE5LS4wNi0uMi0uMDYtLjE5LS4wNS0uMi0uMDYtLjItLjA2LS4xOS0uMDctLjItLjA2LS4xOS0uMDYtLjItLjA2LS4wOC0uMDMtLjA4LS4wMy0uMDktLjAzLS4wOC0uMDItLjA4LS4wMy0uMDktLjAzLS4wOC0uMDMtLjA5LS4wMy0uMDgtLjAzLS4wOC0uMDItLjA5LS4wMy0uMDgtLjAzLS4wOC0uMDMtLjA5LS4wMy0uMDgtLjAzLS4wOC0uMDMtLjA5LS4wMy0uMDgtLjAzLS4wOC0uMDMtLjA4LS4wMy0uMDktLjAzLS4wOC0uMDMtLjA4LS4wMy0uMDktLjAzLS4wOC0uMDMtLjA4LS4wMy0uMDgtLjAzLS4wOS0uMDMtLjA4LS4wMy0uMDgtLjA0LS4wOC0uMDMtLjA5LS4wMy0uMDgtLjAzLS4wOC0uMDMtLjA4LS4wMy0uMDktLjA0LS4wOC0uMDMtLjA4LS4wMy0uMDgtLjAzLS4wOC0uMDQtLjE5LS4wNi0uMTgtLjA3LS4xOC0uMDctLjE4LS4wNy0uMTgtLjA4LS4xNy0uMDctLjE4LS4wOC0uMTgtLjA3LS4xOC0uMDgtLjE3LS4wOC0uMTgtLjA4LS4xNy0uMDgtLjE4LS4wOC0uMTctLjA4LS4xOC0uMDktLjE3LS4wOC0uMTctLjA5LS4xNy0uMDktLjE4LS4wOS0uMTctLjA5LS4xNy0uMDktLjE3LS4wOS0uMTYtLjA5LS4xNy0uMS0uMTctLjEtLjE3LS4wOS0uMTYtLjEtLjE3LS4xLS4xNi0uMS0uMTctLjEtLjE2LS4xMS0uMTYtLjEtLjE2LS4xMS0uMTctLjEtLjE2LS4xMS0uMTYtLjExLS4xNS0uMTEtLjE2LS4xMS0uMTYtLjExLS4xNi0uMTEtLjUzLS40Mi0uNTEtLjQyLS40Ny0uNDMtLjQ1LS40My0uNDItLjQ1LS40LS40NC0uMzctLjQ2LS4zNS0uNDUtLjMzLS40Ni0uMzEtLjQ2LS4yOC0uNDctLjI2LS40Ni0uMjUtLjQ2LS4yMi0uNDYtLjIxLS40Ni0uMTktLjQ1LS4xOC0uNDUtLjE2LS40NS0uMTUtLjQ0LS4xMy0uNDMtLjEyLS40My0uMTEtLjQyLS4xLS40MS0uMDktLjQtLjA4LS4zOC0uMDctLjM4LS4wNy0uMzctLjA2LS4zNS0uMDUtLjMzLS4wNS0uMzItLjA1LS4zMS0uMDQtLjI5LS4wNC0uMjctLjA1LS4yNS0uMDQtLjI0LS4wNC0uMjEtLjA0LS4xOS0uMDUtLjE3LS4wNS0uMTUtLjA1LS4xMlYyOTMuNTNsLjAxLS4wOHYtLjE3bC4wMS0uMDh2LS4xN2wuMDEtLjA5di0uMDhsLjAxLS4wOS4wMS0uMDh2LS4wOWwuMDEtLjA4LjAxLS4wOS4wMS0uMDguMDEtLjA4di0uMDlsLjAxLS4wOC4wMS0uMDkuMDEtLjA4LjAyLS4wOC4wMS0uMDkuMDEtLjA4LjAxLS4wOS4wMS0uMDguMDItLjA4LjAxLS4wOS4wMS0uMDguMDItLjA4LjAxLS4wOS4wMi0uMDguMDEtLjA5LjAyLS4wOC4wMi0uMDguMDItLjA4LjAzLS4xNi4wNC0uMTYuMDQtLjE1LjA0LS4xNS4wNC0uMTUuMDQtLjE0LjA1LS4xNC4wNC0uMTQuMDUtLjEzLjA1LS4xMy4wNC0uMTIuMDUtLjEyLjA1LS4xMi4wNS0uMTIuMDUtLjExLjA1LS4xMS4wNS0uMTEuMDQtLjEuMDUtLjEuMDUtLjA5LjA1LS4wOS4wNC0uMDkuMDUtLjA5LjA0LS4wOC4wNS0uMDguMDQtLjA3LjA0LS4wOC4wNC0uMDcuMDQtLjA2LjA0LS4wNi4wMy0uMDYuMDMtLjA2LjAzLS4wNS4wMy0uMDUuMDMtLjA1LjAyLS4wNC4wMy0uMDQuMDEtLjA0LjAyLS4wMy4wMS0uMDMuMDMtLjAzLjAyLS4wNC4wMy0uMDMuMDItLjAzLjAyLS4wNC4wMy0uMDMuMDItLjAzLjAzLS4wNC4wMi0uMDMuMDMtLjAzLjAyLS4wNC4wMy0uMDMuMDItLjAzLjAzLS4wMy4wMi0uMDQuMDMtLjAzLjAzLS4wMy4wMi0uMDMuMDMtLjAzLjAyLS4wNC4wMy0uMDMuMDMtLjAzLjAyLS4wMy4wMy0uMDMuMDMtLjAzLjAzLS4wNC4wMi0uMDMuMDMtLjAzLjAzLS4wMy4wMy0uMDMuMDItLjAzLjAzLS4wMy4wMy0uMDMuMDMtLjAzLjAzLS4wMy4wMy0uMDMuMDItLjAzLjAzLS4wMy4wMy0uMDMuMDMtLjAzLjIxLS4yLjItLjE5LjIxLS4xOS4yMi0uMTguMjEtLjE4LjIyLS4xNy4yMi0uMTcuMjItLjE3LjIyLS4xNi4yMy0uMTUuMjItLjE1LjIyLS4xNS4yMy0uMTQuMjItLjEzLjIyLS4xMy4yMS0uMTMuMjItLjEyLjIxLS4xMi4yMS0uMTEuMjEtLjExLjItLjExLjItLjEuMi0uMS4xOS0uMDkuMTgtLjA5LjE4LS4wOC4xNy0uMDguMTctLjA4LjE2LS4wNy4xNS0uMDcuMTUtLjA3LjE0LS4wNi4xMi0uMDYuMTItLjA1LjEyLS4wNi4xLS4wNC4wOS0uMDUuMDgtLjA0LjA3LS4wNC4wNi0uMDMuMDUtLjAyLjAyLS4wMS4wNS0uMDIuMDUtLjAyLjAyLS4wMS4wNS0uMDEuMDUtLjAyLjAyLS4wMS4wNS0uMDIuMDUtLjAyLjAyLS4wMS4wNS0uMDEuMDUtLjAyLjA1LS4wMi4wMi0uMDEuMDUtLjAyLjA1LS4wMS4wMi0uMDEuMDUtLjAyLjA1LS4wMi4wMi0uMDEuMDUtLjAxLjA1LS4wMi4wMi0uMDEuNTMtLjE3LjUzLS4xNi41My0uMTcuNTMtLjE2LjUzLS4xNS41My0uMTYuNTMtLjE1LjUzLS4xNS41My0uMTUuNTQtLjE0LjUzLS4xNC41NC0uMTQuNTMtLjE0LjU0LS4xMy41NC0uMTMuNTMtLjEzLjU0LS4xMi41NC0uMTIuNTQtLjEyLjU0LS4xMi41NC0uMTEuNTQtLjExLjU1LS4xMS41NC0uMS41NC0uMTEuNTQtLjEuNTUtLjA5LjU0LS4xLjU1LS4wOS41NC0uMDkuNTUtLjA4LjU1LS4wOC41NC0uMDguNTUtLjA4LjU1LS4wOC41NS0uMDcuNTUtLjA3LjU1LS4wNi41NC0uMDYuNTUtLjA2LjA1LS4wMS4wNS0uMDFoLjA1bC4wNS0uMDFoLjA1bC4wNC0uMDFoLjA1bC4wNS0uMDFoLjA1bC4wNS0uMDFoLjA1bC4wNC0uMDFoLjA1bC4wNS0uMDFoLjA1bC4wNS0uMDFoLjA0bC4wNS0uMDFoLjA1bC4wNS0uMDFoLjA1bC4wNS0uMDFoLjA0bC4wNS0uMDFoLjA1bC4wNS0uMDFoLjA1bC4wNS0uMDFoLjA5bC4wNS0uMDFoLjA1bC4wNS0uMDFoLjA1bC4wNC0uMDFoLjA1bC4wNS0uMDFoLjA1bC4wNS0uMDFoLjA1bC44Ni0uMDguODQtLjA4LjgzLS4wNy44MS0uMDYuNzktLjA3Ljc4LS4wNi43Ni0uMDUuNzUtLjA2LjcyLS4wNS43Mi0uMDQuNjktLjA1LjY4LS4wNC42NS0uMDQuNjUtLjAzLjYyLS4wMy42MS0uMDMuNTktLjAzLjU3LS4wMy41NS0uMDIuNTQtLjAyLjUyLS4wMi41LS4wMi40OC0uMDIuNDctLjAxLjQ1LS4wMi40My0uMDEuNDEtLjAxLjM5LS4wMS4zNy0uMDEuMzYtLjAxLjMzLS4wMS4zMi0uMDEuMy0uMDFoLjI4bC4yNy0uMDEuMjQtLjAxLjIyLS4wMWguMjFsLjE4LS4wMS4xNy0uMDFoMy4zNnptLTExNi4xNyAxLjU1aC40N2wuMTYuMDFoLjMybC4xNi4wMWguMTZsLjE2LjAxaC4xNmwuMTYuMDFoLjE2bC4xNS4wMS4xNi4wMWguMTZsLjE2LjAxLjE2LjAxLjE2LjAxLjE2LjAxLjE2LjAxLjE2LjAxLjE2LjAxLjE1LjAxLjE2LjAxLjE2LjAxLjE2LjAyLjE2LjAxLjE2LjAxLjE2LjAyLjE1LjAxLjE2LjAyLjE2LjAxLjE2LjAyLjE2LjAxLjE2LjAyLjE2LjAxLjUuMDYuNDguMDcuNDcuMDcuNDYuMDcuNDUuMDguNDMuMDguNDIuMDkuNC4wOS40LjA5LjM4LjA5LjM2LjEuMzYuMS4zNC4xLjMzLjEuMzIuMS4zMS4xMS4zLjEuMjguMS4yOC4xMS4yNi4xLjI1LjEuMjQuMS4yMy4xLjIzLjEuMjEuMS4yLjA5LjE5LjA5LjE5LjA5LjE3LjA4LjE2LjA5LjE2LjA3LjE1LjA4LjE0LjA2LjEzLjA3LjEyLjA2LjExLjA1LjExLjA1LjEuMDQuMDkuMDMuMDguMDMuMDQuMDIuMDQuMDMuMDQuMDIuMDQuMDMuMDMuMDIuMDQuMDIuMDQuMDMuMDQuMDIuMDMuMDMuMDQuMDIuMDQuMDMuMDMuMDIuMDQuMDMuMDQuMDIuMDQuMDMuMDMuMDIuMDQuMDMuMDQuMDIuMDMuMDMuMDQuMDMuMDQuMDIuMDMuMDMuMDQuMDMuMDMuMDIuMDQuMDMuMDQuMDIuMDMuMDMuMDQuMDMuMDMuMDMuMDQuMDIuMDMuMDMuMDQuMDMuMDMuMDIuMDQuMDMuMDQuMDMuMDMuMDMuMDQuMDMuMDMuMDIuMDQuMDMuMDMuMDMuMjguMjQuMjcuMjQuMjcuMjYuMjYuMjcuMjUuMjguMjUuMjkuMjQuMjkuMjMuMzEuMjIuMzIuMjIuMzMuMjEuMzMuMi4zNS4yLjM2LjE4LjM3LjE5LjM4LjE3LjM4LjE3LjQuMTYuNDEuMTUuNDIuMTQuNDMuMTQuNDMuMTMuNDUuMTMuNDYuMTIuNDcuMTEuNDguMS40OC4xLjUuMDguNTEuMDkuNTIuMDcuNTMuMDcuNTMuMDYuNTUuMDUuNTYuMDUuNTcuMDQuNTguMDMuNTguMDIuNi4wMi42MS4wMS42Mi4wMS42M3YxMzcuMjVsLS4xNy4wNS0uMTcuMDQtLjE3LjA0LS4xOC4wNS0uMTguMDQtLjE4LjA0LS4xOC4wNC0uMTkuMDQtLjE5LjA0LS4xOS4wNC0uMTkuMDQtLjE5LjA0LS4xOS4wMy0uMTkuMDQtLjE4LjA0LS4xOS4wMy0uMTkuMDQtLjE4LjAzLS4xOS4wMy0uMTguMDMtLjE3LjAzLS4xOC4wMy0uMTcuMDMtLjE2LjAzLS4xNi4wMy0uMTYuMDItLjE1LjAzLS4xNS4wMi0uMTQuMDItLjEzLjAzLS4xMy4wMi0uMTIuMDItLjEyLjAxLS4xLjAyLS4xLjAyLS4wOS4wMS0uMDguMDEtLjA3LjAyLS4wNi4wMS0uMDUuMDEtLjA3LjAxLS4wNi4wMS0uMDcuMDEtLjA2LjAxLS4wNy4wMWgtLjA2bC0uMDcuMDEtLjA3LjAxLS4wNi4wMS0uMDcuMDEtLjA2LjAxLS4wNy4wMS0uMDYuMDEtLjA3LjAxLS4wNy4wMS0uMDYuMDEtLjA3LjAxLS4wNi4wMS0uMDcuMDEtLjA3LjAxaC0uMDZsLS4wNy4wMS0uMDYuMDEtLjA3LjAxLS4wNi4wMS0uMDcuMDEtLjA3LjAxLS4wNi4wMS0uMDcuMDFoLS4wNmwtLjA3LjAxLS4wNy4wMS0uMDYuMDEtLjA3LjAxLS4wNi4wMS0uMDcuMDEtLjA2LjAxaC0uMDdsLS4wNy4wMS0uMDYuMDEtLjQ1LjA2LS40NC4wNS0uNDMuMDUtLjQzLjA1LS40My4wNC0uNDIuMDUtLjQyLjA0LS40MS4wMy0uNDEuMDQtLjQuMDMtLjM5LjAzLS4zOS4wMy0uMzguMDItLjM3LjAzLS4zNy4wMi0uMzYuMDItLjM1LjAyLS4zNC4wMS0uMzMuMDItLjMzLjAxLS4zMi4wMS0uMy4wMS0uMy4wMS0uMjkuMDEtLjI4LjAxLS4yNy4wMS0uMjYuMDFoLS4yNGwtLjI0LjAxaC0uMjNsLS4yMS4wMWgtLjJsLS4xOS4wMWgtLjM0bC0uMTYuMDFIMjgxbC0uMTMuMDFoLS4xMWwtLjEuMDEtMS4wMS0uMDEtLjk3LS4wMi0uOTMtLjA0LS45LS4wNS0uODYtLjA2LS44My0uMDgtLjc5LS4wOS0uNzYtLjA5LS43My0uMTEtLjctLjExLS42Ny0uMTMtLjY0LS4xMy0uNjEtLjE0LS41OC0uMTQtLjU1LS4xNS0uNTMtLjE2LS41LS4xNS0uNDgtLjE3LS40NS0uMTYtLjQzLS4xNi0uNDEtLjE3LS4zOS0uMTctLjM3LS4xNi0uMzUtLjE3LS4zMi0uMTYtLjMyLS4xNi0uMjktLjE1LS4yOC0uMTYtLjI2LS4xNC0uMjUtLjE0LS4yMy0uMTQtLjIyLS4xMi0uMjEtLjEyLS4xOS0uMTEtLjE5LS4xLS4xOC0uMDktLjE2LS4wOC0uMTYtLjA3LS4xNS0uMDUtLjE1LS4wNS0uMTEtLjEtLjEtLjEtLjExLS4xLS4xMS0uMS0uMS0uMTEtLjEtLjEtLjEtLjExLS4xLS4xLS4xLS4xMS0uMS0uMTEtLjEtLjExLS4wOS0uMTItLjEtLjExLS4wOS0uMTEtLjA5LS4xMi0uMDktLjExLS4wOS0uMTItLjA4LS4xMi0uMDktLjEyLS4wOS0uMTItLjA4LS4xMi0uMDgtLjEyLS4wOC0uMTItLjA4LS4xMi0uMDgtLjEzLS4wNy0uMTItLjA4LS4xMy0uMDctLjEzLS4wNy0uMTItLjA3LS4xMy0uMDctLjEzLS4wNy0uMTMtLjA3LS4xMy0uMDYtLjE0LS4wNy0uMTMtLjA2LS4xMy0uMDYtLjE0LS4wNi0uMTMtLjA1LS4xNC0uMDYtLjEzLS4xMy0uMzItLjEyLS4zMS0uMTItLjMzLS4xMS0uMzItLjEtLjMzLS4xLS4zMy0uMS0uMzMtLjA4LS4zMy0uMDktLjMzLS4wNy0uMzMtLjA4LS4zMy0uMDctLjMzLS4wNi0uMzMtLjA2LS4zMy0uMDUtLjMyLS4wNS0uMzItLjA1LS4zMS0uMDUtLjMyLS4wNC0uMy0uMDMtLjMtLjA0LS4zLS4wMy0uMjktLjAzLS4yOC0uMDMtLjI4LS4wMi0uMjctLjAzLS4yNS0uMDItLjI1LS4wMi0uMjQtLjAxLS4yNC0uMDItLjIyLS4wMi0uMi0uMDEtLjItLjAxLS4xOS0uMDItLjE3LS4wMS0uMTYtLjAxLS4xNS0uMDItLjEzLS4wMS0uMTItLjAxLS4xLS4wMi0uMDl2LS4yNWwtLjAxLS4wOHYtLjYxbC0uMDEtLjA0di00MS41N2gtNDkuNjN2NjAuMjNsLS4xNi4wNS0uMTcuMDQtLjE3LjA0LS4xOC4wNS0uMTguMDQtLjE4LjA0LS4xOS4wNC0uMTguMDQtLjE5LjA0LS4xOS4wNC0uMTkuMDQtLjE5LjA0LS4xOS4wMy0uMTkuMDQtLjE5LjA0LS4xOC4wMy0uMTkuMDQtLjE5LjAzLS4xOC4wMy0uMTguMDMtLjE4LjAzLS4xNy4wMy0uMTcuMDMtLjE3LjAzLS4xNi4wMy0uMTUuMDItLjE2LjAzLS4xNC4wMi0uMTQuMDItLjE0LjAzLS4xMi4wMi0uMTIuMDItLjEyLjAxLS4xLjAyLS4xLjAyLS4wOS4wMS0uMDguMDEtLjA3LjAyLS4wNi4wMS0uMDUuMDEtLjA3LjAxLS4wNi4wMS0uMDcuMDEtLjA3LjAxLS4wNi4wMWgtLjA3bC0uMDYuMDEtLjA3LjAxLS4wNi4wMS0uMDcuMDEtLjA3LjAxLS4wNi4wMS0uMDcuMDEtLjA2LjAxLS4wNy4wMS0uMDYuMDEtLjA3LjAxLS4wNy4wMS0uMDYuMDEtLjA3LjAxaC0uMDZsLS4wNy4wMS0uMDcuMDEtLjA2LjAxLS4wNy4wMS0uMDYuMDEtLjA3LjAxLS4wNi4wMS0uMDcuMDFoLS4wN2wtLjA2LjAxLS4wNy4wMS0uMDYuMDEtLjA3LjAxLS4wNi4wMS0uMDcuMDEtLjA3LjAxaC0uMDZsLS4wNy4wMS0uMDYuMDEtLjQ1LjA2LS40NC4wNS0uNDMuMDUtLjQ0LjA1LS40Mi4wNC0uNDMuMDUtLjQxLjA0LS40MS4wMy0uNDEuMDQtLjQuMDMtLjM5LjAzLS4zOS4wMy0uMzguMDItLjM3LjAzLS4zNy4wMi0uMzYuMDItLjM1LjAyLS4zNC4wMS0uMzQuMDItLjMyLjAxLS4zMi4wMS0uMzEuMDEtLjMuMDEtLjI4LjAxLS4yOC4wMS0uMjcuMDEtLjI2LjAxaC0uMjVsLS4yMy4wMWgtLjIzbC0uMjEuMDFoLS4ybC0uMTkuMDFoLS4zNWwtLjE1LjAxaC0uMTRsLS4xMi4wMWgtLjExbC0uMS4wMS0xLjAxLS4wMS0uOTctLjAyLS45NC0uMDQtLjg5LS4wNS0uODYtLjA2LS44My0uMDgtLjgtLjA5LS43Ni0uMDktLjczLS4xMS0uNjktLjExLS42Ny0uMTMtLjY0LS4xMy0uNjEtLjE0LS41OC0uMTQtLjU1LS4xNS0uNTMtLjE2LS41LS4xNS0uNDgtLjE3LS40Ni0uMTYtLjQzLS4xNi0uNDEtLjE3LS4zOC0uMTctLjM3LS4xNi0uMzUtLjE3LS4zMy0uMTYtLjMxLS4xNi0uMjktLjE1LS4yOC0uMTYtLjI2LS4xNC0uMjUtLjE0LS4yMy0uMTQtLjIyLS4xMi0uMjEtLjEyLS4yLS4xMS0uMTgtLjEtLjE4LS4wOS0uMTYtLjA4LS4xNi0uMDctLjE2LS4wNS0uMTQtLjA1LS4xMS0uMS0uMTEtLjEtLjEtLjEtLjExLS4xLS4xLS4xMS0uMTEtLjEtLjEtLjExLS4xLS4xLS4xLS4xMS0uMDktLjExLS4xLS4xMS0uMDktLjEyLS4xLS4xMS0uMDktLjExLS4wOS0uMTItLjA5LS4xMS0uMDktLjEyLS4wOS0uMTItLjA4LS4xMi0uMDktLjEyLS4wOC0uMTItLjA4LS4xMi0uMDgtLjEyLS4wOC0uMTItLjA4LS4xMy0uMDgtLjEyLS4wNy0uMTMtLjA3LS4xMy0uMDgtLjEyLS4wNy0uMTMtLjA3LS4xMy0uMDYtLjEzLS4wNy0uMTMtLjA2LS4xNC0uMDctLjEzLS4wNi0uMTMtLjA2LS4xNC0uMDYtLjEzLS4wNi0uMTQtLjA1LS4xMy0uMTMtLjMyLS4xMy0uMzEtLjExLS4zMy0uMTEtLjMyLS4xMS0uMzMtLjEtLjMzLS4wOS0uMzMtLjA5LS4zMy0uMDgtLjMzLS4wOC0uMzMtLjA3LS4zMy0uMDctLjMzLS4wNi0uMzMtLjA2LS4zMy0uMDYtLjMyLS4wNS0uMzItLjA0LS4zMS0uMDUtLjMyLS4wNC0uMy0uMDQtLjMtLjAzLS4zLS4wMy0uMjktLjAzLS4yOC0uMDMtLjI4LS4wMi0uMjctLjAzLS4yNS0uMDItLjI1LS4wMi0uMjQtLjAyLS4yNC0uMDEtLjIyLS4wMi0uMi0uMDEtLjItLjAyLS4xOS0uMDEtLjE3LS4wMS0uMTYtLjAyLS4xNS0uMDEtLjEzLS4wMS0uMTItLjAyLS4xLS4wMS0uMDl2LS4yMmwtLjAxLS4wM3YtLjQ3bC0uMDEtLjA0VjI3OC43OWwuMTgtLjAzLjE4LS4wMy4xOS0uMDMuMTktLjAzLjE5LS4wMy4yLS4wMy4xOS0uMDMuMi0uMDQuMi0uMDMuMTktLjAzLjItLjAzLjItLjAzLjItLjAzLjItLjA0LjE5LS4wMy4yLS4wMy4xOS0uMDMuMTktLjAzLjE5LS4wMy4xOS0uMDMuMTgtLjAyLjE4LS4wMy4xNy0uMDMuMTctLjAzLjE3LS4wMi4xNi0uMDMuMTYtLjAyLjE1LS4wMy4xNC0uMDIuMjctLjA0LjEyLS4wMi4xMi0uMDIuMS0uMDEuMS0uMDIuMDktLjAxLjA5LS4wMi4wNy0uMDEuMDYtLjAxLjA2LS4wMS4wNi0uMDEuMi0uMDMuMTMtLjAyLjItLjAzLjEzLS4wMi4xMy0uMDIuMi0uMDMuMTMtLjAyLjItLjAzLjEzLS4wMi4yLS4wMy4xMy0uMDIuMTMtLjAyLjItLjAzLjEzLS4wMi4yLS4wMy4xMy0uMDIuNDQtLjA2LjQ0LS4wNy40My0uMDYuNDMtLjA1LjQzLS4wNS40MS0uMDUuNDItLjA1LjQtLjA0LjQtLjA0LjQtLjA0LjM4LS4wMy4zOC0uMDQuMzctLjAzLjM3LS4wMi4zNi0uMDMuMzUtLjAyLjM0LS4wMi4zMy0uMDIuMzMtLjAyLjMyLS4wMi4zLS4wMS4zLS4wMS4yOS0uMDIuMjgtLjAxLjI3LS4wMWguMjZsLjI1LS4wMS4yNC0uMDEuMjMtLjAxaC4yMWwuMjEtLjAxaC4xOWwuMTktLjAxaC4xN2wuMTYtLjAxaC4xNWwuMTMtLjAxaC4xMmwuMTEtLjAxaDEuMjFsLjE2LjAxaC4zMmwuMTYuMDFoLjMybC4xNS4wMWguMTZsLjE2LjAxLjE2LjAxaC4xNmwuMTYuMDEuMTYuMDEuMTYuMDFoLjE2bC4xNi4wMS4xNS4wMS4xNi4wMS4xNi4wMS4xNi4wMS4xNi4wMS4xNi4wMS4xNi4wMi4xNi4wMS4xNS4wMS4xNi4wMS4xNi4wMi4xNi4wMS4xNi4wMi4xNi4wMS4xNi4wMi4xNS4wMS4xNi4wMi40OC4wNS40Ny4wNi40Ni4wNi40NC4wNy40My4wNy40MS4wNy40MS4wOC4zOS4wOC4zOC4wOC4zNi4wOC4zNi4wOS4zNC4wOS4zNC4wOC4zMi4wOS4zMS4xLjMuMDkuMjguMDkuMjguMDkuMjcuMDkuMjUuMDkuMjUuMDkuMjQuMDkuMjIuMDkuMjIuMDkuMjEuMDguMTkuMDkuMTkuMDguMTguMDcuMTcuMDguMTYuMDcuMTYuMDcuMTQuMDYuMTQuMDYuMTIuMDYuMTIuMDUuMTEuMDUuMTEuMDQuMS4wNC4wOC4wMy4wOS4wMi4wNC4wMy4wNS4wMi4wNS4wMy4wNC4wMy4wNS4wMi4wNC4wMy4wNS4wMy4wNS4wMi4wNC4wMy4wNS4wMy4wNC4wMy4wNS4wMy4wNC4wMi4wNS4wMy4wNC4wMy4wNS4wMy4wNC4wMy4wNS4wMy4wNC4wMi4wNS4wMy4wNC4wMy4wNS4wMy4wNC4wMy4wNS4wMy4wNC4wMy4wNC4wMy4wNS4wMy4wNC4wMy4wNS4wMy4wNC4wMy4wNC4wNC4wNS4wMy4wNC4wMy4wNC4wMy4wNC4wMy4wNS4wMy4wNC4wMy4wNC4wNC4wNS4wMy4wNC4wMy4zOC4zMS4zNi4zNC4zNC4zNS4zMy4zNi4zMS4zOC4yOC40LjI4LjQxLjI1LjQyLjI1LjQzLjIyLjQ0LjIxLjQ1LjIuNDUuMTkuNDYuMTcuNDcuMTYuNDYuMTUuNDcuMTMuNDcuMTMuNDcuMTIuNDcuMTEuNDYuMS40Ni4wOS40NS4wOC40NC4wOC40NC4wNy40Mi4wNi40Mi4wNi40LjA1LjM5LjA1LjM3LjA1LjM2LjA0LjM0LjA0LjMyLjA0LjMuMDQuMjkuMDMuMjUuMDQuMjQuMDQuMjEuMDQuMTguMDMuMTYuMDUuMTN2LjI1bC4wMS4wNXYuMjVsLjAxLjA1di40MWwuMDEuMDV2NDIuODNoNDkuNjN2LTYxbC4wOS0uMDEuMDktLjAyLjA4LS4wMS4wOS0uMDEuMDgtLjAyLjA5LS4wMS4wOS0uMDIuMDgtLjAxLjA5LS4wMi4wOS0uMDEuMDgtLjAxLjA5LS4wMi4wOS0uMDEuMDgtLjAyLjA5LS4wMS4wOS0uMDEuMDgtLjAyLjA5LS4wMS4wOS0uMDEuMDgtLjAyLjE1LS4wMi4xNS0uMDMuMTUtLjAyLjE1LS4wMi4xNS0uMDMuMTUtLjAyLjE1LS4wMy4xNS0uMDIuMTUtLjAyLjE1LS4wMy4xNC0uMDIuMTUtLjAyLjE1LS4wMy4xNC0uMDIuMTQtLjAyLjE0LS4wMi4xNC0uMDMuMTQtLjAyLjEzLS4wMi4xNC0uMDIuMTItLjAyLjEzLS4wMi4xMi0uMDIuMTItLjAyLjEyLS4wMS4xMS0uMDIuMTEtLjAyLjItLjAzLjM1LS4wNS4wNy0uMDEuMTQtLjAzaC4wNWwuMDUtLjAxLjA1LS4wMS4wNC0uMDEuMDYtLjAxLjItLjAzLjEzLS4wMi4yLS4wMy4xMy0uMDIuMTMtLjAyLjItLjAzLjEzLS4wMi4yLS4wMy4xMy0uMDIuMi0uMDMuMTMtLjAyLjEzLS4wMi4yLS4wMy4xMy0uMDIuMi0uMDMuMTMtLjAyLjQ0LS4wNi40NC0uMDcuNDQtLjA2LjQyLS4wNS40My0uMDUuNDItLjA1LjQxLS4wNS40LS4wNC40LS4wNC40LS4wNC4zOC0uMDMuMzgtLjA0LjM4LS4wMy4zNi0uMDIuMzYtLjAzLjM1LS4wMi4zNC0uMDIuMzQtLjAyLjMyLS4wMi4zMi0uMDIuMzEtLjAxLjI5LS4wMS4yOS0uMDIuMjgtLjAxLjI3LS4wMWguMjZsLjI1LS4wMS4yNC0uMDEuMjMtLjAxaC4yMmwuMi0uMDFoLjJsLjE4LS4wMWguMTdsLjE2LS4wMWguMTVsLjEzLS4wMWguMTJsLjExLS4wMWguNzR6bTExNi42OSAzNC44OS0uMjcuMDFoLS41MmwtLjI2LjAxaC0uMjVsLS4yNS4wMWgtLjI0bC0uMjUuMDEtLjI0LjAxaC0uMjNsLS4yMy4wMS0uMjMuMDEtLjIyLjAxLS4yMi4wMWgtLjIxbC0uMjEuMDEtLjIuMDEtLjIuMDEtLjE5LjAxLS4xOS4wMS0uMTguMDEtLjE3LjAxLS4xNy4wMS0uMTYuMDFoLS4xNmwtLjE1LjAxLS4xNC4wMS0uMTQuMDEtLjI1LjAxLS4xMS4wMS0uMTEuMDFoLS4xbC0uMDkuMDFoLS4xNmwtLjA3LjAxaC0uMDZsLS4xOS4wMS0uMTkuMDItLjE4LjAxLS4xOS4wMS0uMTkuMDItLjE5LjAxLS4xOS4wMi0uMTguMDEtLjE5LjAyLS4xOS4wMi0uMTkuMDEtLjE5LjAyLS4xOS4wMi0uMTkuMDEtLjE5LjAyLS4xOS4wMi0uMTkuMDItLjE5LjAxLS4xOS4wMi0uMTkuMDItLjE5LjAyLS4xOS4wMi0uMTkuMDItLjE5LjAyLS4yLjAyLS4xOS4wMy0uMTkuMDItLjE5LjAyLS4xOS4wMi0uMTkuMDItLjIuMDMtLjE5LjAyLS4xOS4wMi0uMi4wMy0uMTkuMDItLjE5LjAyLS4xOS4wMy0uMi4wMi0uMTkuMDMtLjIuMDN2ODkuOTVsLjE1LjAyLjE1LjAzLjE1LjAyLjE0LjAzLjE1LjAyLjE1LjAzLjE1LjAyLjE0LjAzLjE1LjAyLjE0LjAyLjE1LjAyLjE0LjAyLjE0LjAyLjE0LjAyLjEzLjAyLjE0LjAyLjEzLjAyLjEzLjAyLjEzLjAxLjEzLjAyLjEyLjAyLjEyLjAxLjEyLjAyLjExLjAxLjExLjAyLjExLjAxLjEuMDEuMS4wMi4wOS4wMS4wOS4wMS4xNy4wMi4wOC4wMS4wNy4wMS4wNi4wMWguMDZsLjA2LjAxLjA1LjAxaC4wNGwuMDQuMDEuMDYuMDFoLjA2bC4wNi4wMS4wNi4wMWguMDZsLjA2LjAxLjA3LjAxaC4wNmwuMDYuMDEuMDYuMDFoLjA2bC4wNi4wMS4wNi4wMWguMDdsLjA2LjAxLjA2LjAxaC4wNmwuMDYuMDFoLjA2bC4wNi4wMS4wNy4wMWguMDZsLjA2LjAxLjA2LjAxaC4wNmwuMDYuMDFoLjA2bC4wNy4wMS4wNi4wMWguMDZsLjA2LjAxaC4wNmwuMDYuMDEuMDYuMDFoLjA3bC4wNi4wMWguMDZsLjA2LjAxLjA2LjAxaC4wNmwuMzEuMDMuMy4wMy4zLjAyLjI5LjAzLjI5LjAyLjI4LjAyLjI4LjAyLjI3LjAyLjI3LjAxLjI2LjAyLjI2LjAxLjI1LjAyLjI0LjAxLjI0LjAxLjIzLjAxLjIzLjAxLjIyLjAxLjIxLjAxLjIxLjAxLjIuMDFoLjJsLjE5LjAxaC4xOGwuMTcuMDFoLjE3bC4xNy4wMWguNDVsLjEzLjAxaC4zN2wuMS4wMWguMzZsLjA3LjAxaDEuMDhsLjM0LS4wMS4zNC0uMDEuMzMtLjAxLjM0LS4wMS4zNC0uMDIuMzQtLjAxLjM0LS4wMi4zNC0uMDMuMzMtLjAyLjM0LS4wMy4zNC0uMDMuMzQtLjA0LjMzLS4wMy4zNC0uMDQuMzQtLjA0LjMzLS4wNC4zNC0uMDUuMzMtLjA1LjM0LS4wNS4zMy0uMDUuMzQtLjA2LjMzLS4wNi4zMy0uMDYuMzQtLjA2LjMzLS4wNy4zMy0uMDYuMzMtLjA4LjMzLS4wNy4zNC0uMDcuMzMtLjA4LjMyLS4wOC4zMy0uMDkuMzMtLjA4LjMzLS4wOS4zMy0uMDkuMzItLjA5LjMzLS4xLjQ0LS4xMy40NC0uMTUuNDQtLjE0LjQ0LS4xNi40My0uMTYuNDMtLjE2LjQzLS4xNy40My0uMTguNDItLjE4LjQyLS4xOC40Mi0uMTkuNDItLjIuNDEtLjIuNDEtLjIxLjQxLS4yMS40MS0uMjEuNC0uMjMuNC0uMjIuNC0uMjQuMzktLjIzLjM5LS4yNC4zOS0uMjUuMzgtLjI1LjM4LS4yNi4zOC0uMjYuMzgtLjI3LjM3LS4yNy4zNy0uMjcuMzYtLjI4LjM2LS4yOS4zNi0uMjkuMzYtLjI5LjM1LS4zLjM0LS4zMS4zNS0uMy4zNC0uMzIuMzMtLjMyLjM0LS4zMi4zMi0uMzIuMzMtLjMzLjI4LS4zLjI3LS4yOS4yNy0uMy4yNy0uMy4yNi0uMzEuMjYtLjMxLjI1LS4zMS4yNi0uMzEuMjQtLjMxLjI1LS4zMi4yNC0uMzIuMjQtLjMzLjIzLS4zMi4yMy0uMzMuMjMtLjMzLjIyLS4zNC4yMi0uMzMuMjEtLjM0LjIyLS4zNC4yLS4zNS4yMS0uMzQuMi0uMzUuMTktLjM1LjE5LS4zNS4xOS0uMzYuMTgtLjM1LjE4LS4zNi4xOC0uMzYuMTctLjM2LjE3LS4zNy4xNi0uMzcuMTYtLjM2LjE2LS4zOC4xNS0uMzcuMTUtLjM3LjE0LS4zOC4xNC0uMzguMTMtLjM4LjEzLS4zOC4xMy0uMzguMjEtLjY2LjIxLS42NS4xOS0uNjYuMTgtLjY2LjE3LS42Ni4xNi0uNjYuMTUtLjY2LjE0LS42Ni4xMy0uNjYuMTItLjY1LjEyLS42NC4xLS42NS4xLS42My4wOS0uNjMuMDgtLjYyLjA4LS42MS4wNy0uNjEuMDYtLjU5LjA2LS41OC4wNS0uNTcuMDUtLjU2LjA0LS41NS4wNC0uNTMuMDQtLjUxLjAzLS41MS4wMi0uNDguMDMtLjQ3LjAyLS40NC4wMi0uNDMuMDItLjQxLjAyLS4zOS4wMi0uMzcuMDEtLjM0LjAyLS4zMy4wMS0uMy4wMi0uMjcuMDEtLjI1LjAyLS4yMi4wMi0uMi4wMi0uMTYtLjAxLTEuMTQtLjAyLTEuMS0uMDQtMS4wOC0uMDUtMS4wNS0uMDYtMS4wMi0uMDgtMS0uMDgtLjk3LS4xLS45NC0uMTEtLjkxLS4xMi0uODktLjEyLS44Ny0uMTMtLjgzLS4xNC0uODEtLjE1LS43OS0uMTUtLjc2LS4xNi0uNzQtLjE2LS43MS0uMTYtLjY4LS4xNi0uNjctLjE3LS42My0uMTctLjYyLS4xNy0uNTktLjE2LS41Ny0uMTctLjU0LS4xNi0uNTItLjE2LS41LS4xNi0uNDctLjE1LS40Ni0uMTUtLjQzLS4xNC0uNDEtLjE0LS4zOC0uMTMtLjM3LS4xMi0uMzQtLjExLS4zMy0uMS0uMy0uMDktLjI4LS4wOC0uMjYtLjA3LS4yNS0uMDUtLjIyLS4wNC0uMi0uMTItLjI2LS4xMi0uMjUtLjEyLS4yNi0uMTItLjI1LS4xMy0uMjYtLjEyLS4yNS0uMTMtLjI1LS4xMy0uMjUtLjEzLS4yNS0uMTQtLjI1LS4xMy0uMjUtLjE0LS4yNC0uMTQtLjI1LS4xNC0uMjQtLjE1LS4yNC0uMTQtLjI0LS4xNS0uMjQtLjE1LS4yNC0uMTUtLjI0LS4xNi0uMjQtLjE1LS4yMy0uMTYtLjIzLS4xNi0uMjQtLjE2LS4yMy0uMTYtLjIzLS4xNy0uMjMtLjE2LS4yMi0uMTctLjIzLS4xNy0uMjMtLjE3LS4yMi0uMTgtLjIyLS4xNy0uMjItLjE4LS4yMi0uMTgtLjIyLS4xOC0uMjItLjE4LS4yMS0uMTktLjIxLS4xOS0uMjItLjE4LS4yMS0uMTktLjIxLS40Ni0uNDgtLjQ2LS40Ny0uNDctLjQ3LS40Ny0uNDUtLjQ5LS40NS0uNDktLjQzLS41LS40My0uNTEtLjQxLS41MS0uNDEtLjUyLS40LS41My0uMzktLjUzLS4zNy0uNTQtLjM3LS41NC0uMzYtLjU2LS4zNC0uNTYtLjM0LS41Ni0uMzMtLjU3LS4zMS0uNTctLjMxLS41OC0uMy0uNTktLjI4LS41OS0uMjctLjYtLjI3LS42LS4yNS0uNi0uMjQtLjYxLS4yMy0uNjItLjIyLS42Mi0uMjEtLjYyLS4yLS42My0uMTktLjYzLS4xNy0uNjMtLjE3LS42NC0uMTUtLjY0LS4xNC0uNjQtLjEzLS42NS0uMTItLjY1LS4xLS42NS0uMS0uNjYtLjA4LS42Ni0uMDctLjE1LS4wMi0uMTUtLjAxLS4xNS0uMDItLjE0LS4wMi0uMTUtLjAxLS4xNS0uMDItLjE1LS4wMS0uMTUtLjAyLS4xNS0uMDEtLjE1LS4wMS0uMTUtLjAyLS4xNS0uMDEtLjE1LS4wMS0uMTUtLjAxLS4xNS0uMDEtLjE1LS4wMi0uMTUtLjAxLS4xNS0uMDFoLS4xNWwtLjE1LS4wMS0uMTUtLjAxLS4xNi0uMDEtLjE1LS4wMS0uMTUtLjAxaC0uMTVsLS4xNS0uMDFoLS4xNWwtLjE1LS4wMWgtLjE1bC0uMTUtLjAxaC0uMTVsLS4xNS0uMDFoLS40NWwtLjE1LS4wMWgtMS4xNHpNMzIyLjk2IDkwLjEybC42OS4xLjY4LjEyLjY4LjE1LjY3LjE3LjY3LjIxLjY2LjIzLjY1LjI1LjY1LjI5LjY0LjMxLjYzLjM0LjYyLjM2LjYuMzkuNi40Mi41OS40NS41Ny40Ny41Ni41LjU1LjUzIDEyMi4yNyAxMjIuMjguODQuODguNzYuOTIuNjkuOTMuNjIuOTYuNTQuOTguNDguOTkuNCAxIC4zNCAxLjAyLjI4IDEuMDIuMjEgMS4wMy4xNCAxLjAzLjA4IDEuMDQuMDIgMS4wMy0uMDQgMS4wMy0uMSAxLjAyLS4xNSAxLjAxLS4yMiAxLS4wNy4yNkgxODEuMDRsLS4wNy0uMjYtLjIyLTEtLjE1LTEuMDEtLjEtMS4wMi0uMDQtMS4wMy4wMi0xLjAzLjA4LTEuMDQuMTUtMS4wMy4yLTEuMDMuMjgtMS4wMi4zNC0xLjAyLjQtMSAuNDgtLjk5LjU0LS45OC42Mi0uOTYuNjktLjkzLjc2LS45Mi44NC0uODhMMzA4LjEzIDk1LjQxbC41NS0uNTMuNTYtLjUuNTctLjQ3LjU5LS40NS42LS40Mi42LS4zOS42Mi0uMzYuNjMtLjM0LjY0LS4zMS42NS0uMjkuNjUtLjI1LjY3LS4yMy42Ni0uMjEuNjgtLjE3LjY3LS4xNS42OC0uMTIuNjktLjEuNjgtLjA3LjY5LS4wNC42OS0uMDEuNjkuMDEuNjkuMDQuNjguMDd6IiBpZD0iYiIvPjwvZGVmcz48dXNlIHhsaW5rOmhyZWY9IiNhIiBmaWxsLW9wYWNpdHk9IjAiLz48dXNlIHhsaW5rOmhyZWY9IiNiIiBmaWxsPSIjZmZmIi8+PHVzZSB4bGluazpocmVmPSIjYiIgZmlsbC1vcGFjaXR5PSIwIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwIi8+PC9zdmc+"}}}]); \ No newline at end of file diff --git a/js/addon-entry-block-count.38b48a02dc94dbd9531e.js b/js/addon-entry-block-count.38b48a02dc94dbd9531e.js new file mode 100644 index 0000000..5d4dfd0 --- /dev/null +++ b/js/addon-entry-block-count.38b48a02dc94dbd9531e.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[7],{1786:function(e,t,n){"use strict";n.r(t),n.d(t,"resources",(function(){return o}));const o={"blockcount.js":async function({addon:e,console:t,msg:n}){const o=e.tab.traps.vm,s=()=>{let e=0,t=0,n=new Set(o.runtime.targets.map(e=>e.sprite.blocks._blocks));return n.forEach((n,o)=>{t+=Object.values(n).filter(e=>!e.parent).length,e+=Object.values(n).filter(e=>!e.shadow).length}),{blockCount:e,scriptCount:t,spriteCount:n.size-1}},a=async()=>{if(o.editingTarget){let t=null;for(;;){let a,c=(await e.tab.waitForElement("[class^='menu-bar_main-menu']",{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"],reduxCondition:e=>!e.scratchGui.mode.isPlayerOnly})).appendChild(document.createElement("span"));e.tab.displayNoneWhileDisabled(c),c.style.order=1,c.style.padding="9px",c.innerText=n("blocks",{num:s().blockCount}),t&&(o.off("PROJECT_CHANGED",t),o.runtime.off("PROJECT_LOADED",t)),t=async()=>{clearTimeout(a),a=setTimeout(async()=>{c.innerText=n("blocks",{num:s().blockCount})},1e3)},o.on("PROJECT_CHANGED",t),o.runtime.on("PROJECT_LOADED",t)}}else{let e=setTimeout((function(){a(),clearTimeout(e)}),1e3)}};a()}}}}]); \ No newline at end of file diff --git a/js/addon-entry-block-palette-icons.4be037b3c9b0d06031a6.js b/js/addon-entry-block-palette-icons.4be037b3c9b0d06031a6.js new file mode 100644 index 0000000..5d951db --- /dev/null +++ b/js/addon-entry-block-palette-icons.4be037b3c9b0d06031a6.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[8],{1686:function(M,I,g){var j=g(209);(M.exports=g(9)(!1)).push([M.i,'.scratchCategoryItemBubble {\n position: relative;\n}\n\n.scratchCategoryItemBubble::after {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n.scratchCategoryId-motion .scratchCategoryItemBubble::after {\n background-image: url('+j(g(1687))+");\n}\n\n.scratchCategoryId-looks .scratchCategoryItemBubble::after {\n background-image: url("+j(g(1688))+");\n}\n\n.scratchCategoryId-sound .scratchCategoryItemBubble::after {\n background-image: url("+j(g(1689))+");\n}\n\n.scratchCategoryId-events .scratchCategoryItemBubble::after {\n background-image: url("+j(g(1690))+");\n}\n\n.scratchCategoryId-control .scratchCategoryItemBubble::after {\n background-image: url("+j(g(1691))+");\n}\n\n.scratchCategoryId-sensing .scratchCategoryItemBubble::after {\n background-image: url("+j(g(1692))+");\n}\n\n.scratchCategoryId-operators .scratchCategoryItemBubble::after {\n background-image: url("+j(g(1693))+");\n}\n\n.scratchCategoryId-variables .scratchCategoryItemBubble::after {\n background-image: url("+j(g(1694))+");\n}\n\n.scratchCategoryId-lists .scratchCategoryItemBubble::after {\n background-image: url("+j(g(1695))+");\n}\n\n.scratchCategoryId-myBlocks .scratchCategoryItemBubble::after {\n background-image: url("+j(g(1696))+");\n}\n",""])},1687:function(M,I,g){M.exports=g.p+"static/assets/c088896fb05dc466b45ecaa1d5c4d007.svg"},1688:function(M,I,g){M.exports=g.p+"static/assets/e008ee0cb1202de1137823150da1644a.svg"},1689:function(M,I,g){M.exports=g.p+"static/assets/7b98085c05bdcd97dd0c6d4b34317793.svg"},1690:function(M,I,g){M.exports=g.p+"static/assets/9d7acb2e5784a9a1d52e564af3d8469b.svg"},1691:function(M,I,g){M.exports=g.p+"static/assets/e1249124e702a974df36355af6aa2385.svg"},1692:function(M,I,g){M.exports=g.p+"static/assets/7601fa61034e5d7d542538e1e4338a4e.svg"},1693:function(M,I,g){M.exports=g.p+"static/assets/ab2c140af0ffba6b515eebc2156742e2.svg"},1694:function(M,I,g){M.exports=g.p+"static/assets/4bfaa15915bc5fb88b40b3e1a537c3ea.svg"},1695:function(M,I,g){M.exports=g.p+"static/assets/bd6d382729ecbd23c5181cf2b327072f.svg"},1696:function(M,I,g){M.exports=g.p+"static/assets/318e019bdee5ed02903aa5f22a9903f2.svg"},1760:function(M,I,g){"use strict";g.r(I),g.d(I,"resources",(function(){return A}));var j=g(1686);const A={"userstyle.css":g.n(j).a,"icons/block_icon.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpIj48cGF0aCBkPSJtMzEuNDIgOS4wOS0xMy02YTEgMSAwIDAgMC0uODQgMGwtMTMgNkExIDEgMCAwIDAgNCAxMHYxN2ExIDEgMCAwIDAgLjU4LjkxbDEzIDZhMSAxIDAgMCAwIC44NCAwbDEzLTZBMSAxIDAgMCAwIDMyIDI3VjEwYTEgMSAwIDAgMC0uNTgtLjkxek0xOCA1LjEgMjguNjEgMTAgMTggMTQuOSA3LjM5IDEwek02IDExLjU2bDExIDUuMDh2MTQuOEw2IDI2LjM2em0xMyAxOS44OHYtMTQuOGwxMS01LjA4djE0Ljh6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZmlsbD0iI2ZmZiIvPjxwYXRoIGZpbGw9InJnYmEoMCwgMCwgMCwgMCkiIGQ9Ik0wIDBoMzZ2MzZIMHoiLz48L3N2Zz4=","icons/control_icon.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpIj48cGF0aCBkPSJNMTMgM0g3YTcgNyAwIDEgMCAwIDE0aDZhNyA3IDAgMSAwIDAtMTR6bTAgMTJhNSA1IDAgMSAxIC4wMDEtMTAuMDAxQTUgNSAwIDAgMSAxMyAxNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBmaWxsPSJyZ2JhKDAsIDAsIDAsIDApIiBkPSJNMCAwaDIwdjIwSDB6Ii8+PC9zdmc+","icons/events_icon.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGJhc2VQcm9maWxlPSJ0aW55IiBoZWlnaHQ9IjEzNyIgdmVyc2lvbj0iMS4yIiB3aWR0aD0iMTIxIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTEwNi4zNTEgMTkuNjIyYTcuMTgzIDcuMTgzIDAgMCAwLTcuODMgMS41NThjLTkuMDggOS4wNzMtMjMuODU1IDkuMDgtMzIuOTQyIDAtMTQuNjktMTQuNjc1LTM4LjU3NS0xNC42NzUtNTMuMjU4IDBhNy4xNjQgNy4xNjQgMCAwIDAtMi4xMDUgNS4wOHY5My4zODNjMCAzLjk2NSAzLjIxMSA3LjE4MyA3LjE4NCA3LjE4M3M3LjE4My0zLjIxOCA3LjE4My03LjE4M1Y4Ni45MzdjOS4xMy03LjE2MiAyMi40Mi02LjU0NCAzMC44MzggMS44NjggMTQuNjkgMTQuNjc1IDM4LjU4MiAxNC42NzUgNTMuMjU4IDBhNy4xNzcgNy4xNzcgMCAwIDAgMi4xMDUtNS4wNzlWMjYuMjZhNy4xODggNy4xODggMCAwIDAtNC40MzMtNi42Mzd6IiBmaWxsPSIjZmZmIiBjbGFzcz0iY3VycmVudExheWVyIi8+PC9zdmc+","icons/list_icon.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBzdHlsZT0iLW1zLXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZykiPjxwYXRoIGQ9Im04MC4xODIgNjcuNDU3LTM1LjQtLjAwMXYuMDAxbC0uMDA5LS4wMDFhMi4yNyAyLjI3IDAgMCAwLTIuMjY5IDIuMjY5YzAgLjA0Mi4wMS4wOC4wMTIuMTIxVjgwLjE4aC4wMTFhMi4yNjggMi4yNjggMCAwIDAgMi4yNTQgMi4yNjh2LjAwMWgzNS40di0uMDAyYTIuMjY4IDIuMjY4IDAgMCAwIDIuMjU0LTIuMjY4VjY5LjgyNWMuMDAyLS4wMzQuMDEtLjA2Ny4wMS0uMTAxYTIuMjY3IDIuMjY3IDAgMCAwLTIuMjYzLTIuMjY3em0tNDkuOTA0LS4wMDNIMTkuODIyYTIuMjcgMi4yNyAwIDAgMC0yLjI2OSAyLjI2OXYxMC40NTRhMi4yNjkgMi4yNjkgMCAwIDAgMi4yNjggMi4yNjloMTAuNDU1YTIuMjcgMi4yNyAwIDAgMCAyLjI2OS0yLjI2OVY2OS43MjNhMi4yNjcgMi4yNjcgMCAwIDAtMi4yNjctMi4yNjl6bTQ5LjkwNC0yNC45ODctMzUuNC0uMDAxdi4wMDFsLS4wMDktLjAwMWEyLjI3IDIuMjcgMCAwIDAtMi4yNjkgMi4yNjljMCAuMDQyLjAxLjA4LjAxMi4xMjFWNTUuMTloLjAxMWEyLjI2OCAyLjI2OCAwIDAgMCAyLjI1NCAyLjI2OHYuMDAxaDM1LjR2LS4wMDJhMi4yNjggMi4yNjggMCAwIDAgMi4yNTQtMi4yNjhWNDQuODM1Yy4wMDItLjAzNC4wMS0uMDY3LjAxLS4xMDFhMi4yNjcgMi4yNjcgMCAwIDAtMi4yNjMtMi4yNjd6bS00OS45MDQtLjAwM0gxOS44MjJhMi4yNyAyLjI3IDAgMCAwLTIuMjY5IDIuMjY5djEwLjQ1NGEyLjI2OSAyLjI2OSAwIDAgMCAyLjI2OCAyLjI2OWgxMC40NTVhMi4yNyAyLjI3IDAgMCAwIDIuMjY5LTIuMjY5VjQ0LjczM2EyLjI2NyAyLjI2NyAwIDAgMC0yLjI2Ny0yLjI2OXptMTIuMjM4LTEyLjE4OGguMDExYTIuMjY4IDIuMjY4IDAgMCAwIDIuMjU0IDIuMjY4di4wMDFoMzUuNHYtLjAwMmEyLjI2OCAyLjI2OCAwIDAgMCAyLjI1NC0yLjI2OFYxOS45MjFjLjAwMi0uMDM0LjAxLS4wNjcuMDEtLjEwMWEyLjI2OSAyLjI2OSAwIDAgMC0yLjI2NC0yLjI2OHYtLjAwMWgtMzUuNHYuMDAxbC0uMDA5LS4wMDFhMi4yNyAyLjI3IDAgMCAwLTIuMjY5IDIuMjY5YzAgLjA0Mi4wMS4wOC4wMTIuMTIxdjEwLjMzNXpNMzAuMjc4IDE3LjU1MUgxOS44MjJhMi4yNyAyLjI3IDAgMCAwLTIuMjY5IDIuMjY5djEwLjQ1NGEyLjI2OSAyLjI2OSAwIDAgMCAyLjI2OCAyLjI2OWgxMC40NTVhMi4yNyAyLjI3IDAgMCAwIDIuMjY5LTIuMjY5VjE5LjgyYTIuMjY2IDIuMjY2IDAgMCAwLTIuMjY3LTIuMjY5eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGZpbGw9InJnYmEoMCwgMCwgMCwgMCkiIGQ9Ik0wIDBoMTAwdjEwMEgweiIvPjwvc3ZnPg==","icons/looks_icon.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjEwMjQiIHN0eWxlPSItbXMtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKSI+PHBhdGggZD0iTTM5NiA1MTJhMTEyIDExMiAwIDEgMCAyMjQgMCAxMTIgMTEyIDAgMSAwLTIyNCAwem01NDYuMi0yNS44Qzg0Ny40IDI4Ni41IDcwNC4xIDE4NiA1MTIgMTg2Yy0xOTIuMiAwLTMzNS40IDEwMC41LTQzMC4yIDMwMC4zYTYwLjMgNjAuMyAwIDAgMCAwIDUxLjVDMTc2LjYgNzM3LjUgMzE5LjkgODM4IDUxMiA4MzhjMTkyLjIgMCAzMzUuNC0xMDAuNSA0MzAuMi0zMDAuMyA3LjctMTYuMiA3LjctMzUgMC01MS41ek01MDggNjg4Yy05Ny4yIDAtMTc2LTc4LjgtMTc2LTE3NnM3OC44LTE3NiAxNzYtMTc2IDE3NiA3OC44IDE3NiAxNzYtNzguOCAxNzYtMTc2IDE3NnoiIGZpbGw9IiNmZmYiLz48cGF0aCBmaWxsPSJyZ2JhKDAsIDAsIDAsIDApIiBkPSJNMCAwaDEwMjR2MTAyNEgweiIvPjwvc3ZnPg==","icons/motion_icon.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpIj48cGF0aCBkPSJtMi44OCA3Ljg4IDEuNTQgMS41NEM0LjE1IDEwLjIzIDQgMTEuMSA0IDEyYzAgNC40MSAzLjU5IDggOCA4czgtMy41OSA4LTgtMy41OS04LTgtOGMtLjkgMC0xLjc3LjE1LTIuNTguNDJMNy44OSAyLjg5QzkuMTUgMi4zMiAxMC41NCAyIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTBzLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyYzAtMS40Ny4zMi0yLjg2Ljg4LTQuMTJ6TTcgNS41QzcgNi4zMyA2LjMzIDcgNS41IDdTNCA2LjMzIDQgNS41IDQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjV6IiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbD0icmdiYSgwLCAwLCAwLCAwKSIgZD0iTTAgMGgyNHYyNEgweiIvPjwvc3ZnPg==","icons/operators_icon.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpIj48cGF0aCBkPSJNMTUuNiA1LjI5Yy0xLjEtLjEtMi4wNy43MS0yLjE3IDEuODJMMTMuMTggMTBIMTZ2MmgtM2wtLjQ0IDUuMDdhMy45ODYgMy45ODYgMCAwIDEtNC4zMyAzLjYzIDQuMDA3IDQuMDA3IDAgMCAxLTMuMDYtMS44N2wxLjUtMS41Yy4yNC43NC45IDEuMzEgMS43MyAxLjM4IDEuMS4xIDIuMDctLjcxIDIuMTctMS44MkwxMSAxMkg4di0yaDMuMTdsLjI3LTMuMDdjLjE5LTIuMiAyLjEzLTMuODMgNC4zMy0zLjYzIDEuMzEuMTEgMi40MS44NCAzLjA2IDEuODdsLTEuNSAxLjVjLS4yNC0uNzQtLjktMS4zMS0xLjczLTEuMzh6IiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbD0icmdiYSgwLCAwLCAwLCAwKSIgZD0iTTAgMGgyNHYyNEgweiIvPjwvc3ZnPg==","icons/sensing_icon.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpIj48cGF0aCBkPSJNOSAxMS4yNFY3LjVhMi41IDIuNSAwIDAgMSA1IDB2My43NGMxLjIxLS44MSAyLTIuMTggMi0zLjc0QzE2IDUuMDEgMTMuOTkgMyAxMS41IDNTNyA1LjAxIDcgNy41YzAgMS41Ni43OSAyLjkzIDIgMy43NHptOS44NCA0LjYzLTQuNTQtMi4yNmMtLjE3LS4wNy0uMzUtLjExLS41NC0uMTFIMTN2LTZjMC0uODMtLjY3LTEuNS0xLjUtMS41UzEwIDYuNjcgMTAgNy41djEwLjc0Yy0zLjYtLjc2LTMuNTQtLjc1LTMuNjctLjc1LS4zMSAwLS41OS4xMy0uNzkuMzNsLS43OS44IDQuOTQgNC45NGMuMjcuMjcuNjUuNDQgMS4wNi40NGg2Ljc5Yy43NSAwIDEuMzMtLjU1IDEuNDQtMS4yOGwuNzUtNS4yN2MuMDEtLjA3LjAyLS4xNC4wMi0uMiAwLS42Mi0uMzgtMS4xNi0uOTEtMS4zOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBmaWxsPSJyZ2JhKDAsIDAsIDAsIDApIiBkPSJNMCAwaDI0djI0SDB6Ii8+PC9zdmc+","icons/sound_icon.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpIj48cGF0aCBkPSJNMTQuNzA0IDMuNDQyYy4xOTEuMjI2LjI5Ni41MTIuMjk2LjgwOHYxNS41MDJhMS4yNSAxLjI1IDAgMCAxLTIuMDU4Ljk1NEw3Ljk3NSAxNi41SDQuMjVBMi4yNSAyLjI1IDAgMCAxIDIgMTQuMjV2LTQuNUEyLjI1IDIuMjUgMCAwIDEgNC4yNSA3LjVoMy43MjVsNC45NjgtNC4yMDRhMS4yNSAxLjI1IDAgMCAxIDEuNzYxLjE0N3ptMi40IDUuMTk4YS43NS43NSAwIDAgMSAxLjAzLjI1Yy41NzQuOTQuODYyIDEuOTkyLjg2MiAzLjE0IDAgMS4xNDktLjI4OCAyLjIwMS0uODYyIDMuMTQxYS43NS43NSAwIDEgMS0xLjI4LS43ODFjLjQyOC0uNzAyLjY0Mi0xLjQ4My42NDItMi4zNiAwLS44NzYtLjIxNC0xLjY1Ny0uNjQyLTIuMzU5YS43NS43NSAwIDAgMSAuMjUtMS4wM3oiIGZpbGw9IiNmZmYiLz48cGF0aCBmaWxsPSJyZ2JhKDAsIDAsIDAsIDApIiBkPSJNMCAwaDI0djI0SDB6Ii8+PC9zdmc+","icons/variables_icon.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQuNjQ5IDMuMDg0QTEgMSAwIDAgMSA1LjE2MyA0LjQgMTMuOTUgMTMuOTUgMCAwIDAgNCAxMGMwIDEuOTkzLjQxNiAzLjg4NiAxLjE2NCA1LjZhMSAxIDAgMCAxLTEuODMyLjhBMTUuOTUgMTUuOTUgMCAwIDEgMiAxMGMwLTIuMjc0LjQ3NS00LjQ0IDEuMzMyLTYuNGExIDEgMCAwIDEgMS4zMTctLjUxNnpNMTIuOTYgN2EzIDMgMCAwIDAtMi4zNDIgMS4xMjZsLS4zMjguNDEtLjExMS0uMjc5QTIgMiAwIDAgMCA4LjMyMyA3SDhhMSAxIDAgMCAwIDAgMmguMzIzbC41MzIgMS4zMy0xLjAzNSAxLjI5NWExIDEgMCAwIDEtLjc4MS4zNzVIN2ExIDEgMCAxIDAgMCAyaC4wMzlhMyAzIDAgMCAwIDIuMzQyLTEuMTI2bC4zMjgtLjQxLjExMS4yNzlBMiAyIDAgMCAwIDExLjY3NyAxNEgxMmExIDEgMCAxIDAgMC0yaC0uMzIzbC0uNTMyLTEuMzMgMS4wMzUtMS4yOTVBMSAxIDAgMCAxIDEyLjk2MSA5SDEzYTEgMSAwIDEgMCAwLTJoLS4wMzl6bTEuODc0LTIuNmExIDEgMCAwIDEgMS44MzMtLjhBMTUuOTUgMTUuOTUgMCAwIDEgMTggMTBjMCAyLjI3NC0uNDc1IDQuNDQtMS4zMzIgNi40YTEgMSAwIDEgMS0xLjgzMi0uOEExMy45NDkgMTMuOTQ5IDAgMCAwIDE2IDEwYzAtMS45OTMtLjQxNi0zLjg4Ni0xLjE2NS01LjZ6IiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbD0icmdiYSgwLCAwLCAwLCAwKSIgZD0iTTAgMGgyMHYyMEgweiIvPjwvc3ZnPg=="}}}]); \ No newline at end of file diff --git a/js/addon-entry-blocks2image.67668867d53396b1805f.js b/js/addon-entry-blocks2image.67668867d53396b1805f.js new file mode 100644 index 0000000..779d2ae --- /dev/null +++ b/js/addon-entry-blocks2image.67668867d53396b1805f.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[9],{1801:function(L,M,t){"use strict";t.r(M),t.d(M,"resources",(function(){return w}));const w={"userscript.js":async function({addon:L,console:M,msg:t}){function w(){let L=document.createElement("style");L.textContent='\n .blocklyText {\n fill: #fff;\n font-family: "Helvetica Neue", Helvetica, sans-serif;\n font-size: 12pt;\n font-weight: 500;\n }\n .blocklyNonEditableText>text, .blocklyEditableText>text {\n fill: #575E75;\n }\n .blocklyDropdownText {\n fill: #fff !important;\n }\n ';for(let M of document.querySelectorAll(".scratch-addons-style[data-addons*='editor-theme3']"))M.disabled||(L.textContent+=M.textContent);return L}function e(L){for(let M of document.documentElement.style)M.startsWith("--editorTheme3-")&&L.style.setProperty(M,document.documentElement.style.getPropertyValue(M))}let s=document.createElementNS("http://www.w3.org/2000/svg","svg");s.setAttribute("xmlns:html","http://www.w3.org/1999/xhtml"),s.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),s.setAttribute("version","1.1");let u=new Map;function i(L,M){let t;t=M?function(L,M){let t=s.cloneNode(),u=M.svgGroup_;u=u.cloneNode(!0);let i=u.getAttribute("data-shapes");return u.setAttribute("transform","translate(0,".concat("hat"===i?"18":"0",") ").concat(L?"scale(2)":"")),e(t),t.append(w()),t.append(u),t}(L,M):function(L){let M=s.cloneNode(),t=document.querySelector("svg.blocklySvg g.blocklyBlockCanvas");t=t.cloneNode(!0);let u=[],i=[];return t.childNodes.forEach(M=>{let t=M.getAttribute("transform").match(/translate\((.*?),(.*?)\)/)[1]||0,w=M.getAttribute("transform").match(/translate\((.*?),(.*?)\)/)[2]||0;u.push(t*(L?2:1)),i.push(w*(L?2:1)),M.style.display=""}),t.setAttribute("transform","translate(".concat(-Math.min(...u),",").concat(-Math.min(...i)+18*(L?2:1),") ").concat(L?"scale(2)":"")),e(M),M.append(w()),M.append(t),M}(L),t.querySelectorAll("text").forEach(L=>{L.innerHTML=L.innerHTML.replace(/ /g," ")});let i=window.location.origin;t.querySelectorAll("image").forEach(L=>{let M=u.get(L.getAttribute("xlink:href").substring(L.getAttribute("xlink:href").lastIndexOf("/")+1));M?L.setAttribute("xlink:href",M):0===L.getAttribute("xlink:href").indexOf("/static/")?L.setAttribute("xlink:href",i+L.getAttribute("xlink:href").slice(0)):0===L.getAttribute("xlink:href").indexOf("./static/")?L.setAttribute("xlink:href",i+L.getAttribute("xlink:href").slice(1)):0===L.getAttribute("xlink:href").indexOf("static/")&&L.setAttribute("xlink:href",i+"/"+L.getAttribute("xlink:href"))}),L?function(L){const M=new XMLSerializer,t=document.createElement("iframe");document.body.append(t),t.contentDocument.write(M.serializeToString(L));let{width:w,height:e}=t.contentDocument.body.querySelector("svg g").getBoundingClientRect();e+=40,L.setAttribute("width",w+"px"),L.setAttribute("height",e+"px");let s=document.createElement("canvas"),u=s.getContext("2d"),i=document.createElement("img");i.setAttribute("src","data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(M.serializeToString(L))))),i.onload=function(){s.height=i.height,s.width=i.width,u.drawImage(i,0,0,i.width,i.height);let L=s.toDataURL("image/png"),M=document.createElement("a");const w=new Date,e="".concat(w.toLocaleDateString(),"-").concat(w.toLocaleTimeString());M.download="block_".concat(e,".png"),M.href=L,M.click(),t.remove()}}(t):function(L){const M=document.createElement("a");document.body.appendChild(M);const t=new Blob([L],{type:"text"}),w=window.URL.createObjectURL(t);M.href=w;const e=new Date,s="".concat(e.toLocaleDateString(),"-").concat(e.toLocaleTimeString());M.download="block_".concat(s,".svg"),M.click(),window.URL.revokeObjectURL(w),document.body.removeChild(M)}((new XMLSerializer).serializeToString(t))}u.set("repeat.svg","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9InJlcGVhdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiNDRjhCMTc7fQoJLnN0MXtmaWxsOiNGRkZGRkY7fQo8L3N0eWxlPgo8dGl0bGU+cmVwZWF0PC90aXRsZT4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTIzLjMsMTFjLTAuMywwLjYtMC45LDEtMS41LDFoLTEuNmMtMC4xLDEuMy0wLjUsMi41LTEuMSwzLjZjLTAuOSwxLjctMi4zLDMuMi00LjEsNC4xCgljLTEuNywwLjktMy42LDEuMi01LjUsMC45Yy0xLjgtMC4zLTMuNS0xLjEtNC45LTIuM2MtMC43LTAuNy0wLjctMS45LDAtMi42YzAuNi0wLjYsMS42LTAuNywyLjMtMC4ySDdjMC45LDAuNiwxLjksMC45LDIuOSwwLjkKCXMxLjktMC4zLDIuNy0wLjljMS4xLTAuOCwxLjgtMi4xLDEuOC0zLjVoLTEuNWMtMC45LDAtMS43LTAuNy0xLjctMS43YzAtMC40LDAuMi0wLjksMC41LTEuMmw0LjQtNC40YzAuNy0wLjYsMS43LTAuNiwyLjQsMEwyMyw5LjIKCUMyMy41LDkuNywyMy42LDEwLjQsMjMuMywxMXoiLz4KPHBhdGggY2xhc3M9InN0MSIgZD0iTTIxLjgsMTFoLTIuNmMwLDEuNS0wLjMsMi45LTEsNC4yYy0wLjgsMS42LTIuMSwyLjgtMy43LDMuNmMtMS41LDAuOC0zLjMsMS4xLTQuOSwwLjhjLTEuNi0wLjItMy4yLTEtNC40LTIuMQoJYy0wLjQtMC4zLTAuNC0wLjktMC4xLTEuMmMwLjMtMC40LDAuOS0wLjQsMS4yLTAuMWwwLDBjMSwwLjcsMi4yLDEuMSwzLjQsMS4xczIuMy0wLjMsMy4zLTFjMC45LTAuNiwxLjYtMS41LDItMi42CgljMC4zLTAuOSwwLjQtMS44LDAuMi0yLjhoLTIuNGMtMC40LDAtMC43LTAuMy0wLjctMC43YzAtMC4yLDAuMS0wLjMsMC4yLTAuNGw0LjQtNC40YzAuMy0wLjMsMC43LTAuMywwLjksMEwyMiw5LjgKCWMwLjMsMC4zLDAuNCwwLjYsMC4zLDAuOVMyMiwxMSwyMS44LDExeiIvPgo8L3N2Zz4K"),u.set("green-flag.svg","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9ImdyZWVuZmxhZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiM0NTk5M0Q7fQoJLnN0MXtmaWxsOiM0Q0JGNTY7fQo8L3N0eWxlPgo8dGl0bGU+Z3JlZW5mbGFnPC90aXRsZT4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTIwLjgsMy43Yy0wLjQtMC4yLTAuOS0wLjEtMS4yLDAuMmMtMiwxLjYtNC44LDEuNi02LjgsMGMtMi4zLTEuOS01LjYtMi4zLTguMy0xVjIuNWMwLTAuNi0wLjUtMS0xLTEKCXMtMSwwLjQtMSwxdjE4LjhjMCwwLjUsMC41LDEsMSwxaDAuMWMwLjUsMCwxLTAuNSwxLTF2LTYuNGMxLTAuNywyLjEtMS4yLDMuNC0xLjNjMS4yLDAsMi40LDAuNCwzLjQsMS4yYzIuOSwyLjMsNywyLjMsOS44LDAKCWMwLjMtMC4yLDAuNC0wLjUsMC40LTAuOVY0LjdDMjEuNiw0LjIsMjEuMywzLjgsMjAuOCwzLjd6IE0yMC41LDEzLjlDMjAuNSwxMy45LDIwLjUsMTMuOSwyMC41LDEzLjlDMTgsMTYsMTQuNCwxNiwxMS45LDE0CgljLTEuMS0wLjktMi41LTEuNC00LTEuNGMtMS4yLDAuMS0yLjMsMC41LTMuNCwxLjFWNEM3LDIuNiwxMCwyLjksMTIuMiw0LjZjMi40LDEuOSw1LjcsMS45LDguMSwwYzAuMSwwLDAuMSwwLDAuMiwwCgljMCwwLDAuMSwwLjEsMC4xLDAuMUwyMC41LDEzLjl6Ii8+CjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0yMC42LDQuOGwtMC4xLDkuMWMwLDAsMCwwLjEsMCwwLjFjLTIuNSwyLTYuMSwyLTguNiwwYy0xLjEtMC45LTIuNS0xLjQtNC0xLjRjLTEuMiwwLjEtMi4zLDAuNS0zLjQsMS4xVjQKCUM3LDIuNiwxMCwyLjksMTIuMiw0LjZjMi40LDEuOSw1LjcsMS45LDguMSwwYzAuMSwwLDAuMSwwLDAuMiwwQzIwLjUsNC43LDIwLjYsNC43LDIwLjYsNC44eiIvPgo8L3N2Zz4K"),u.set("rotate-left.svg","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIGlkPSJyb3RhdGUtY2xvY2t3aXNlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHN0eWxlPi5jbHMtMXtmaWxsOiMzZDc5Y2M7fS5jbHMtMntmaWxsOiNmZmY7fTwvc3R5bGU+PHRpdGxlPnJvdGF0ZS1jbG9ja3dpc2U8L3RpdGxlPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIwLjM0LDE4LjIxYTEwLjI0LDEwLjI0LDAsMCwxLTguMSw0LjIyLDIuMjYsMi4yNiwwLDAsMS0uMTYtNC41MmgwYTUuNTgsNS41OCwwLDAsMCw0LjI1LTIuNTMsNS4wNiw1LjA2LDAsMCwwLC41NC00LjYyQTQuMjUsNC4yNSwwLDAsMCwxNS41NSw5YTQuMzEsNC4zMSwwLDAsMC0yLS44QTQuODIsNC44MiwwLDAsMCwxMC40LDlsMS4xMiwxLjQxQTEuNTksMS41OSwwLDAsMSwxMC4zNiwxM0gyLjY3YTEuNTYsMS41NiwwLDAsMS0xLjI2LS42M0ExLjU0LDEuNTQsMCwwLDEsMS4xMywxMUwyLjg1LDMuNTdBMS41OSwxLjU5LDAsMCwxLDQuMzgsMi40LDEuNTcsMS41NywwLDAsMSw1LjYyLDNMNi43LDQuMzVhMTAuNjYsMTAuNjYsMCwwLDEsNy43Mi0xLjY4QTkuODgsOS44OCwwLDAsMSwxOSw0LjgxLDkuNjEsOS42MSwwLDAsMSwyMS44Myw5LDEwLjA4LDEwLjA4LDAsMCwxLDIwLjM0LDE4LjIxWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTE5LjU2LDE3LjY1YTkuMjksOS4yOSwwLDAsMS03LjM1LDMuODMsMS4zMSwxLjMxLDAsMCwxLS4wOC0yLjYyLDYuNTMsNi41MywwLDAsMCw1LTIuOTIsNi4wNSw2LjA1LDAsMCwwLC42Ny01LjUxLDUuMzIsNS4zMiwwLDAsMC0xLjY0LTIuMTYsNS4yMSw1LjIxLDAsMCwwLTIuNDgtMUE1Ljg2LDUuODYsMCwwLDAsOSw4Ljg0TDEwLjc0LDExYS41OS41OSwwLDAsMS0uNDMsMUgyLjdhLjYuNiwwLDAsMS0uNi0uNzVMMy44MSwzLjgzYS41OS41OSwwLDAsMSwxLS4yMWwxLjY3LDIuMWE5LjcxLDkuNzEsMCwwLDEsNy43NS0yLjA3LDguODQsOC44NCwwLDAsMSw0LjEyLDEuOTIsOC42OCw4LjY4LDAsMCwxLDIuNTQsMy43MkE5LjE0LDkuMTQsMCwwLDEsMTkuNTYsMTcuNjVaIi8+PC9zdmc+"),u.set("rotate-right.svg","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIGlkPSJyb3RhdGUtY291bnRlci1jbG9ja3dpc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzNkNzljYzt9LmNscy0ye2ZpbGw6I2ZmZjt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPnJvdGF0ZS1jb3VudGVyLWNsb2Nrd2lzZTwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjIuNjgsMTIuMmExLjYsMS42LDAsMCwxLTEuMjcuNjNIMTMuNzJhMS41OSwxLjU5LDAsMCwxLTEuMTYtMi41OGwxLjEyLTEuNDFhNC44Miw0LjgyLDAsMCwwLTMuMTQtLjc3LDQuMzEsNC4zMSwwLDAsMC0yLC44LDQuMjUsNC4yNSwwLDAsMC0xLjM0LDEuNzMsNS4wNiw1LjA2LDAsMCwwLC41NCw0LjYyQTUuNTgsNS41OCwwLDAsMCwxMiwxNy43NGgwYTIuMjYsMi4yNiwwLDAsMS0uMTYsNC41MkExMC4yNSwxMC4yNSwwLDAsMSwzLjc0LDE4LDEwLjE0LDEwLjE0LDAsMCwxLDIuMjUsOC43OCw5LjcsOS43LDAsMCwxLDUuMDgsNC42NCw5LjkyLDkuOTIsMCwwLDEsOS42NiwyLjVhMTAuNjYsMTAuNjYsMCwwLDEsNy43MiwxLjY4bDEuMDgtMS4zNWExLjU3LDEuNTcsMCwwLDEsMS4yNC0uNiwxLjYsMS42LDAsMCwxLDEuNTQsMS4yMWwxLjcsNy4zN0ExLjU3LDEuNTcsMCwwLDEsMjIuNjgsMTIuMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yMS4zOCwxMS44M0gxMy43N2EuNTkuNTksMCwwLDEtLjQzLTFsMS43NS0yLjE5YTUuOSw1LjksMCwwLDAtNC43LTEuNTgsNS4wNyw1LjA3LDAsMCwwLTQuMTEsMy4xN0E2LDYsMCwwLDAsNywxNS43N2E2LjUxLDYuNTEsMCwwLDAsNSwyLjkyLDEuMzEsMS4zMSwwLDAsMS0uMDgsMi42Miw5LjMsOS4zLDAsMCwxLTcuMzUtMy44MkE5LjE2LDkuMTYsMCwwLDEsMy4xNyw5LjEyLDguNTEsOC41MSwwLDAsMSw1LjcxLDUuNCw4Ljc2LDguNzYsMCwwLDEsOS44MiwzLjQ4YTkuNzEsOS43MSwwLDAsMSw3Ljc1LDIuMDdsMS42Ny0yLjFhLjU5LjU5LDAsMCwxLDEsLjIxTDIyLDExLjA4QS41OS41OSwwLDAsMSwyMS4zOCwxMS44M1oiLz48L3N2Zz4="),u.set("dropdown-arrow.svg","data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMi43MSIgaGVpZ2h0PSI4Ljc5IiB2aWV3Qm94PSIwIDAgMTIuNzEgOC43OSI+PHRpdGxlPmRyb3Bkb3duLWFycm93PC90aXRsZT48ZyBvcGFjaXR5PSIwLjEiPjxwYXRoIGQ9Ik0xMi43MSwyLjQ0QTIuNDEsMi40MSwwLDAsMSwxMiw0LjE2TDguMDgsOC4wOGEyLjQ1LDIuNDUsMCwwLDEtMy40NSwwTDAuNzIsNC4xNkEyLjQyLDIuNDIsMCwwLDEsMCwyLjQ0LDIuNDgsMi40OCwwLDAsMSwuNzEuNzFDMSwwLjQ3LDEuNDMsMCw2LjM2LDBTMTEuNzUsMC40NiwxMiwuNzFBMi40NCwyLjQ0LDAsMCwxLDEyLjcxLDIuNDRaIiBmaWxsPSIjMjMxZjIwIi8+PC9nPjxwYXRoIGQ9Ik02LjM2LDcuNzlhMS40MywxLjQzLDAsMCwxLTEtLjQyTDEuNDIsMy40NWExLjQ0LDEuNDQsMCwwLDEsMC0yYzAuNTYtLjU2LDkuMzEtMC41Niw5Ljg3LDBhMS40NCwxLjQ0LDAsMCwxLDAsMkw3LjM3LDcuMzdBMS40MywxLjQzLDAsMCwxLDYuMzYsNy43OVoiIGZpbGw9IiNmZmYiLz48L3N2Zz4="),L.tab.createBlockContextMenu(M=>{var w,e;if(L.self.disabled)return M;let s=document.querySelector("svg.blocklySvg g.blocklyBlockCanvas");const u=M.findIndex(L=>L._isDevtoolsFirstItem),j=-1!==u?u:M.length;return M.splice(j,0,{enabled:!(null==s||null===(w=s.childNodes)||void 0===w||!w.length),text:t("export_all_to_SVG"),callback:()=>{i(!1)},separator:!0},{enabled:!(null==s||null===(e=s.childNodes)||void 0===e||!e.length),text:t("export_all_to_PNG"),callback:()=>{i(!0)},separator:!1}),M},{workspace:!0}),L.tab.createBlockContextMenu((M,w)=>{if(L.self.disabled)return M;const e=M.findIndex(L=>L._isDevtoolsFirstItem),s=-1!==e?e:M.length;return M.splice(s,0,{enabled:!0,text:t("export_selected_to_SVG"),callback:()=>{i(!1,w)},separator:!0},{enabled:!0,text:t("export_selected_to_PNG"),callback:()=>{i(!0,w)},separator:!1}),M},{blocks:!0})}}}}]); \ No newline at end of file diff --git a/js/addon-entry-cat-blocks.7c945db7fbbeb97d968c.js b/js/addon-entry-cat-blocks.7c945db7fbbeb97d968c.js new file mode 100644 index 0000000..b740cd4 --- /dev/null +++ b/js/addon-entry-cat-blocks.7c945db7fbbeb97d968c.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[10],{1779:function(t,e,a){"use strict";a.r(e),a.d(e,"resources",(function(){return s}));const s={"userscript.js":async function({addon:t,console:e}){const a=await t.tab.traps.getBlockly(),s=t.settings.get("watch");a.BlockSvg.START_HAT_HEIGHT=31,a.BlockSvg.START_HAT_PATH="c2.6,-2.3 5.5,-4.3 8.5,-6.2c-1,-12.5 5.3,-23.3 8.4,-24.8c3.7,-1.8 16.5,13.1 18.4,15.4c8.4,-1.3 17,-1.3 25.4,0c1.9,-2.3 14.7,-17.2 18.4,-15.4c3.1,1.5 9.4,12.3 8.4,24.8c3,1.8 5.9,3.9 8.5,6.1",a.BlockSvg.TOP_LEFT_CORNER_DEFINE_HAT="c0,-7.1 3.7,-13.3 9.3,-16.9c1.7,-7.5 5.4,-13.2 7.6,-14.2c2.6,-1.3 10,6 14.6,11.1h33c4.6,-5.1 11.9,-12.4 14.6,-11.1c1.9,0.9 4.9,5.2 6.8,11.1c2.6,0,5.2,0,7.8,0",a.BlockSvg.prototype.renderCatFace_=function(){this.catPath_.svgFace.setAttribute("fill","#000000");var t=a.utils.createSvgElement("path",{},this.svgFace_);t.setAttribute("d","M25.2-1.1c0.1,0,0.2,0,0.2,0l8.3-2.1l-7-4.8c-0.5-0.3-1.1-0.2-1.4,0.3s-0.2,1.1,0.3,1.4L29-4.1l-4,1c-0.5,0.1-0.9,0.7-0.7,1.2C24.3-1.4,24.7-1.1,25.2-1.1z"),t.setAttribute("fill-opacity","0"),this.catPath_.svgFace.closedEye=t;var e=a.utils.createSvgElement("path",{},this.svgFace_);e.setAttribute("d","M62.4-1.1c-0.1,0-0.2,0-0.2,0l-8.3-2.1l7-4.8c0.5-0.3,1.1-0.2,1.4,0.3s0.2,1.1-0.3,1.4l-3.4,2.3l4,1c0.5,0.1,0.9,0.7,0.7,1.2C63.2-1.4,62.8-1.1,62.4-1.1z"),e.setAttribute("fill-opacity","0"),this.catPath_.svgFace.closedEye2=e;var s=a.utils.createSvgElement("circle",{},this.svgFace_);s.setAttribute("cx","59.2"),s.setAttribute("cy","-3.3"),s.setAttribute("r","3.4"),s.setAttribute("fill-opacity","0.6"),this.catPath_.svgFace.eye=s;var c=a.utils.createSvgElement("circle",{},this.svgFace_);c.setAttribute("cx","29.1"),c.setAttribute("cy","-3.3"),c.setAttribute("r","3.4"),c.setAttribute("fill-opacity","0.6"),this.catPath_.svgFace.eye2=c;var i=a.utils.createSvgElement("path",{},this.svgFace_);i.setAttribute("d","M45.6,0.1c-0.9,0-1.7-0.3-2.3-0.9c-0.6,0.6-1.3,0.9-2.2,0.9c-0.9,0-1.8-0.3-2.3-0.9c-1-1.1-1.1-2.6-1.1-2.8c0-0.5,0.5-1,1-1l0,0c0.6,0,1,0.5,1,1c0,0.4,0.1,1.7,1.4,1.7c0.5,0,0.7-0.2,0.8-0.3c0.3-0.3,0.4-1,0.4-1.3c0-0.1,0-0.1,0-0.2c0-0.5,0.5-1,1-1l0,0c0.5,0,1,0.4,1,1c0,0,0,0.1,0,0.2c0,0.3,0.1,0.9,0.4,1.2C44.8-2.2,45-2,45.5-2s0.7-0.2,0.8-0.3c0.3-0.4,0.4-1.1,0.3-1.3c0-0.5,0.4-1,0.9-1.1c0.5,0,1,0.4,1.1,0.9c0,0.2,0.1,1.8-0.8,2.8C47.5-0.4,46.8,0.1,45.6,0.1z"),i.setAttribute("fill-opacity","0.6"),this.catPath_.ear.setAttribute("d","M73.1-15.6c1.7-4.2,4.5-9.1,5.8-8.5c1.6,0.8,5.4,7.9,5,15.4c0,0.6-0.7,0.7-1.1,0.5c-3-1.6-6.4-2.8-8.6-3.6C72.8-12.3,72.4-13.7,73.1-15.6z"),this.catPath_.ear.setAttribute("fill","#FFD5E6"),this.catPath_.ear2.setAttribute("d","M22.4-15.6c-1.7-4.2-4.5-9.1-5.8-8.5c-1.6,0.8-5.4,7.9-5,15.4c0,0.6,0.7,0.7,1.1,0.5c3-1.6,6.4-2.8,8.6-3.6C22.8-12.3,23.2-13.7,22.4-15.6z"),this.catPath_.ear2.setAttribute("fill","#FFD5E6")},a.BlockSvg.prototype.initCatStuff=function(){if(!this.hasInitCatStuff){this.hasInitCatStuff=!0;var t="c-1,-12.5 5.3,-23.3 8.4,-24.8c3.7,-1.8 16.5,13.1 18.4,15.4",e="c-5.8,-4.8 -8,-18 -4.9,-19.5c3.7,-1.8 24.5,11.1 31.7,10.1",s="c1.9,-2.3 14.7,-17.2 18.4,-15.4c3.1,1.5 9.4,12.3 8.4,24.8",c="c7.2,1 28,-11.9 31.7,-10.1c3.1,1.5 0.9,14.7 -4.9,19.5",i="c0,-7.1 3.7,-13.3 9.3,-16.9c1.7,-7.5 5.4,-13.2 7.6,-14.2c2.6,-1.3 10,6 14.6,11.1",r="h33c4.6,-5.1 11.9,-12.4 14.6,-11.1c1.9,0.9 4.9,5.2 6.8,11.1c2.6,0,5.2,0,7.8,0",o="c0,-4.6 1.6,-8.9 4.3,-12.3c-2.4,-5.6 -2.9,-12.4 -0.7,-13.4c2.1,-1 9.6,2.6 17,5.8c2.6,0 6.2,0 10.9,0",l="c0,0 25.6,0 44,0c7.4,-3.2 14.8,-6.8 16.9,-5.8c1.2,0.6 1.6,2.9 1.3,5.8",n=this;this.catPath_.ear=a.utils.createSvgElement("path",{},this.catPath_),this.catPath_.ear2=a.utils.createSvgElement("path",{},this.catPath_),this.RTL&&(this.catPath_.ear.setAttribute("transform","scale(-1 1)"),this.catPath_.ear2.setAttribute("transform","scale(-1 1)")),this.catPath_.addEventListener("mouseenter",(function(t){clearTimeout(n.blinkFn),t.target.svgFace.eye&&(t.target.svgFace.eye.setAttribute("fill-opacity","0"),t.target.svgFace.eye2.setAttribute("fill-opacity","0"),t.target.svgFace.closedEye.setAttribute("fill-opacity","0.6"),t.target.svgFace.closedEye2.setAttribute("fill-opacity","0.6")),n.blinkFn=setTimeout((function(){t.target.svgFace.eye&&(t.target.svgFace.eye.setAttribute("fill-opacity","0.6"),t.target.svgFace.eye2.setAttribute("fill-opacity","0.6"),t.target.svgFace.closedEye.setAttribute("fill-opacity","0"),t.target.svgFace.closedEye2.setAttribute("fill-opacity","0"))}),100)})),this.catPath_.ear.addEventListener("mouseenter",(function(){clearTimeout(n.earFn),clearTimeout(n.ear2Fn),n.catPath_.ear.setAttribute("fill-opacity","0"),n.catPath_.ear2.setAttribute("fill-opacity","");var a=n.catPath_.svgBody.getAttribute("d");a=(a=(a=(a=a.replace(s,c)).replace(r,l)).replace(e,t)).replace(o,i),n.catPath_.svgBody.setAttribute("d",a),n.earFn=setTimeout((function(){n.catPath_.ear.setAttribute("fill-opacity","");var t=n.catPath_.svgBody.getAttribute("d");t=(t=t.replace(c,s)).replace(l,r),n.catPath_.svgBody.setAttribute("d",t)}),50)})),this.catPath_.ear2.addEventListener("mouseenter",(function(){clearTimeout(n.earFn),clearTimeout(n.ear2Fn),n.catPath_.ear2.setAttribute("fill-opacity","0"),n.catPath_.ear.setAttribute("fill-opacity","");var a=n.catPath_.svgBody.getAttribute("d");a=(a=(a=(a=a.replace(t,e)).replace(i,o)).replace(c,s)).replace(l,r),n.catPath_.svgBody.setAttribute("d",a),n.ear2Fn=setTimeout((function(){n.catPath_.ear2.setAttribute("fill-opacity","");var a=n.catPath_.svgBody.getAttribute("d");a=(a=a.replace(e,t)).replace(o,i),n.catPath_.svgBody.setAttribute("d",a)}),50)})),this.RTL&&(this.svgFace_.style.transform="translate(-87px, 0px)"),this.shouldWatchMouse()&&(this.windowListener=function(t){var e=Date.now();if(!(e-50&&t.x-50-50&&t.y-50{n.target.closest("[class*='stage-header_stage-button-first']")?document.body.classList.add("sa-clones-small"):n.target.closest("[class*='stage-header_stage-button-last']")&&document.body.classList.remove("sa-clones-small")},{capture:!0});let c=document.createElement("div");n.tab.displayNoneWhileDisabled(c);let o=document.createElement("div"),i=document.createElement("span"),l=document.createElement("span");c.className="clone-container-container",o.className="clone-container",i.className="clone-count",l.className="clone-icon",c.appendChild(l),c.appendChild(o),o.appendChild(i);let d=0;const u=Array(301).fill().map((n,e)=>t("clones",{cloneCount:e}));function j(n){const e=a.runtime._cloneCounter;(e!==d||n)&&(d=e,0===e?c.dataset.count="none":e>=a.runtime.runtimeOptions.maxClones?c.dataset.count="full":c.dataset.count="",i.dataset.str=s?e:u[e]||t("clones",{cloneCount:e}),c.style.display=0===e?"none":"flex")}n.settings.addEventListener("change",()=>{s=n.settings.get("showicononly"),j(!0)});const I=a.runtime._step;for(a.runtime._step=function(...n){const e=I.call(this,...n);return j(),e};;)await n.tab.waitForElement('[class*="controls_controls-container"]',{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"]}),("editor"===n.tab.editorMode||n.tab.redux.state.scratchGui.mode.isEmbedded)&&n.tab.appendToSharedSpace({space:"afterStopButton",element:c,order:2})},"style.css":t.n(a).a,"300cats.svg":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS0xLTFoODAydjYwMkgtMXoiLz48ZyBmaWxsPSIjZmZkMWQ4Ij48Y2lyY2xlIGN5PSI4LjQ4NCIgY3g9IjcuNDE0IiByPSI0LjczMyIvPjxwYXRoIGQ9Im0zLjg0MyA2LjEuMjk2LTQuODMgMi4yMzYgNC4yNjVtMS40MTEtLjEwOEw5LjQuODY2bC45NzUgNC43MTYiIGZpbGwtb3BhY2l0eT0ibnVsbCIvPjwvZz48ZyBmaWxsPSIjZmY5MWEzIj48Y2lyY2xlIGN5PSI5LjEwNCIgY3g9IjcuOTg3IiByPSI0LjczMyIvPjxwYXRoIGQ9Im00LjQxNSA2LjcyLjI5Ni00LjgzIDIuMjM3IDQuMjY1bTEuNDEtLjEwOCAxLjYxNi00LjU2Ljk3NCA0LjcxNSIgZmlsbC1vcGFjaXR5PSJudWxsIi8+PC9nPjxnIGZpbGw9IiNmZjY2ODAiPjxjaXJjbGUgY3k9IjkuNDg2IiBjeD0iOC45NDEiIHI9IjQuNzMzIi8+PHBhdGggZD0ibTUuMzcgNy4xMDIuMjk1LTQuODMgMi4yMzcgNC4yNjVtMS40MS0uMTA3IDEuNjE2LTQuNTYyLjk3NCA0LjcxNiIgZmlsbC1vcGFjaXR5PSJudWxsIi8+PC9nPjwvc3ZnPg==","cat.svg":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS0xLTFoODAydjYwMkgtMXoiLz48ZyBmaWxsPSIjZGNjOWZmIj48Y2lyY2xlIGN5PSI4LjQ4NCIgY3g9IjcuNDE0IiByPSI0LjczMyIvPjxwYXRoIGQ9Im0zLjg0MyA2LjEuMjk2LTQuODMgMi4yMzYgNC4yNjVtMS40MTEtLjEwOEw5LjQuODY2bC45NzUgNC43MTYiIGZpbGwtb3BhY2l0eT0ibnVsbCIvPjwvZz48ZyBmaWxsPSIjYmM5NmZmIj48Y2lyY2xlIGN5PSI5LjEwNCIgY3g9IjcuOTg3IiByPSI0LjczMyIvPjxwYXRoIGQ9Im00LjQxNSA2LjcyLjI5Ni00LjgzIDIuMjM3IDQuMjY1bTEuNDEtLjEwOCAxLjYxNi00LjU2Ljk3NCA0LjcxNSIgZmlsbC1vcGFjaXR5PSJudWxsIi8+PC9nPjxnIGZpbGw9IiNhMDY1ZmYiPjxjaXJjbGUgY3k9IjkuNDg2IiBjeD0iOC45NDEiIHI9IjQuNzMzIi8+PHBhdGggZD0ibTUuMzcgNy4xMDIuMjk1LTQuODMgMi4yMzcgNC4yNjVtMS40MS0uMTA3IDEuNjE2LTQuNTYyLjk3NCA0LjcxNiIgZmlsbC1vcGFjaXR5PSJudWxsIi8+PC9nPjwvc3ZnPg=="}}}]); \ No newline at end of file diff --git a/js/addon-entry-columns.7d6aa859020164e09323.js b/js/addon-entry-columns.7d6aa859020164e09323.js new file mode 100644 index 0000000..d0c8586 --- /dev/null +++ b/js/addon-entry-columns.7d6aa859020164e09323.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[12],{1748:function(t,e,n){(t.exports=n(9)(!1)).push([t.i,'[class*="blocks_blocks_"] .blocklyToolboxDiv {\n width: 310px;\n height: auto !important;\n}\n\n.scratchCategoryMenu {\n width: 100%;\n columns: 2;\n column-gap: 0.5rem;\n padding: 0.25rem;\n}\n\n.scratchCategorySecondMenu {\n columns: 1;\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n padding-bottom: 2.25rem;\n}\n\n.scratchCategorySecondMenu:empty {\n padding-top: 0;\n padding-bottom: 2rem;\n}\n\n.scratchCategoryMenuItem {\n display: inline-flex; /* inline so that it isn\'t split between both columns */\n width: 100%;\n padding: 0.25rem;\n border-radius: 0.875rem;\n}\n\n.scratchCategoryItemBubble,\n.scratchCategoryItemIcon {\n margin: 0;\n margin-inline-end: 0.5rem;\n}\n\n.scratchCategoryMenuItemLabel {\n flex: 1;\n display: flex;\n align-items: center;\n}\n\n[class*="gui_extension-button-container_"] {\n top: var(--sa-add-extension-button-y);\n bottom: auto;\n margin-inline-start: 0.5rem;\n width: calc(308px - 1rem);\n height: calc(1.75rem - 2px);\n background-color: transparent;\n border-color: var(--ui-black-transparent, rgba(0, 0, 0, 0.15));\n}\n\n/* [dir] is for specificity to override editor-stage-left */\n[dir] [class*="gui_extension-button-container_"] {\n border-radius: 0.25rem;\n}\n\n[class*="gui_extension-button-container_"]:hover {\n background-color: var(--ui-tertiary, white);\n}\n\n[class*="gui_extension-button-container_"]::before {\n display: none;\n}\n\n[class*="gui_extension-button_"] {\n display: flex;\n align-items: center;\n padding-inline: 0;\n}\n\n[class*="gui_extension-button-icon_"] {\n filter: var(--editorDarkMode-categoryMenu-invertedFilter, brightness(0.4));\n}\n\n[class*="gui_extension-button-container_"]:hover [class*="gui_extension-button-icon_"] {\n filter: var(--editorDarkMode-accent-invertedFilter, brightness(0.4));\n}\n[theme="dark"] [class*="gui_extension-button-icon_"] {\n filter: none !important;\n}\n\n.sa-add-extension-label {\n color: var(--text-primary, #575e75);\n font-size: 0.65rem;\n}\n\n[class*="gui_extension-button-container_"]:hover .sa-add-extension-label {\n color: var(--text-primary, #575e75);\n font-size: 0.65rem;\n}\n\n/* hide-flyout compatibility */\n\n[class*="gui_tabs_"] {\n --sa-flyout-width: 310px;\n --sa-category-width: 0;\n}\n\n.sa-flyout-placeHolder {\n top: calc(var(--sa-flyout-y));\n}\n',""])},1814:function(t,e,n){"use strict";n.r(e),n.d(e,"resources",(function(){return s}));var o=n(1748);const s={"userscript.js":async function({addon:t,msg:e,console:n}){const o=await t.tab.traps.getBlockly(),s=o.Toolbox.prototype.position;o.Toolbox.prototype.position=function(){s.call(this),this.HtmlDiv&&!this.HtmlDiv._observer&&(this.HtmlDiv._observer=new ResizeObserver(()=>{this.flyout_.position()}),this.HtmlDiv._observer.observe(this.HtmlDiv))};const i=o.VerticalFlyout.prototype.position;o.VerticalFlyout.prototype.position=function(){if(i.call(this),t.self.disabled||!this.isVisible())return;var e=this.targetWorkspace_.getMetrics();if(!e)return;var n=this.toolboxPosition_===o.TOOLBOX_AT_RIGHT?e.viewWidth-3:0,s=this.parentToolbox_.HtmlDiv.offsetHeight;this.width_=this.parentToolbox_.getWidth(),this.height_=Math.max(0,e.viewHeight-s),this.setBackgroundPath_(this.width_,this.height_),this.svgGroup_.setAttribute("width",this.width_),this.svgGroup_.setAttribute("height",this.height_);var a="translate("+n+"px,"+s+"px)";o.utils.setCssTransform(this.svgGroup_,a),this.scrollbar_&&(this.scrollbar_.setOrigin(n+(this.toolboxPosition_===o.TOOLBOX_AT_RIGHT?0:this.width_-this.getWidth()),s),this.scrollbar_.resize());const r=this.svgGroup_.closest("[class*='gui_tab-panel_']");r.style.setProperty("--sa-add-extension-button-y","".concat(s-33,"px")),r.parentElement.style.setProperty("--sa-flyout-y","".concat(s,"px"))};const a=o.VerticalFlyout.prototype.getWidth;o.VerticalFlyout.prototype.getWidth=function(){let e=a.call(this);return t.self.disabled||(e+=60),e};const r=o.Toolbox.CategoryMenu.prototype.createDom;o.Toolbox.CategoryMenu.prototype.createDom=function(){r.call(this),t.self.disabled||(this.secondTable=document.createElement("div"),this.secondTable.className="scratchCategorySecondMenu "+(this.parent_.horizontalLayout_?"scratchCategoryMenuHorizontal":"scratchCategoryMenu"),this.parentHtml_.appendChild(this.secondTable))};const l=o.Toolbox.CategoryMenu.prototype.populate;o.Toolbox.CategoryMenu.prototype.populate=function(e){if(!e)return;const n=["motion","looks","sound","events","control","sensing","operators","variables","lists","myBlocks"],s=[],i=e.cloneNode(!0);t.self.disabled||i.childNodes.forEach(t=>{"category"!==t.tagName||n.includes(t.id)||(s.push(t.cloneNode(!0)),t.remove())}),l.call(this,i);for(const t of s){const e=document.createElement("div");e.className="scratchCategoryMenuRow",this.secondTable.appendChild(e),t&&this.categories_.push(new o.Toolbox.Category(this,e,t))}t.self.disabled||(this.height_=this.table.offsetHeight+this.secondTable.offsetHeight)};const c=o.Toolbox.CategoryMenu.prototype.dispose;function d(){const e=o.getMainWorkspace(),n=e.getToolbox();if(!n)return;const s=n.categoryMenu_;s&&(s.secondTable&&!t.self.disabled||(s.dispose(),s.createDom(),n.populate_(e.options.languageTree),n.position()))}for(o.Toolbox.CategoryMenu.prototype.dispose=function(){c.call(this),this.secondTable&&(this.secondTable.remove(),this.secondTable=null)},d(),t.self.addEventListener("disabled",d),t.self.addEventListener("reenabled",d);;){const e=await t.tab.waitForElement("[class*='gui_extension-button_']",{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"],condition:()=>!t.tab.redux.state.scratchGui.mode.isPlayerOnly}),n=Object.assign(document.createElement("span"),{className:"sa-add-extension-label",innerText:t.tab.scratchMessage("gui.gui.addExtension")});t.tab.displayNoneWhileDisabled(n),e.appendChild(n),e.removeAttribute("title")}},"style.css":n.n(o).a}}}]); \ No newline at end of file diff --git a/js/addon-entry-custom-block-shape.15213e4070adae6e3dab.js b/js/addon-entry-custom-block-shape.15213e4070adae6e3dab.js new file mode 100644 index 0000000..62ba133 --- /dev/null +++ b/js/addon-entry-custom-block-shape.15213e4070adae6e3dab.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[13],{1790:function(_,R,E){"use strict";E.r(R),E.d(R,"resources",(function(){return I}));const I={"userscript.js":async function({addon:_,console:R}){var E=await _.tab.traps.getBlockly();!function(R){const I=E.BlockSvg;var N=_.tab.traps.vm;const{GRID_UNIT:T}=I;function A(...A){!function(R=_.settings.get("paddingSize"),N=_.settings.get("cornerSize"),A=_.settings.get("notchSize")){let D=R/100;N/=100,A/=100,I.SEP_SPACE_Y=2*T*D,I.MIN_BLOCK_X=16*T*D,I.MIN_BLOCK_X_OUTPUT=12*T*D,I.MIN_BLOCK_X_SHADOW_OUTPUT=10*T*D,I.MIN_BLOCK_Y=12*T*D,I.EXTRA_STATEMENT_ROW_Y=8*T*D,I.MIN_BLOCK_X_WITH_STATEMENT=40*T*D,I.MIN_BLOCK_Y_SINGLE_FIELD_OUTPUT=8*T*D,I.MIN_BLOCK_Y_REPORTER=10*T*D,I.MIN_STATEMENT_INPUT_HEIGHT=6*T*D,I.NOTCH_WIDTH=8*T*D,I.NOTCH_HEIGHT=2*T*D*A,I.NOTCH_START_PADDING=3*T,I.ICON_SEPARATOR_HEIGHT=10*T*D,I.NOTCH_PATH_LEFT="c 2,0 3,"+1*A+" 4,"+2*A+" l "+4*D*A+","+4*D*A+" c 1,"+1*A+" 2,"+2*A+" 4,"+2*A+" h "+24*(D-.5)+" c 2,0 3,-"+1*A+" 4,-"+2*A+" l "+4*D*A+","+-4*D*A+"c 1,-"+1*A+" 2,-"+2*A+" 4,-"+2*A,I.NOTCH_PATH_RIGHT="h "+(-4*(N-1)-5*(1-A))+"c -2,0 -3,"+1*A+" -4,"+2*A+" l "+-4*D*A+","+4*D*A+" c -1,"+1*A+" -2,"+2*A+" -4,"+2*A+" h "+-24*(D-.5)+" c -2,0 -3,-"+1*A+" -4,-"+2*A+" l "+-4*D*A+","+-4*D*A+"c -1,-"+1*A+" -2,-"+2*A+" -4,-"+2*A,I.INPUT_SHAPE_HEXAGONAL="M "+4*T*D+",0 h "+4*T+" l "+4*T*D+","+4*T*D+" l "+-4*T*D+","+4*T*D+" h "+-4*T+" l "+-4*T*D+","+-4*T*D+" l "+4*T*D+","+-4*T*D+" z",I.INPUT_SHAPE_HEXAGONAL_WIDTH=12*T*D,I.INPUT_SHAPE_ROUND="M "+4*T+",0 h "+4*T+" a "+4*T+" "+4*T+" 0 0 1 0 "+8*T+" h "+-4*T+" a "+4*T+" "+4*T+" 0 0 1 0 -"+8*T+" z",I.INPUT_SHAPE_ROUND_WIDTH=12*T*D,I.INPUT_SHAPE_HEIGHT=8*T*D,I.FIELD_HEIGHT=8*T*D,I.FIELD_WIDTH=6*T*Math.min(D,1)+10*T*Math.max(D-1,0),I.FIELD_DEFAULT_CORNER_RADIUS=4*T*D,I.EDITABLE_FIELD_PADDING=1.5*T*D,I.BOX_FIELD_PADDING=2*T*D,I.DROPDOWN_ARROW_PADDING=2*T*D,I.FIELD_WIDTH_MIN_EDIT=8*T*D,I.INPUT_AND_FIELD_MIN_X=12*T*D,I.INLINE_PADDING_Y=1*T*D,I.SHAPE_IN_SHAPE_PADDING[1][0]=5*T*D,I.SHAPE_IN_SHAPE_PADDING[1][2]=5*T*D,I.SHAPE_IN_SHAPE_PADDING[1][3]=5*T*D;var O=E.FieldDropdown.prototype.positionArrow;E.FieldDropdown.prototype.positionArrow=function(_){return this.arrowY_=11*D,O.call(this,_)},I.CORNER_RADIUS=1*T*N*100/100,I.TOP_LEFT_CORNER_START="m 0,"+I.CORNER_RADIUS,I.TOP_LEFT_CORNER="A "+I.CORNER_RADIUS+","+I.CORNER_RADIUS+" 0 0,1 "+I.CORNER_RADIUS+",0",I.TOP_RIGHT_CORNER="a "+I.CORNER_RADIUS+","+I.CORNER_RADIUS+" 0 0,1 "+I.CORNER_RADIUS+","+I.CORNER_RADIUS,I.BOTTOM_RIGHT_CORNER=" a "+I.CORNER_RADIUS+","+I.CORNER_RADIUS+" 0 0,1 -"+I.CORNER_RADIUS+","+I.CORNER_RADIUS,I.BOTTOM_LEFT_CORNER="a "+I.CORNER_RADIUS+","+I.CORNER_RADIUS+" 0 0,1 -"+I.CORNER_RADIUS+",-"+I.CORNER_RADIUS,I.INNER_TOP_LEFT_CORNER=" a "+I.CORNER_RADIUS+","+I.CORNER_RADIUS+" 0 0,0 -"+I.CORNER_RADIUS+","+I.CORNER_RADIUS,I.INNER_BOTTOM_LEFT_CORNER="a "+I.CORNER_RADIUS+","+I.CORNER_RADIUS+" 0 0,0 "+I.CORNER_RADIUS+","+I.CORNER_RADIUS,I.TOP_RIGHT_CORNER_DEFINE_HAT="a "+I.DEFINE_HAT_CORNER_RADIUS+","+I.DEFINE_HAT_CORNER_RADIUS+" 0 0,1 "+I.DEFINE_HAT_CORNER_RADIUS+","+I.DEFINE_HAT_CORNER_RADIUS+" v "+(1*T-I.CORNER_RADIUS),I.STATEMENT_INPUT_INNER_SPACE=2.8*T-.9*T*N}(...A),function(){const _=R.getMainWorkspace();if(_){N.editingTarget&&N.emitWorkspaceUpdate();const E=_.getFlyout();if(E){const I=E.getWorkspace();R.Xml.clearWorkspaceAndLoadFromXml(R.Xml.workspaceToDom(I),I),_.getToolbox().refreshSelection(),_.toolboxRefreshEnabled_=!0}}}()}_.settings.addEventListener("change",()=>A()),_.self.addEventListener("disabled",()=>{A(100,100,100)}),_.self.addEventListener("reenabled",()=>A()),A()}(window.Blockly)}}}}]); \ No newline at end of file diff --git a/js/addon-entry-custom-block-text.8b508545f0054f036856.js b/js/addon-entry-custom-block-text.8b508545f0054f036856.js new file mode 100644 index 0000000..5d1c733 --- /dev/null +++ b/js/addon-entry-custom-block-text.8b508545f0054f036856.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[14],{1722:function(t,n,o){"use strict";o.r(n),o.d(n,"resources",(function(){return a}));var e=o(1723),s=o.n(e),l=o(1724),c=o.n(l);const a={"text-bold.css":s.a,"text-shadow.css":c.a}},1723:function(t,n,o){(t.exports=o(9)(!1)).push([t.i,".blocklyText,\n.blocklyHtmlInput {\n font-weight: bold;\n}\n",""])},1724:function(t,n,o){(t.exports=o(9)(!1)).push([t.i,"/** Makes block text a little easier to read. **/\n.blocklyDraggable > .blocklyText,\n.blocklyDraggable > g > text {\n text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.4);\n}\n",""])}}]); \ No newline at end of file diff --git a/js/addon-entry-custom-zoom.8d979543f73bbcd9a6f8.js b/js/addon-entry-custom-zoom.8d979543f73bbcd9a6f8.js new file mode 100644 index 0000000..5a11eb8 --- /dev/null +++ b/js/addon-entry-custom-zoom.8d979543f73bbcd9a6f8.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[15],{1737:function(t,o,e){(t.exports=e(9)(!1)).push([t.i,".sa-custom-zoom-area {\n position: absolute;\n bottom: 0;\n right: 0;\n width: 60px;\n height: 148px;\n pointer-events: none;\n}\n.blocklyZoom > * {\n transition: transform var(--sa-custom-zoom-speed, 0) ease-in-out;\n}\n.sa-custom-zoom-hidden > * {\n transform: translateX(80px);\n}\n",""])},1799:function(t,o,e){"use strict";e.r(o),e.d(o,"resources",(function(){return s}));var n=e(1737);const s={"userscript.js":async function({addon:t,console:o}){let e;await t.tab.traps.getBlockly();let n=!1;const s={none:"0s",short:"0.2s",default:"0.3s",long:"0.5s"},i=document.createElement("div");function a(){if(document.removeEventListener("mousemove",r),"editor"!==t.tab.editorMode)return;Blockly.getMainWorkspace().options.zoomOptions.maxScale=t.settings.get("maxZoom")/100,Blockly.getMainWorkspace().options.zoomOptions.minScale=t.settings.get("minZoom")/100,Blockly.getMainWorkspace().options.zoomOptions.startScale=t.settings.get("startZoom")/100,Blockly.getMainWorkspace().options.zoomOptions.scaleSpeed=1+t.settings.get("zoomSpeed")/100*.2;const o=c(),e=t.settings.get("autohide");if(o&&o.classList.toggle("sa-custom-zoom-hidden",e),e){document.querySelector(".injectionDiv").appendChild(i),m(),document.addEventListener("mousemove",r)}}function c(){const t=Blockly.getMainWorkspace().zoomControls_;return t?t.svgGroup_:null}function r(o){const i=o.x>e.left&&o.xe.top&&o.y{const e=t.findIndex(t=>"CREATE_LIST"===t.getAttribute("callbackkey")||"data_addtolist"===t.getAttribute("type"));return{variables:t.slice(0,e),lists:t.slice(e,t.length)}},l=n.DataCategory;let c,g;const u=e=>{let o=l(e);if(!t.self.disabled&&t.settings.get("moveReportersDown")&&(o=(t=>{const{variables:e,lists:s}=i(t),o=t=>{const e=[],s=[];for(const o of t)o.hasAttribute("id")||"BUTTON"===o.tagName?e.push(o):s.push(o);return s.length&&s[s.length-1].setAttribute("gap",24),s.concat(e)};return o(e).concat(o(s))})(o)),!t.self.disabled&&t.settings.get("separateLocalVariables")&&(o=((t,e)=>{const{variables:o,lists:n}=i(e),a=t=>{const e=document.createElement("label");return e.setAttribute("text",s(t)),e},r=t=>{if(t.length>0){for(var e=0;e{const s=[],o=[],n=[],i=[];for(const a of e)if(a.hasAttribute("id")){const e=a.getAttribute("id"),s=t.getVariableById(e);s&&s.isLocal?n.push(a):o.push(a)}else o.length||n.length?i.push(a):s.push(a);const l=s;return o.length&&(l.push(a("for-all-sprites")),r(o),l.push(...o)),n.length&&(l.push(a("for-this-sprite-only")),r(n),l.push(...n)),l.concat(i)};return l(o).concat(l(n))})(e,o)),t.self.disabled||!r)return o;const{variables:n,lists:a}=i(o);return c=n,g=a,c},p=()=>g,d=n.Flyout.prototype.show;n.Flyout.prototype.show=function(t){return this.workspace_.registerToolboxCategoryCallback("VARIABLE",u),this.workspace_.registerToolboxCategoryCallback("LIST",p),d.call(this,t)};const b=a.runtime.getBlocksXML;a.runtime.getBlocksXML=function(e){const s=b.call(this,e);return r=t.settings.get("separateListCategory"),!t.self.disabled&&r&&s.push({id:"data",xml:'\n \n \n \n ')}),s},a.editingTarget&&a.emitWorkspaceUpdate(),t.settings.addEventListener("change",e=>{if(t.settings.get("separateListCategory")!==r)a.editingTarget&&a.emitWorkspaceUpdate();else{const t=Blockly.getMainWorkspace();t&&t.refreshToolboxSelection_()}});const h=()=>{if(t.settings.get("separateListCategory")&&a.editingTarget&&a.emitWorkspaceUpdate(),t.settings.get("separateLocalVariables")||t.settings.get("moveReportersDown")){const t=Blockly.getMainWorkspace();t&&t.refreshToolboxSelection_()}};t.self.addEventListener("disabled",()=>{h()}),t.self.addEventListener("reenabled",()=>{h()})}}}}]); \ No newline at end of file diff --git a/js/addon-entry-debugger.b3a004785317e412d9b7.js b/js/addon-entry-debugger.b3a004785317e412d9b7.js new file mode 100644 index 0000000..0e53298 --- /dev/null +++ b/js/addon-entry-debugger.b3a004785317e412d9b7.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[17],{1635:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,"/* Imported by other addons */\n\n.sa-block-color {\n --sa-block-colored-background: var(--sa-block-background-primary);\n --sa-block-colored-background-secondary: var(--sa-block-field-background);\n --sa-block-bright-background: var(--sa-block-background-primary);\n --sa-block-text: white;\n --sa-block-gray-text: white;\n --sa-block-colored-text: var(--sa-block-background-primary);\n --sa-block-text-on-bright-background: white;\n}\n\n.sa-block-color-motion {\n --sa-block-background-primary: var(--editorTheme3-motion-primary, #4c97ff);\n --sa-block-background-secondary: var(--editorTheme3-motion-secondary, #4280d7);\n --sa-block-background-tertiary: var(--editorTheme3-motion-tertiary, #3373cc);\n --sa-block-field-background: var(--editorTheme3-motion-field, #3373cc);\n}\n\n.sa-block-color-looks {\n --sa-block-background-primary: var(--editorTheme3-looks-primary, #9966ff);\n --sa-block-background-secondary: var(--editorTheme3-looks-secondary, #855cd6);\n --sa-block-background-tertiary: var(--editorTheme3-looks-tertiary, #774dcb);\n --sa-block-field-background: var(--editorTheme3-looks-field, #774dcb);\n}\n\n.sa-block-color-sounds {\n --sa-block-background-primary: var(--editorTheme3-sounds-primary, #cf63cf);\n --sa-block-background-secondary: var(--editorTheme3-sounds-secondary, #c94fc9);\n --sa-block-background-tertiary: var(--editorTheme3-sounds-tertiary, #bd42bd);\n --sa-block-field-background: var(--editorTheme3-sounds-field, #bd42bd);\n}\n\n.sa-block-color-events {\n --sa-block-background-primary: var(--editorTheme3-event-primary, #ffbf00);\n --sa-block-background-secondary: var(--editorTheme3-event-secondary, #e6ac00);\n --sa-block-background-tertiary: var(--editorTheme3-event-tertiary, #cc9900);\n --sa-block-field-background: var(--editorTheme3-event-field, #cc9900);\n}\n\n.sa-block-color-control {\n --sa-block-background-primary: var(--editorTheme3-control-primary, #ffab19);\n --sa-block-background-secondary: var(--editorTheme3-control-secondary, #ec9c13);\n --sa-block-background-tertiary: var(--editorTheme3-control-tertiary, #cf8b17);\n --sa-block-field-background: var(--editorTheme3-control-field, #cf8b17);\n}\n\n.sa-block-color-sensing {\n --sa-block-background-primary: var(--editorTheme3-sensing-primary, #5cb1d6);\n --sa-block-background-secondary: var(--editorTheme3-sensing-secondary, #47a8d1);\n --sa-block-background-tertiary: var(--editorTheme3-sensing-tertiary, #2e8eb8);\n --sa-block-field-background: var(--editorTheme3-sensing-field, #2e8eb8);\n}\n\n.sa-block-color-operators {\n --sa-block-background-primary: var(--editorTheme3-operators-primary, #59c059);\n --sa-block-background-secondary: var(--editorTheme3-operators-secondary, #46b946);\n --sa-block-background-tertiary: var(--editorTheme3-operators-tertiary, #389438);\n --sa-block-field-background: var(--editorTheme3-operators-field, #389438);\n}\n\n.sa-block-color-data {\n --sa-block-background-primary: var(--editorTheme3-data-primary, #ff8c1a);\n --sa-block-background-secondary: var(--editorTheme3-data-secondary, #ff8000);\n --sa-block-background-tertiary: var(--editorTheme3-data-tertiary, #db6e00);\n --sa-block-field-background: var(--editorTheme3-data-field, #db6e00);\n}\n\n.sa-block-color-data-lists,\n.sa-block-color-list {\n --sa-block-background-primary: var(--editorTheme3-data_lists-primary, #ff661a);\n --sa-block-background-secondary: var(--editorTheme3-data_lists-secondary, #ff5500);\n --sa-block-background-tertiary: var(--editorTheme3-data_lists-tertiary, #e64d00);\n --sa-block-field-background: var(--editorTheme3-data_lists-field, #e64d00);\n}\n\n.sa-block-color-more,\n.sa-block-color-null {\n --sa-block-background-primary: var(--editorTheme3-more-primary, #ff6680);\n --sa-block-background-secondary: var(--editorTheme3-more-secondary, #ff4d6a);\n --sa-block-background-tertiary: var(--editorTheme3-more-tertiary, #ff3355);\n --sa-block-field-background: var(--editorTheme3-more-field, #ff3355);\n}\n\n.sa-block-color-pen {\n --sa-block-background-primary: var(--editorTheme3-pen-primary, #0fbd8c);\n --sa-block-background-secondary: var(--editorTheme3-pen-secondary, #0da57a);\n --sa-block-background-tertiary: var(--editorTheme3-pen-tertiary, #0b8e69);\n --sa-block-field-background: var(--editorTheme3-pen-field, #0b8e69);\n}\n\n.sa-block-color-addon-custom-block {\n --sa-block-background-primary: var(--editorTheme3-sa-primary, #29beb8);\n --sa-block-background-secondary: var(--editorTheme3-sa-secondary, #3aa8a4);\n --sa-block-background-tertiary: var(--editorTheme3-sa-tertiary, #3aa8a4);\n --sa-block-field-background: var(--editorTheme3-sa-field, #3aa8a4);\n}\n\n.sa-block-color-TurboWarp {\n --sa-block-background-primary: var(--editorTheme3-tw-primary, #ff4c4c);\n --sa-block-background-secondary: var(--editorTheme3-tw-secondary, #e64444);\n --sa-block-background-tertiary: var(--editorTheme3-tw-tertiary, #e64444);\n --sa-block-field-background: var(--editorTheme3-tw-field, #e64444);\n}\n",""])},1638:function(e,t,n){"use strict";t.a=(e,t)=>{const n=document.createElement("a");if(document.body.appendChild(n),navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(t,e);else if("download"in HTMLAnchorElement.prototype){const a=window.URL.createObjectURL(t);n.href=a,n.download=e,n.type=t.type,n.click(),window.setTimeout(()=>{document.body.removeChild(n),window.URL.revokeObjectURL(a)},1e3)}else{let e=window.open("","_blank");const n=new FileReader;n.onloadend=function(){e.location.href=n.result,e=null},n.readAsDataURL(t)}}},1639:function(e,t,n){"use strict";const a="http://www.w3.org/2000/svg",o=document.createElementNS(a,"svg");o.style.position="fixed",o.style.top="-999999px",o.style.width="0",o.style.height="0",document.body.appendChild(o);let r=0;const s=new WeakMap,i=e=>(s.get(e)||s.set(e,new Set),s.get(e)),d=(e,t)=>{let n;for(const e of t)(!n||e.priority>n.priority)&&(n=e);e.style.filter=n?n.filter:""},c=(e,t)=>{const n=i(e);n.add(t),d(e,n)},l=(e,t)=>{const n=i(e);n.delete(t),d(e,n)};t.a=class{constructor(e,t){this.priority=e;const n="sa_glower_filter".concat(r++);this.filter='url("#'.concat(n,'")'),this.previousElements=new Set;const s=document.createElementNS(a,"filter");s.id=n,s.setAttribute("width","180%"),s.setAttribute("height","160%"),s.setAttribute("x","-40%"),s.setAttribute("y","-30%");const i=document.createElementNS(a,"feGaussianBlur");i.setAttribute("in","SourceGraphic"),i.setAttribute("stdDeviation","4"),s.appendChild(i);const d=document.createElementNS(a,"feComponentTransfer");d.setAttribute("result","outBlur"),s.appendChild(d);const c=document.createElementNS(a,"feFuncA");c.setAttribute("type","table"),c.setAttribute("tableValues","0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"),d.appendChild(c);const l=document.createElementNS(a,"feFlood");l.setAttribute("flood-opacity","1"),l.setAttribute("result","outColor"),s.appendChild(l),this.filterFlood=l;const g=document.createElementNS(a,"feComposite");g.setAttribute("in","outColor"),g.setAttribute("in2","outBlur"),g.setAttribute("operator","in"),g.setAttribute("result","outGlow"),s.appendChild(g);const u=document.createElementNS(a,"feComposite");u.setAttribute("in","SourceGraphic"),u.setAttribute("in2","outGlow"),u.setAttribute("operator","over"),s.appendChild(u),o.appendChild(s),this.setColor(t)}setColor(e){this.filterFlood.setAttribute("flood-color",e)}setGlowingThreads(e){const t=new Set,n=Blockly.getMainWorkspace();if(n)for(const a of e)a.stack.forEach(e=>{const o=n.getBlockById(e);if(!o)return;if(!a.stack.find(e=>{let t=o;for(;t.childBlocks_.length;)if(t=t.childBlocks_[t.childBlocks_.length-1],e===t.id)return!0;return!1})&&o.svgPath_){const e=o.svgPath_;t.add(e)}});for(const e of this.previousElements)t.has(e)||l(e,this);for(const e of t)this.previousElements.has(e)||c(e,this);this.previousElements=t}}},1699:function(e,t,n){var a=n(209);(t=e.exports=n(9)(!1)).i(n(1635),""),t.push([e.i,'[dir="ltr"] .sa-debugger-container {\n margin-right: 0.2rem;\n}\n\n[dir="rtl"] .sa-debugger-container {\n margin-left: 0.2rem;\n}\n\n.sa-debugger-small .sa-debugger-container {\n display: none !important;\n}\n\n.sa-debugger-container [class*="button_content_"] {\n position: relative;\n}\n\n.sa-debugger-unread::after {\n content: "";\n position: absolute;\n top: 1px;\n right: 0;\n display: block;\n width: 6px;\n height: 6px;\n background-color: var(--editorDarkMode-highlightText, #4d97ff);\n border-radius: 50%;\n}\n\n.sa-debugger-interface {\n display: none;\n position: absolute;\n z-index: 492;\n background-color: white;\n width: 565px;\n height: 25rem;\n}\n[theme="dark"] .sa-debugger-interface {\n background: var(--ui-primary);\n}\n\n.sa-debugger-interface [class*="card_header-buttons_"] {\n background-color: #29beb8;\n border-color: #3aa8a4;\n}\n\n.sa-debugger-interface h1 {\n padding: 10px;\n z-index: 10;\n width: calc(100% - 20px);\n font-size: 20px;\n}\n\n.sa-debugger-tabs {\n margin: 0;\n display: flex;\n align-items: center;\n padding: 0 15px;\n font-size: 0.75rem;\n}\n.sa-debugger-tabs li {\n margin: 0;\n display: flex;\n align-items: center;\n padding: 0.5em 1em;\n background-color: rgba(0, 0, 0, 0.1);\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 1rem;\n color: white;\n cursor: pointer;\n}\n.sa-debugger-tabs li + li {\n margin-inline-start: 10px;\n}\n.sa-debugger-tabs li:hover {\n background-color: rgba(0, 0, 0, 0.15);\n}\n.sa-debugger-tabs li.sa-debugger-tab-selected {\n background-color: white;\n background-clip: padding-box;\n border-color: rgba(0, 0, 0, 0.25);\n color: #4d97ff;\n}\n.sa-debugger-tabs li img {\n margin: 0;\n margin-right: 0.25rem;\n width: 1rem;\n filter: brightness(0) invert(1);\n}\n.sa-debugger-tabs li.sa-debugger-tab-selected img {\n filter: none;\n}\n\n.sa-debugger-header-buttons img {\n width: 20px;\n height: 20px;\n}\n\n.sa-debugger-unpause {\n animation: saDebuggerUnpause 2s infinite alternate;\n}\n\n@keyframes saDebuggerUnpause {\n 0% {\n background-color: rgba(0, 0, 0, 0.15);\n }\n 100% {\n background-color: rgba(0, 0, 0, 0);\n }\n}\n\n.sa-debugger-tab-content {\n width: 100%;\n height: 100%;\n overflow: auto;\n cursor: auto;\n}\n\n.sa-debugger-chart {\n width: 100%;\n height: 100%;\n}\n\n.sa-performance-tab-content {\n padding: 15px;\n}\n\n.sa-debugger-log-outer {\n height: 100%;\n}\n\n.sa-debugger-log-inner {\n position: relative;\n overflow-y: auto;\n font-size: 12px;\n line-height: 1.2;\n height: 100%;\n contain: strict;\n}\n\n.sa-debugger-log-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n font-size: 20px;\n font-style: italic;\n}\n\n.sa-debugger-log-end {\n position: absolute;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n}\n\n.sa-debugger-log {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 20px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n border-bottom: 1px solid rgba(0, 0, 0, 0.15);\n padding-left: 4px;\n font-family: monospace;\n color: #000;\n}\n[theme="dark"] .sa-debugger-log {\n color: var(--text-primary);\n border-color: rgba(255, 255, 255, 0.15);\n}\n.sa-debugger-log[data-type="warn"] {\n border-color: hsl(50deg, 100%, 75%);\n color: hsl(39deg 100% 18%);\n background-color: hsl(50deg 100% 95%);\n}\n.sa-debugger-log[data-type="error"] {\n border-color: hsl(0deg 100% 92%);\n color: red;\n background-color: hsl(0deg 100% 95%);\n}\n[theme="dark"] .sa-debugger-log[data-type="warn"] {\n border-color: hsl(50deg, 100%, 15%);\n color: hsl(39deg 100% 90%);\n background-color: hsl(50deg 100% 10%);\n}\n[theme="dark"] .sa-debugger-log[data-type="error"] {\n border-color: hsl(0deg 100% 15%);\n color: hsl(0deg 100% 77%);\n background-color: hsl(0deg 100% 10%);\n}\n\n.sa-debugger-log-repeats {\n background-color: hsla(163, 85%, 40%, 1);\n color: white;\n border-radius: 100px;\n padding: 1px 6px;\n margin-right: 4px;\n}\n[theme="dark"] .sa-debugger-log-repeats {\n color: var(--ui-primary);\n}\n\n.sa-debugger-log-icon {\n width: 16px;\n height: 16px;\n margin-right: 4px;\n}\n[data-type="warn"] .sa-debugger-log-icon {\n background-image: url('+a(n(1700))+');\n}\n[data-type="error"] .sa-debugger-log-icon {\n background-image: url('+a(n(1701))+");\n}\n.sa-debugger-threads .sa-debugger-log-icon {\n background-image: url("+a(n(1702))+');\n}\n\n.sa-debugger-log-link {\n color: inherit;\n cursor: pointer;\n opacity: 0.5;\n text-decoration: underline;\n float: right;\n text-align: right;\n max-width: 100%;\n padding-left: 4px;\n margin-right: 4px;\n margin-left: auto;\n}\n[theme="dark"] .sa-debugger-log-link {\n color: inherit;\n}\n.sa-debugger-log-link:hover {\n text-decoration: underline;\n color: #4d97ff;\n opacity: 1;\n}\n.sa-debugger-log-link-unknown {\n pointer-events: none;\n}\n\n.sa-debugger-log-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: pre;\n}\n.sa-debugger-log-text-empty {\n font-style: italic;\n}\n.sa-debugger-log-internal .sa-debugger-log-text {\n font-style: italic;\n}\n\n.sa-debugger-thread-indent {\n width: calc(16px * var(--level));\n margin-right: 4px;\n}\n.sa-debugger-thread-title .sa-debugger-thread-indent {\n margin: 0;\n}\n.sa-debugger-thread-target-name {\n font-weight: bold;\n margin-right: 8px;\n}\n.sa-debugger-thread-running {\n background-color: rgba(255, 187, 0, 0.233);\n font-weight: bold;\n}\n\n.sa-debugger-block-preview {\n padding: 1px 6px;\n margin-right: 4px;\n background-color: var(--sa-block-colored-background);\n color: var(--sa-block-text);\n}\n.sa-debugger-block-preview[data-shape="round"] {\n border-radius: 100px;\n}\n.sa-debugger-block-preview[data-shape="stacked"] {\n border-radius: 3px;\n}\n\n.sa-debugger-thread-compiled {\n font-style: italic;\n}\n\n.sa-debugger-compiler-warning {\n position: relative;\n display: block;\n text-align: center;\n height: 24px;\n color: #2121bf;\n}\n.sa-debugger-compiler-warning[hidden] {\n display: none;\n}\n[theme="dark"] .sa-debugger-compiler-warning {\n color: #bdbdf9;\n}\n',""])},1700:function(e,t,n){e.exports=n.p+"static/assets/0e009d6e684951615b31a267baa37636.svg"},1701:function(e,t,n){e.exports=n.p+"static/assets/76b6cb627b95d79705c0b41664064f0e.svg"},1702:function(e,t,n){e.exports=n.p+"static/assets/c846a442121113b1d04f6b9d50912038.svg"},1758:function(e,t,n){"use strict";n.r(t),n.d(t,"resources",(function(){return h}));var a=n(1634),o=n(1638);const r=(e,t,n)=>Math.max(t,Math.min(n,e)),s=(e,t)=>{const n=+t.dataset.index;let a=!1;for(const o of e.children){if(+o.dataset.index>n){a=!0,e.insertBefore(t,o);break}}a||e.appendChild(t)};var i=class{constructor(){this.rows=[],this.canAutoScrollToEnd=!0,this.rowHeight=20,this.outerElement=document.createElement("div"),this.outerElement.className="sa-debugger-log-outer",this.innerElement=document.createElement("div"),this.innerElement.className="sa-debugger-log-inner",this.outerElement.appendChild(this.innerElement),this.innerElement.addEventListener("scroll",this._handleScroll.bind(this),{passive:!0}),this.innerElement.addEventListener("wheel",this._handleWheel.bind(this),{passive:!0}),this.endElement=document.createElement("div"),this.endElement.className="sa-debugger-log-end",this.endElement.dataset.index="-1",this.innerElement.appendChild(this.endElement),this.placeholderElement=document.createElement("div"),this.placeholderElement.className="sa-debugger-log-empty",this.visible=!1,this.isScrolledToEnd=!0,this.scrollTopWhenHidden="end",this.scrollTop=0,this.updateContentQueued=!1,this.scrollToEndQueued=!1,this.oldLength=-1,this.rowToMetadata=new Map}append(e){this.queueUpdateContent(),this._queueScrollToEnd(),this.rows.push(e);for(;this.rows.length>2e5;)this.rows.shift()}clear(){this.rows.length=0,this.scrollTop=0,this.isScrolledToEnd=!0,this.queueUpdateContent()}show(){this.visible=!0,this.height=this.innerElement.offsetHeight,this.queueUpdateContent(),"end"===this.scrollTopWhenHidden?this._queueScrollToEnd():this.innerElement.scrollTop=this.scrollTopWhenHidden}hide(){this.visible=!1,this.scrollTopWhenHidden=this.isScrolledToEnd?"end":this.scrollTop}_handleScroll(e){this.scrollTop=e.target.scrollTop,this.isScrolledToEnd=e.target.scrollTop+5>=e.target.scrollHeight-e.target.clientHeight,this.queueUpdateContent()}_handleWheel(e){e.deltaY<0&&(this.isScrolledToEnd=!1)}scrollIntoView(e){const t=e*this.rowHeight,n=this.scrollTop,a=this.scrollTop+this.height;t>n&&t{if(this.scrollToEndQueued=!1,this.isScrolledToEnd){const e=this.innerElement.scrollHeight-this.innerElement.offsetHeight;this.innerElement.scrollTop=e,this.scrollTop=e}}))}queueUpdateContent(){this.visible&&!this.updateContentQueued&&(this.updateContentQueued=!0,queueMicrotask(()=>{this.updateContentQueued=!1,this.updateContent()}))}generateRow(e){}renderRow(e,t){}updateContent(){if(this.rows.length!==this.oldLength){this.oldLength=this.rows.length;const e=this.rows.length*this.rowHeight;if(this.endElement.style.transform="translateY(".concat(e,"px)"),this.rows.length)this.placeholderElement.remove();else{this.innerElement.appendChild(this.placeholderElement);for(const e of this.rowToMetadata.values())e.elements.root.remove();this.rowToMetadata.clear()}}if(0===this.rows.length)return;const e=Math.floor(this.scrollTop/this.rowHeight),t=Math.ceil(this.height/this.rowHeight),n=r(e-5,0,this.rows.length),a=r(e+t+5,0,this.rows.length),o=new Set,i=[];for(let e=n;e{const n=document.createElement("div");n.className="sa-debugger-log",t.internal&&n.classList.add("sa-debugger-log-internal"),n.dataset.type=t.type;const o=document.createElement("div");o.className="sa-debugger-log-icon","warn"!==t.type&&"error"!==t.type||(o.title=a("icon-"+t.type)),n.appendChild(o);const s=document.createElement("div");if(s.className="sa-debugger-log-repeats",s.style.display="none",n.appendChild(s),t.preview&&t.blockId&&t.targetInfo){const a=t.targetInfo.originalId,o=((t,n)=>{var a;const o=r.runtime.getTargetById(t);if(!o)return null;const s=e.getBlock(o,n);return s?null===(a=Object.values(s.inputs)[0])||void 0===a?void 0:a.block:null})(a,t.blockId);if(o){const t=e.createBlockPreview(a,o);t&&n.appendChild(t)}}const i=document.createElement("div");return i.className="sa-debugger-log-text",0===t.text.length?(i.classList.add("sa-debugger-log-text-empty"),i.textContent=a("empty-string")):(i.textContent=t.text,i.title=t.text),n.appendChild(i),t.targetInfo&&t.blockId&&n.appendChild(e.createBlockLink(t.targetInfo,t.blockId)),{root:n,repeats:s}},d.renderRow=(e,t)=>{const{repeats:n}=e;t.count>1&&(n.style.display="",n.textContent=t.count)};const c=e.createHeaderButton({text:a("export"),icon:t.self.getResource("/icons/download-white.svg"),description:a("export-desc")});c.element.addEventListener("click",async e=>{const n=e.shiftKey?await t.tab.prompt(a("export"),a("enter-format"),"{sprite}: {content} ({type})",{useEditorClasses:!0}):"{sprite}: {content} ({type})";if(!n)return;const r=d.rows.map(({text:e,targetInfo:t,type:o,count:r})=>(n.replace(/\{(sprite|type|content)\}/g,(n,r)=>({sprite:t?t.name:a("unknown-sprite"),type:o,content:e}[r]))+"\n").repeat(r)).join("");var s,i;s="logs.txt",i=r,Object(o.a)(s,new Blob([i],{type:"text/plain"}))});const l=e.createHeaderButton({text:a("clear"),icon:t.self.getResource("/icons/delete.svg")});l.element.addEventListener("click",()=>{g()});const g=()=>{d.clear()};return{tab:s,content:d.outerElement,buttons:[c,l],show:()=>{d.show(),e.setHasUnreadMessage(!1)},hide:()=>{d.hide()},addLog:(t,n,a)=>{const o={text:t,type:a,count:1,preview:!0};if(n){o.blockId=n.peekStack();const t=n.target.id;o.targetId=t,o.targetInfo=e.getTargetInfoById(t)}"internal"===a&&(o.internal=!0,o.preview=!1,o.type="log"),"internal-warn"===a&&(o.internal=!0,o.type="warn");const r=d.rows[d.rows.length-1];var s,i;r&&(i=r,(s=o).text===i.text&&s.type===i.type&&s.internal===i.internal&&s.blockId===i.blockId&&s.targetId===i.targetId)?(r.count++,d.queueUpdateContent()):d.append(o),d.visible||o.internal||e.setHasUnreadMessage(!0)},clearLogs:g}}var c=n(1639);const l=(e,t)=>{for(const n of t)e.push(n)};async function g({debug:e,addon:t,console:n,msg:o}){const r=t.tab.traps.vm,s=e.createHeaderTab({text:o("tab-threads"),icon:t.self.getResource("/icons/threads.svg")}),d=new i;d.canAutoScrollToEnd=!1,d.outerElement.classList.add("sa-debugger-threads"),d.placeholderElement.textContent=o("no-threads-running");const g=new c.a(10,"#ff0000");d.generateRow=t=>{const n=document.createElement("div");n.className="sa-debugger-log";const a="thread-header"===t.type,r=document.createElement("div");if(r.className="sa-debugger-thread-indent",r.style.setProperty("--level",a?t.depth:t.depth+1),n.appendChild(r),a){if(n.classList.add("sa-debugger-thread-title"),t.depth>0){const e=document.createElement("div");e.className="sa-debugger-log-icon",n.appendChild(e)}const e=document.createElement("div");e.textContent=t.targetName,e.className="sa-debugger-thread-target-name",n.appendChild(e);const a=document.createElement("div");a.className="sa-debugger-thread-id",a.textContent=o("thread",{id:t.id}),n.appendChild(a)}if("thread-stack"===t.type){const a=e.createBlockPreview(t.targetId,t.blockId);a&&n.appendChild(a)}if("compiled"===t.type){const e=document.createElement("div");e.className="sa-debugger-thread-compiled",e.textContent="Compiled threads can't be stepped and have no stack information.",n.appendChild(e)}return t.targetId&&t.blockId&&n.appendChild(e.createBlockLink(e.getTargetInfoById(t.targetId),t.blockId)),{root:n}},d.renderRow=(e,t)=>{const{root:n}=e;n.classList.toggle("sa-debugger-thread-running",!!t.running)};let u=new WeakMap;const b=new WeakMap;let m=1;const h=()=>{if(!d.visible)return;const t=[],n=r.runtime.threads,o=new Set,s=(t,n)=>{if(o.has(t))return[];o.add(t);const r=(e=>(b.has(e)||b.set(e,m++),b.get(e)))(t),i=t.target;u.has(t)||u.set(t,{headerItem:{type:"thread-header",depth:n,targetName:i.getName(),id:r},compiledItem:t.isCompiled?{type:"compiled",depth:1}:null,blockCache:new WeakMap});const d=u.get(t),c=Object(a.a)(),g=(e,a)=>{const o=e.id;if(!e)return;const r=t.stackFrames[a];d.blockCache.has(e)||d.blockCache.set(e,{});const g=d.blockCache.get(e);let u=g[a];u||(u=g[a]={type:"thread-stack",depth:n,targetId:i.id,blockId:o}),u.running=t===c&&(t.isCompiled||o===c.peekStack()&&a===c.stackFrames.length-1);const b=[u];if(r&&r.executionContext&&r.executionContext.startedThreads)for(const e of r.executionContext.startedThreads)l(b,s(e,n+1));return b},h=e.getBlock(t.target,t.topBlock),p=[d.headerItem];if(h){l(p,g(h,0));for(let n=0;n{h();const e=Object(a.a)();e?g.setGlowingThreads([e]):g.setGlowingThreads([])});const p=e.createHeaderButton({text:o("step"),icon:t.self.getResource("/icons/step.svg"),description:o("step-desc")});p.element.addEventListener("click",()=>{Object(a.g)()});const M=e=>{p.element.style.display=e?"":"none",h()};M(Object(a.b)()),Object(a.c)(M),Object(a.d)(h);return{tab:s,content:d.outerElement,buttons:[p],show:()=>{d.show(),h()},hide:()=>{d.hide()}}}var u=n(1643);const b=e=>{for(;e.firstChild;)e.removeChild(e.firstChild)};var m=n(1699);const h={"userscript.js":async function({addon:e,console:t,msg:n}){let o;Object(a.f)(e.tab.traps.vm);const r=[],s=(...e)=>{o?o.addLog(...e):r.push(e)};let i=!1;e.tab.addBlock("​​breakpoint​​",{args:[],displayName:n("block-breakpoint"),callback:(t,o)=>{e.tab.redux.state.scratchGui.mode.isPlayerOnly?i||(s(n("cannot-pause-player"),o,"error"),i=!0):(Object(a.e)(!0),T(!0))}}),e.tab.addBlock("​​log​​ %s",{args:["content"],displayName:n("block-log"),callback:({content:e},t)=>{s(e,t,"log")}}),e.tab.addBlock("​​warn​​ %s",{args:["content"],displayName:n("block-warn"),callback:({content:e},t)=>{s(e,t,"warn")}}),e.tab.addBlock("​​error​​ %s",{args:["content"],displayName:n("block-error"),callback:({content:e},t)=>{s(e,t,"error")}});const c=e.tab.traps.vm;await new Promise((e,t)=>{if(c.editingTarget)return e();c.runtime.once("PROJECT_LOADED",e)});const l=await e.tab.traps.getBlockly(),m=document.createElement("div");m.className="sa-debugger-container";const h=document.createElement("div");h.className=e.tab.scratchClass("button_outlined-button","stage-header_stage-button");const p=document.createElement("div");p.className=e.tab.scratchClass("button_content");const M=document.createElement("img");M.className=e.tab.scratchClass("stage-header_stage-button-icon"),M.draggable=!1,M.src=e.self.getResource("/icons/debug.svg"),p.appendChild(M),h.appendChild(p),m.appendChild(h),h.addEventListener("click",()=>T(!0));const I=Object.assign(document.createElement("div"),{className:e.tab.scratchClass("card_card",{others:"sa-debugger-interface"})}),y=Object.assign(document.createElement("div"),{className:e.tab.scratchClass("card_header-buttons")}),A=Object.assign(document.createElement("ul"),{className:"sa-debugger-tabs"}),w=Object.assign(document.createElement("div"),{className:e.tab.scratchClass("card_header-buttons-right",{others:"sa-debugger-header-buttons"})}),k=Object.assign(document.createElement("div"),{className:"sa-debugger-tab-content"}),D=document.createElement("a");D.addEventListener("click",()=>{e.tab.redux.dispatch({type:"scratch-gui/modals/OPEN_MODAL",modal:"settingsModal"})}),D.className="sa-debugger-log sa-debugger-compiler-warning",D.textContent="The debugger works best when the compiler is disabled.";const E=()=>{D.hidden=!c.runtime.compilerOptions.enabled};c.on("COMPILER_OPTIONS_CHANGED",E),E();let x=!1;const T=e=>{x=e,I.style.display=x?"flex":"",x?V.show():V.hide()};let N=0,v=0,L=0,C=0;const j=()=>{document.removeEventListener("mouseup",j),document.removeEventListener("mousemove",S)},f=(e,t)=>{L=e,C=t;const n=(document.documentElement.clientWidth||document.body.clientWidth)-1,a=(document.documentElement.clientHeight||document.body.clientHeight)-1,o=Math.max(0,Math.min(e-N,n-I.offsetWidth)),r=Math.max(0,Math.min(t-v,a-I.offsetHeight));I.style.left=o+"px",I.style.top=r+"px"},S=e=>{e.preventDefault(),f(e.clientX,e.clientY)};window.addEventListener("resize",()=>{f(L,C)}),y.addEventListener("mousedown",e=>{e.preventDefault(),N=e.clientX-I.offsetLeft,v=e.clientY-I.offsetTop,L=e.clientX,C=e.clientY,document.addEventListener("mouseup",j),document.addEventListener("mousemove",S)}),y.append(A,w),I.append(y,D,k),document.body.append(I);const z=({text:t,icon:n,description:a})=>{const o=Object.assign(document.createElement("div"),{className:e.tab.scratchClass("card_shrink-expand-button"),draggable:!1});a&&(o.title=a);const r=Object.assign(document.createElement("img"),{src:n,draggable:!1}),s=Object.assign(document.createElement("span"),{textContent:t});return o.appendChild(r),o.appendChild(s),{element:o,image:r,text:s}},Z=z({text:n("unpause"),icon:e.self.getResource("/icons/play.svg")});Z.element.classList.add("sa-debugger-unpause"),Z.element.addEventListener("click",()=>Object(a.e)(!1));const O=e=>{Z.element.style.display=e?"":"none"};O(Object(a.b)()),Object(a.c)(O);const W=z({text:n("close"),icon:e.self.getResource("/icons/close.svg")});W.element.addEventListener("click",()=>T(!1));const Y=c.runtime._step,G=[];c.runtime._step=function(...e){const t=Y.call(this,...e);for(const e of G)e();return t};const H=(e,t)=>e.blocks.getBlock(t)||c.runtime.flyoutBlocks.getBlock(t),B=e=>{e!==c.editingTarget.id&&c.runtime.getTargetById(e)&&c.setEditingTarget(e)},U=()=>{const t=e.tab.redux;0!==t.state.scratchGui.editorTab.activeTabIndex&&t.dispatch({type:"scratch-gui/navigation/ACTIVATE_TAB",activeTabIndex:0})},R=t=>{const n=Blockly.getMainWorkspace().getBlockById(t);n&&(n.workspace.isFlyout||new u.a(e).scrollBlockIntoView(t))},P=t=>{const n=e.tab.getCustomBlock(t);return n&&(t=n.displayName),t.replace(/%[nbs]/g,"()")},J={debug:{createHeaderButton:z,createHeaderTab:({text:e,icon:t})=>{const n=document.createElement("li"),a=Object.assign(document.createElement("img"),{src:t,draggable:!1}),o=Object.assign(document.createElement("span"),{textContent:e});return n.appendChild(a),n.appendChild(o),{element:n,image:a,text:o}},setHasUnreadMessage:e=>{p.classList.toggle("sa-debugger-unread",e)},addAfterStepCallback:e=>{G.push(e)},getBlock:H,getTargetInfoById:e=>{const t=c.runtime.getTargetById(e);if(t){let e=t.getName(),a=t;return t.isOriginal||(e=n("clone-of",{sprite:e}),a=t.sprite.clones[0]),{exists:!0,originalId:a.id,name:e}}return{exists:!1,original:null,name:n("unknown-sprite")}},createBlockLink:(e,t)=>{const n=document.createElement("a");n.className="sa-debugger-log-link";const{exists:a,name:o,originalId:r}=e;return n.textContent=o,a?n.addEventListener("mousedown",()=>{B(r),U(),R(t)}):n.classList.add("sa-debugger-log-link-unknown"),n},createBlockPreview:(t,n)=>{const a=c.runtime.getTargetById(t);if(!a)return null;const o=H(a,n);if(!o||"text"===o.opcode)return null;let r,s,i;if("data_variable"===o.opcode||"data_listcontents"===o.opcode||"argument_reporter_string_number"===o.opcode||"argument_reporter_boolean"===o.opcode)r=Object.values(o.fields)[0].value,s="data_variable"===o.opcode?"data":"data_listcontents"===o.opcode?"list":"more",i="round";else if("procedures_call"===o.opcode){const t=o.mutation.proccode;r=P(t);s=e.tab.getCustomBlock(t)?"addon-custom-block":"more"}else if("procedures_definition"===o.opcode){const e=o.inputs.custom_block.block,t=H(a,e).mutation.proccode;r=l.ScratchMsgs.translate("PROCEDURES_DEFINITION","define %1").replace("%1",P(t)),s="more"}else{var d,g;const e={jsonInit(e){g=e}},t=l.Blocks[o.opcode];if(t)try{t.init.call(e)}catch(e){}if(!g)return null;if(r=(e=>{const t=t=>{const n=e["message".concat(t)],a=e["args".concat(t)];if(!n)return null;const o=n.split(/%\d+/g);let r="";for(let e=0;e{if(e===V)return;V&&(V.hide(),V.tab.element.classList.remove("sa-debugger-tab-selected")),e.tab.element.classList.add("sa-debugger-tab-selected"),V=e,b(k),k.appendChild(e.content),b(w),w.appendChild(Z.element);for(const t of e.buttons)w.appendChild(t.element);w.appendChild(W.element),x&&V.show()};for(const e of Q)e.tab.element.addEventListener("click",()=>{F(e)}),A.appendChild(e.tab.element);F(Q[0]),e.tab.redux.state&&"small"===e.tab.redux.state.scratchGui.stageSize.stageSize&&document.body.classList.add("sa-debugger-small"),document.addEventListener("click",e=>{e.target.closest("[class*='stage-header_stage-button-first']:not(.sa-hide-stage-button)")?document.body.classList.add("sa-debugger-small"):(e.target.closest("[class*='stage-header_stage-button-last']")||e.target.closest(".sa-hide-stage-button"))&&document.body.classList.remove("sa-debugger-small")},{capture:!0});const X=c.runtime.greenFlag;c.runtime.greenFlag=function(...t){return e.settings.get("log_clear_greenflag")&&o.clearLogs(),e.settings.get("log_greenflag")&&o.addLog(n("log-msg-flag-clicked"),null,"internal"),X.call(this,...t)};const q=c.runtime.targets[0].constructor.prototype.makeClone;c.runtime.targets[0].constructor.prototype.makeClone=function(...t){e.settings.get("log_failed_clone_creation")&&!c.runtime.clonesAvailable()&&o.addLog(n("log-msg-clone-cap",{sprite:this.getName()}),c.runtime.sequencer.activeThread,"internal-warn");var a=q.call(this,...t);return e.settings.get("log_clone_create")&&a&&o.addLog(n("log-msg-clone-created",{sprite:this.getName()}),c.runtime.sequencer.activeThread,"internal"),a};const K=c.runtime.startHats;for(c.runtime.startHats=function(t,a,...r){return e.settings.get("log_broadcasts")&&"event_whenbroadcastreceived"===t&&o.addLog(n("log-msg-broadcasted",{broadcast:a.BROADCAST_OPTION}),c.runtime.sequencer.activeThread,"internal"),K.call(this,t,a,...r)};;)await e.tab.waitForElement('[class*="stage-header_stage-size-row"]',{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","scratch-gui/mode/SET_FULL_SCREEN","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"]}),"editor"===e.tab.editorMode?e.tab.appendToSharedSpace({space:"stageHeader",element:m,order:0}):T(!1)},"style.css":n.n(m).a,"icons/close.svg":"data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDcuNDggNy40OCIgc3R5bGU9InRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpIj48cGF0aCBkPSJNMy43NCA2LjQ4VjFNMSAzLjc0aDUuNDgiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNmZmY7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoycHgiLz48L3N2Zz4=","icons/debug.svg":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjNEM5N0ZGIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggc3R5bGU9ImZpbGw6IzU3NWU3NTtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtwYWludC1vcmRlcjptYXJrZXJzIHN0cm9rZSBmaWxsIiBkPSJNNCAzLjVjLS44MzEgMC0xLjUuNjY5LTEuNSAxLjV2MTBjMCAuODMxLjY2OSAxLjUgMS41IDEuNWgxMmMuODMxIDAgMS41LS42NjkgMS41LTEuNVY1YzAtLjgzMS0uNjY5LTEuNS0xLjUtMS41Wm0wIDFoMTJjLjI3NyAwIC41LjIyMy41LjV2MTBjMCAuMjc3LS4yMjMuNS0uNS41SDRhLjQ5OS40OTkgMCAwIDEtLjUtLjVWNWMwLS4yNzcuMjIzLS41LjUtLjVaIiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJtNS40MTcgNy41IDMuNzUgMi41LTMuNzUgMi41bTUgMGg0LjE2NiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzhmOGY4ZjtzdHJva2Utd2lkdGg6MTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIi8+PC9nPjwvc3ZnPg==","icons/delete.svg":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik00LjU0OCA3aDEwLjkwNGEuNS41IDAgMCAxIC40OTguNTQ1bC0uNzg1IDguNjM1QTIgMiAwIDAgMSAxMy4xNzQgMThINi44MjdhMiAyIDAgMCAxLTEuOTkyLTEuODJMNC4wNSA3LjU0NkEuNS41IDAgMCAxIDQuNTQ4IDd6bTIuNzg1LTMgLjU1My0xLjY1OEEuNS41IDAgMCAxIDguMzYgMmgzLjI4YS41LjUgMCAwIDEgLjQ3NC4zNDJMMTIuNjY3IDRIMTYuNWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTEzYS41LjUgMCAwIDEtLjUtLjV2LTFhLjUuNSAwIDAgMSAuNS0uNWgzLjgzM3ptMS4wNTQgMGgzLjIyNmwtLjMzNC0xSDguNzIxbC0uMzM0IDF6TTEwIDExLjcybDEuNTk1LTEuNTk1YS41LjUgMCAwIDEgLjcwNyAwbC4wNzMuMDczYS41LjUgMCAwIDEgMCAuNzA3TDEwLjc4IDEyLjVsMS41OTUgMS41OTVhLjUuNSAwIDAgMSAwIC43MDdsLS4wNzMuMDczYS41LjUgMCAwIDEtLjcwNyAwTDEwIDEzLjI4bC0xLjU5NSAxLjU5NWEuNS41IDAgMCAxLS43MDcgMGwtLjA3My0uMDczYS41LjUgMCAwIDEgMC0uNzA3TDkuMjIgMTIuNWwtMS41OTUtMS41OTVhLjUuNSAwIDAgMSAwLS43MDdsLjA3My0uMDczYS41LjUgMCAwIDEgLjcwNyAwTDEwIDExLjcyeiIgaWQ9ImEiLz48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYSIvPjwvbWFzaz48ZyBtYXNrPSJ1cmwoI2IpIiBmaWxsPSIjRkZGIj48cGF0aCBkPSJNMCAwaDIwdjIwSDB6Ii8+PC9nPjwvZz48L3N2Zz4=","icons/download-white.svg":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE0LjczIDguNzc5LTQuMjUzIDQuMjY0YS42MTkuNjE5IDAgMCAxLS44OSAwTDUuMzM2IDguNzc5QS42My42MyAwIDAgMSA1Ljc4OCA3LjdoMi4xMTdsMS4yNjMtNS4wMTZhLjkxMi45MTIgMCAwIDEgMS4xMDYtLjY1Ni44OS44OSAwIDAgMSAuNjY4LjY1NkwxMi4yMDYgNy43aDIuMDcyYy41NTkgMCAuODU2LjY3LjQ1MSAxLjA3OHpNMTggMTEuODEydjIuNTc5QzE4IDE2LjM3NSAxNi4zOTUgMTggMTQuNDE3IDE4SDUuNkEzLjYwNyAzLjYwNyAwIDAgMSAyIDE0LjM5di0yLjU3OGExLjE3IDEuMTcgMCAxIDEgMi4zMzcgMHYyLjU3OUExLjI3IDEuMjcgMCAwIDAgNS42IDE1LjY1Nmg4LjgxN2MuNjg2IDAgMS4yNDYtLjU3OCAxLjI0Ni0xLjI2NXYtMi41NzljMC0uNjU2LjUzLTEuMTcyIDEuMTY5LTEuMTcyLjY1NCAwIDEuMTY4LjUxNiAxLjE2OCAxLjE3MnoiIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==","icons/error.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSItbXMtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKSI+PHBhdGggZD0iTTEyIDE0YTEuMjUgMS4yNSAwIDEgMCAxLjI1IDEuMjVBMS4yNSAxLjI1IDAgMCAwIDEyIDE0em0wLTEuNWExIDEgMCAwIDAgMS0xdi0zYTEgMSAwIDAgMC0yIDB2M2ExIDEgMCAwIDAgMSAxek0xMiAyYTEwIDEwIDAgMSAwIDEwIDEwQTEwLjAxMSAxMC4wMTEgMCAwIDAgMTIgMnptMCAxOGE4IDggMCAxIDEgOC04IDguMDEgOC4wMSAwIDAgMS04IDh6IiBmaWxsPSJyZWQiLz48L3N2Zz4=","icons/logs.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSItbXMtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKSI+PHBhdGggZD0iTTMgN2gxOGExIDEgMCAwIDAgMC0ySDNhMSAxIDAgMCAwIDAgMnptMCA0aDE0YTEgMSAwIDAgMCAwLTJIM2ExIDEgMCAwIDAgMCAyem0xOCAySDNhMSAxIDAgMCAwIDAgMmgxOGExIDEgMCAwIDAgMC0yem0tNCA0SDNhMSAxIDAgMCAwIDAgMmgxNGExIDEgMCAwIDAgMC0yeiIgZmlsbD0iIzRjOTdmZiIvPjwvc3ZnPg==","icons/performance.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyNCAyNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiPjxwYXRoIHN0cm9rZT0iIzRjOTdmZiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik05IDE5di02YTIgMiAwIDAgMC0yLTJINWEyIDIgMCAwIDAtMiAydjZhMiAyIDAgMCAwIDIgMmgyYTIgMiAwIDAgMCAyLTJ6bTAgMFY5YTIgMiAwIDAgMSAyLTJoMmEyIDIgMCAwIDEgMiAydjEwbS02IDBhMiAyIDAgMCAwIDIgMmgyYTIgMiAwIDAgMCAyLTJtMCAwVjVhMiAyIDAgMCAxIDItMmgyYTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMmgtMmEyIDIgMCAwIDEtMi0yeiIvPjwvc3ZnPg==","icons/play.svg":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDkiIGhlaWdodD0iNTIiIHZpZXdCb3g9Ii01IDAgNDkgNDgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0xNy4yMjEgOC4zNDVjMi41NTYtNC4yNTkgNi43MDItNC4yNTIgOS4yNTQgMGwxMy42NzcgMjIuNzk2YzIuNTU1IDQuMjU4LjU5NyA3LjcxLTQuMzggNy43MUg3LjkyNGMtNC45NzMgMC02LjkzLTMuNDU4LTQuMzgtNy43MUwxNy4yMjIgOC4zNDV6IiBpZD0iYSIvPjwvZGVmcz48dXNlIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRiIgeGxpbms6aHJlZj0iI2EiIHRyYW5zZm9ybT0icm90YXRlKDkwIDIwLjg1IDIzLjAwMykiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==","icons/step.svg":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTkiIGhlaWdodD0iMTkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMjIuNjggMTIuMmExLjYgMS42IDAgMCAxLTEuMjcuNjNoLTcuNjlhMS41OSAxLjU5IDAgMCAxLTEuMTYtMi41OGwxLjEyLTEuNDFhNC44MiA0LjgyIDAgMCAwLTMuMTQtLjc3IDQuMzEgNC4zMSAwIDAgMC0yIC44QTQuMjUgNC4yNSAwIDAgMCA3LjIgMTAuNmE1LjA2IDUuMDYgMCAwIDAgLjU0IDQuNjJBNS41OCA1LjU4IDAgMCAwIDEyIDE3Ljc0YTIuMjYgMi4yNiAwIDAgMS0uMTYgNC41MkExMC4yNSAxMC4yNSAwIDAgMSAzLjc0IDE4YTEwLjE0IDEwLjE0IDAgMCAxLTEuNDktOS4yMiA5LjcgOS43IDAgMCAxIDIuODMtNC4xNEE5LjkyIDkuOTIgMCAwIDEgOS42NiAyLjVhMTAuNjYgMTAuNjYgMCAwIDEgNy43MiAxLjY4bDEuMDgtMS4zNWExLjU3IDEuNTcgMCAwIDEgMS4yNC0uNiAxLjYgMS42IDAgMCAxIDEuNTQgMS4yMWwxLjcgNy4zN2ExLjU3IDEuNTcgMCAwIDEtLjI2IDEuMzlaIiBzdHlsZT0iZmlsbDojZmZmIi8+PHBhdGggZD0iTTIxLjM4IDExLjgzaC03LjYxYS41OS41OSAwIDAgMS0uNDMtMWwxLjc1LTIuMTlhNS45IDUuOSAwIDAgMC00LjctMS41OCA1LjA3IDUuMDcgMCAwIDAtNC4xMSAzLjE3QTYgNiAwIDAgMCA3IDE1Ljc3YTYuNTEgNi41MSAwIDAgMCA1IDIuOTIgMS4zMSAxLjMxIDAgMCAxLS4wOCAyLjYyIDkuMyA5LjMgMCAwIDEtNy4zNS0zLjgyIDkuMTYgOS4xNiAwIDAgMS0xLjQtOC4zN0E4LjUxIDguNTEgMCAwIDEgNS43MSA1LjRhOC43NiA4Ljc2IDAgMCAxIDQuMTEtMS45MiA5LjcxIDkuNzEgMCAwIDEgNy43NSAyLjA3bDEuNjctMi4xYS41OS41OSAwIDAgMSAxIC4yMUwyMiAxMS4wOGEuNTkuNTkgMCAwIDEtLjYyLjc1WiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==","icons/subthread.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSItbXMtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKSI+PHBhdGggZD0iTTIwLjkyIDEyLjYyYTEgMSAwIDAgMC0uMjEtLjMzbC0zLTNhMSAxIDAgMCAwLTEuNDIgMS40MmwxLjMgMS4yOUg4YTEgMSAwIDAgMS0xLTFWN2ExIDEgMCAwIDAtMiAwdjRhMyAzIDAgMCAwIDMgM2g5LjU5bC0xLjMgMS4yOWExIDEgMCAwIDAgMCAxLjQyIDEgMSAwIDAgMCAxLjQyIDBsMy0zYTEgMSAwIDAgMCAuMjEtLjMzIDEgMSAwIDAgMCAwLS43NnoiIGZpbGw9ImdyYXkiLz48L3N2Zz4=","icons/threads.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSItbXMtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKSI+PHBhdGggZD0iTTE5IDJIOWEzIDMgMCAwIDAtMyAzdjFINWEzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTBhMyAzIDAgMCAwIDMtM3YtMWgxYTMgMyAwIDAgMCAzLTNWNWEzIDMgMCAwIDAtMy0zem0tMyAxN2ExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxLTEtMXYtN2gxMnptMC05SDRWOWExIDEgMCAwIDEgMS0xaDEwYTEgMSAwIDAgMSAxIDF6bTQgNWExIDEgMCAwIDEtMSAxaC0xVjlhMyAzIDAgMCAwLS4xOC0xSDIwem0wLTlIOFY1YTEgMSAwIDAgMSAxLTFoMTBhMSAxIDAgMCAxIDEgMXoiIGZpbGw9IiM0Yzk3ZmYiLz48L3N2Zz4=","icons/warning.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSItbXMtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKSI+PHBhdGggZD0iTTEyIDE2YTEgMSAwIDEgMCAxIDEgMSAxIDAgMCAwLTEtMXptMTAuNjcgMS40Ny04LjA1LTE0YTMgMyAwIDAgMC01LjI0IDBsLTggMTRBMyAzIDAgMCAwIDMuOTQgMjJoMTYuMTJhMyAzIDAgMCAwIDIuNjEtNC41M3ptLTEuNzMgMmExIDEgMCAwIDEtLjg4LjUxSDMuOTRhMSAxIDAgMCAxLS44OC0uNTEgMSAxIDAgMCAxIDAtMWw4LTE0YTEgMSAwIDAgMSAxLjc4IDBsOC4wNSAxNGExIDEgMCAwIDEgLjA1IDEuMDJ6TTEyIDhhMSAxIDAgMCAwLTEgMXY0YTEgMSAwIDAgMCAyIDBWOWExIDEgMCAwIDAtMS0xeiIgZmlsbD0iI2UwYmIwMCIvPjwvc3ZnPg=="}}}]); \ No newline at end of file diff --git a/js/addon-entry-default-costume-editor-color.4235d8b79c4a3c73be9c.js b/js/addon-entry-default-costume-editor-color.4235d8b79c4a3c73be9c.js new file mode 100644 index 0000000..02d8977 --- /dev/null +++ b/js/addon-entry-default-costume-editor-color.4235d8b79c4a3c73be9c.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[18],{1787:function(t,e,s){"use strict";s.r(e),s.d(e,"resources",(function(){return r}));const r={"userscript.js":async function({addon:t,console:e,msg:s}){await t.tab.traps.getPaper();const r=t=>Math.round(+t).toString(16).toUpperCase().padStart(2,"0"),i=t=>{if(null===t)return null;if("string"==typeof t){if(t.startsWith("#"))return t.substring(0,9).toUpperCase();const e=t.match(/^rgb\((\d+)\s*,(\d+)\s*,(\d+)\)$/);if(e){const[t,s,i,n]=e;return"#".concat(r(s)).concat(r(i)).concat(r(n))}const s=t.match(/^rgba\((\d+)\s*,(\d+)\s*,(\d+),([\d.]+)\)$/);if(s){const[t,e,i,n,a]=s;return"#".concat(r(e)).concat(r(i)).concat(r(n)).concat(r(255*a))}}return e.log("Could not normalize color",t),null},n=t=>t===a?a:i(t),a="scratch-paint/style-path/mixed",o=i("#9966FF"),c=i("#000000"),p=Object.assign(Object.create(null),{BRUSH:{resetsFill:!0},ERASER:{},LINE:{resetsStroke:!0,requiresNonZeroStrokeWidth:!0,supportsGradient:!0},FILL:{resetsFill:!0,supportsGradient:!0},SELECT:{supportsGradient:!0},RESHAPE:{supportsGradient:!0},OVAL:{resetsFill:!0,resetsStroke:!0,supportsGradient:!0},RECT:{resetsFill:!0,resetsStroke:!0,supportsGradient:!0},TEXT:{resetsFill:!0,resetsStroke:!0},BIT_BRUSH:{resetsFill:!0},BIT_LINE:{resetsFill:!0,requiresNonZeroStrokeWidth:!0},BIT_OVAL:{resetsFill:!0,resetsStroke:!0,supportsGradient:!0},BIT_RECT:{resetsFill:!0,resetsStroke:!0,supportsGradient:!0},BIT_TEXT:{resetsFill:!0,resetsStroke:!0},BIT_FILL:{resetsFill:!0,supportsGradient:!0},BIT_ERASER:{},BIT_SELECT:{supportsGradient:!0}}),l=()=>p[t.tab.redux.state.scratchPaint.mode];class d{constructor(t,e,s,r){this.reduxPropertyName=t,this.primaryAction=e,this.secondaryAction=s,this.gradientTypeAction=r}get(e=t.tab.redux.state){return e.scratchPaint.color[this.reduxPropertyName]}set(e){const s=this.get(),r=n(e.primary);s.primary!==r&&t.tab.redux.dispatch({type:this.primaryAction,color:r});const i=l();if(i&&i.supportsGradient){const r=n(e.secondary);s.secondary!==r&&t.tab.redux.dispatch({type:this.secondaryAction,color:r}),s.gradientType!==e.gradientType&&t.tab.redux.dispatch({type:this.gradientTypeAction,gradientType:e.gradientType})}}}const u=new d("fillColor","scratch-paint/fill-style/CHANGE_FILL_COLOR","scratch-paint/fill-style/CHANGE_FILL_COLOR_2","scratch-paint/fill-style/CHANGE_FILL_GRADIENT_TYPE"),h=new d("strokeColor","scratch-paint/stroke-style/CHANGE_STROKE_COLOR","scratch-paint/stroke-style/CHANGE_STROKE_COLOR_2","scratch-paint/stroke-style/CHANGE_STROKE_GRADIENT_TYPE"),y=t=>({primary:t,secondary:null,gradientType:"SOLID"});let g,E,T;const _=()=>{g=y(i(t.settings.get("fill"))),E=y(i(t.settings.get("stroke"))),T=t.settings.get("strokeSize")};_();const S=()=>{u.set(g)},k=()=>{h.set(E)},f=e=>{let s=T;0===s&&e&&(s=1),t.tab.redux.state.scratchPaint.color.strokeWidth!==s&&t.tab.redux.dispatch({type:"scratch-paint/stroke-width/CHANGE_STROKE_WIDTH",strokeWidth:s})};t.self.disabled||(S(),k(),f(!1)),t.settings.addEventListener("change",()=>{t.settings.get("persistence")||_()});const m=t=>null!==t.primary&&t.primary!==a;let G=!1;t.tab.redux.initialize(),t.tab.redux.addEventListener("statechanged",({detail:s})=>{if(t.self.disabled)return;const r=s.action;if(!G&&t.settings.get("persistence")){const t=u.get();u.get(s.prev)!==t&&m(t)&&(g=t);const e=h.get();h.get(s.prev)!==e&&m(e)&&(E=e);const r=s.next.scratchPaint.color.strokeWidth;"number"==typeof r&&(T=r)}"scratch-paint/modes/CHANGE_MODE"===r.type&&(G=!0,queueMicrotask(()=>{if(G=!1,t.settings.get("persistence")){const s=l();if(!s)return void e.warn("unknown tool",t.tab.redux.state.scratchPaint.mode);s.resetsFill&&S(),s.resetsStroke&&(f(!!s.requiresNonZeroStrokeWidth),k())}else{const t=u.get(s.prev);if(null===t.primary||t.primary===a){u.get().primary===o&&S()}const e=h.get(s.prev);if(null===e.primary||e.primary===a){h.get().primary===c&&(f(!0),k())}}}))})}}}}]); \ No newline at end of file diff --git a/js/addon-entry-disable-paste-offset.1ef8f9e2f356878f9548.js b/js/addon-entry-disable-paste-offset.1ef8f9e2f356878f9548.js new file mode 100644 index 0000000..5d66f92 --- /dev/null +++ b/js/addon-entry-disable-paste-offset.1ef8f9e2f356878f9548.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[19],{1809:function(t,a,e){"use strict";e.r(a),e.d(a,"resources",(function(){return c}));const c={"userscript.js":async function({addon:t,console:a}){t.tab.redux.initialize(),t.tab.redux.addEventListener("statechanged",({detail:a})=>{t.self.disabled||"scratch-paint/clipboard/SET"!==a.action.type&&"scratch-paint/clipboard/INCREMENT_PASTE_OFFSET"!==a.action.type||t.tab.redux.dispatch({type:"scratch-paint/clipboard/CLEAR_PASTE_OFFSET"})}),t.self.addEventListener("disabled",()=>{t.tab.redux.dispatch({type:"scratch-paint/clipboard/CLEAR_PASTE_OFFSET"}),t.tab.redux.dispatch({type:"scratch-paint/clipboard/INCREMENT_PASTE_OFFSET"})}),t.self.addEventListener("reenabled",()=>{t.tab.redux.dispatch({type:"scratch-paint/clipboard/CLEAR_PASTE_OFFSET"})}),t.self.enabledLate&&t.tab.redux.dispatch({type:"scratch-paint/clipboard/CLEAR_PASTE_OFFSET"})}}}}]); \ No newline at end of file diff --git a/js/addon-entry-disable-stage-drag-select.2e1c3fe5da6ad574206d.js b/js/addon-entry-disable-stage-drag-select.2e1c3fe5da6ad574206d.js new file mode 100644 index 0000000..42f629b --- /dev/null +++ b/js/addon-entry-disable-stage-drag-select.2e1c3fe5da6ad574206d.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[20],{1807:function(t,e,n){"use strict";n.r(e),n.d(e,"resources",(function(){return s}));const s={"userscript.js":async({addon:t,console:e})=>{const n=t.tab.traps.vm;let s=!1;document.addEventListener("mousedown",(function(t){s=t.shiftKey}),{capture:!0});const r=n.stopDrag;n.stopDrag=function(...e){if(s||t.self.disabled)return r.call(this,...e);const n=this.setEditingTarget;this.setEditingTarget=()=>{};const i=r.call(this,...e);return this.setEditingTarget=n,i};const i=n.getTargetIdForDrawableId;n.getTargetIdForDrawableId=function(...e){const n=i.call(this,...e);if(s||t.self.disabled)return n;if(null!==n){const t=this.runtime.getTargetById(n);if(t&&!t.draggable)return null}return n}}}}}]); \ No newline at end of file diff --git a/js/addon-entry-editor-buttons-reverse-order.320f5179822bfacc44b3.js b/js/addon-entry-editor-buttons-reverse-order.320f5179822bfacc44b3.js new file mode 100644 index 0000000..e43305e --- /dev/null +++ b/js/addon-entry-editor-buttons-reverse-order.320f5179822bfacc44b3.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[21],{1727:function(e,n,r){"use strict";r.r(n),r.d(n,"resources",(function(){return a}));var s=r(1728);const a={"userstyle.css":r.n(s).a}},1728:function(e,n,r){(e.exports=r(9)(!1)).push([e.i,'[class*="stage-header_stage-menu-wrapper"],\n[class*="stage-header_stage-size-row"] {\n flex-direction: row-reverse;\n}\n\n[dir="ltr"] [class*="stage-header_stage-size-toggle-group"],\n[dir="ltr"] .sa-debugger-container,\n[dir="ltr"] .sa-gamepad-container {\n margin-right: 0;\n margin-left: 0.2rem;\n}\n\n[dir="rtl"] [class*="stage-header_stage-size-toggle-group"],\n[dir="rtl"] .sa-debugger-container,\n[dir="rtl"] .sa-gamepad-container {\n margin-left: 0;\n margin-right: 0.2rem;\n}\n\n[class*="green-flag_green-flag_"],\n[class*="stop-all_stop-all_"],\n.pause-btn {\n order: 1;\n}\n',""])}}]); \ No newline at end of file diff --git a/js/addon-entry-editor-colored-context-menus.518284315336b7e3979c.js b/js/addon-entry-editor-colored-context-menus.518284315336b7e3979c.js new file mode 100644 index 0000000..d9756ab --- /dev/null +++ b/js/addon-entry-editor-colored-context-menus.518284315336b7e3979c.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[22],{1725:function(t,e,o){(t.exports=o(9)(!1)).push([t.i,'.sa-contextmenu-colored .blocklyContextMenu {\n background-color: var(--sa-contextmenu-bg) !important;\n border-color: var(--sa-contextmenu-border) !important;\n}\n.sa-contextmenu-colored .blocklyContextMenu .goog-menuitem-highlight,\n.sa-contextmenu-colored .s3dev-mi:hover {\n background-color: #0001;\n border-color: transparent !important;\n}\n.sa-contextmenu-colored .blocklyContextMenu .goog-menuitem[style*="border-top"] {\n border-top-color: var(--sa-contextmenu-border) !important;\n}\n.sa-contextmenu-colored .blocklyContextMenu .goog-menuitem .goog-menuitem-content {\n color: white;\n}\n',""])},1793:function(t,e,o){"use strict";o.r(e),o.d(e,"resources",(function(){return c}));var n=o(1637),r=o(1725);const c={"userscript.js":async function({addon:t,console:e}){const o=await t.tab.traps.getBlockly(),r=o.Gesture.prototype.handleRightClick;o.Gesture.prototype.handleRightClick=function(...t){const e=this.targetBlock_,c=r.call(this,...t);return e&&(t=>{const e=o.WidgetDiv.DIV;if(!e)return;const r=t.svgPath_;if(!r)return;const c=Object(n.g)(r.getAttribute("fill")),s=r.getAttribute("stroke")||"#0003";e.classList.add("sa-contextmenu-colored"),e.style.setProperty("--sa-contextmenu-bg",c),e.style.setProperty("--sa-contextmenu-border",s)})(e),c};const c=o.WidgetDiv.hide;o.WidgetDiv.hide=function(...t){return o.WidgetDiv.DIV&&o.WidgetDiv.DIV.classList.remove("sa-contextmenu-colored"),c.call(this,...t)}},"userscript.css":o.n(r).a}}}]); \ No newline at end of file diff --git a/js/addon-entry-editor-extra-keys.77d0ef1f6d9abf645f9f.js b/js/addon-entry-editor-extra-keys.77d0ef1f6d9abf645f9f.js new file mode 100644 index 0000000..cfed40c --- /dev/null +++ b/js/addon-entry-editor-extra-keys.77d0ef1f6d9abf645f9f.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[23],{1805:function(e,n,s){"use strict";s.r(n),s.d(n,"resources",(function(){return t}));const t={"userscript.js":async function({addon:e,msg:n}){const s=await e.tab.traps.getBlockly();let t=null;function o(s,o){return t||(t=[...s]),e.self.disabled||(s.push(["-","-"],[",",","],[".","."]),s.splice(5,0,[n("enter-key"),"enter"]),e.settings.get("experimentalKeys")&&s.push(["`","`"],["=","="],["[","["],["]","]"],["\\","\\"],[";",";"],["'","'"],["/","/"]),o&&e.settings.get("shiftKeys")&&s.push(["!","!"],["@","@"],["#","#"],["$","$"],["%","%"],["^","^"],["&","&"],["*","*"],["(","("],[")",")"],["_","_"],["+","+"],["{","{"],["}","}"],["|","|"],[":",":"],['"','"'],["?","?"],["<","<"],[">",">"],["~","~"]),e.settings.get("twKeys")&&s.push(["backspace","backspace"],["delete","delete"],["shift","shift"],["caps lock","caps lock"],["scroll lock","scroll lock"],["control","control"],["escape","escape"],["insert","insert"],["home","home"],["end","end"],["page up","page up"],["page down","page down"])),s}for(const e of["sensing_keyoptions","event_whenkeypressed"]){const n=s.Blocks[e],t=n.init;n.init=function(...n){const s=this.jsonInit;return this.jsonInit=function(n){return o(n.args0[0].options,"event_whenkeypressed"===e),s.call(this,n)},t.call(this,...n)}}const i=()=>{const e=Blockly.getMainWorkspace(),n=e&&e.getFlyout();if(e&&n){const s=[...e.getAllBlocks(),...n.getWorkspace().getAllBlocks()];for(const e of s){if("event_whenkeypressed"!==e.type&&"sensing_keyoptions"!==e.type)continue;const n=e.inputList[0];if(!n)continue;const s=n.fieldRow.find(e=>e&&Array.isArray(e.menuGenerator_));s&&(s.menuGenerator_=o(t?[...t]:s.menuGenerator_,"event_whenkeypressed"===e.type))}}};i(),e.settings.addEventListener("change",i),e.self.addEventListener("disabled",i),e.self.addEventListener("reenabled",i)}}}}]); \ No newline at end of file diff --git a/js/addon-entry-editor-sounds.db5fa8f24c6195d2e058.js b/js/addon-entry-editor-sounds.db5fa8f24c6195d2e058.js new file mode 100644 index 0000000..62c9642 --- /dev/null +++ b/js/addon-entry-editor-sounds.db5fa8f24c6195d2e058.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[24],{1796:function(e,n,t){"use strict";t.r(n),t.d(n,"resources",(function(){return o}));const o={"userscript.js":async function({addon:e,console:n}){const t=await e.tab.traps.getBlockly(),o=()=>{const e=Blockly.getMainWorkspace(),n=e.options.pathToMedia;t.inject.loadSounds_(n,e)};o();const s=t.init_;t.init_=function(...e){return e[0].options.hasSounds=!0,s.call(this,...e)},e.self.addEventListener("disabled",()=>{const e=Blockly.getMainWorkspace().getAudioManager();delete e.SOUNDS_.click,delete e.SOUNDS_.delete}),e.self.addEventListener("reenabled",o)}}}}]); \ No newline at end of file diff --git a/js/addon-entry-editor-stage-left.e8467004f929857ce1dd.js b/js/addon-entry-editor-stage-left.e8467004f929857ce1dd.js new file mode 100644 index 0000000..7daf384 --- /dev/null +++ b/js/addon-entry-editor-stage-left.e8467004f929857ce1dd.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[25],{1726:function(e,t,r){(e.exports=r(9)(!1)).push([e.i,'[dir="ltr"] [class^="stage-header_stage-size-toggle-group"] [class^="stage-header_stage-button-icon"] {\n transform: scaleX(-1);\n}\n[dir="rtl"] [class^="stage-header_stage-size-toggle-group"] [class^="stage-header_stage-button-icon"] {\n transform: none;\n}\n[class^="target-pane_target-pane"] {\n flex-direction: row-reverse;\n}\n[dir="ltr"] [class^="target-pane_stage-selector-wrapper"] {\n margin-left: 0;\n margin-right: calc(0.5rem / 2);\n}\n[dir="ltr"] [class^="sprite-selector_sprite-selector"] {\n margin-left: calc(0.5rem / 2);\n margin-right: 0;\n}\n[dir="rtl"] [class^="target-pane_stage-selector-wrapper"] {\n margin-right: 0;\n margin-left: calc(0.5rem / 2);\n}\n[dir="rtl"] [class^="sprite-selector_sprite-selector"] {\n margin-right: calc(0.5rem / 2);\n margin-left: 0;\n}\n[class^="gui_flex-wrapper"] {\n flex-direction: row-reverse;\n overflow-x: hidden;\n}\n\n[dir="ltr"] [class^="backpack_backpack-header"] {\n border-top-right-radius: 0;\n border-top-left-radius: 0.5rem;\n}\n[dir="ltr"] [class^="blocks_blocks_C530M"] .injectionDiv,\n[dir="ltr"] [class^="asset-panel_wrapper"] {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0.5rem;\n}\n[dir="ltr"] [class^="gui_extension-button-container"] {\n border-bottom-left-radius: 0.5rem;\n}\n\n[dir="rtl"] [class^="backpack_backpack-header"] {\n border-top-left-radius: 0;\n border-top-right-radius: 0.5rem;\n}\n[dir="rtl"] [class^="blocks_blocks_C530M"] .injectionDiv,\n[dir="rtl"] [class^="asset-panel_wrapper"] {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0.5rem;\n}\n[dir="rtl"] [class^="gui_extension-button-container"] {\n border-bottom-right-radius: 0.5rem;\n}\n\n.Popover {\n /* See hide-flyout */\n z-index: 51;\n}\n\n/* hide-stage compatibility */\n\n.sa-stage-hidden [class*="stage-header_stage-size-row"] {\n right: auto;\n left: 0.5rem;\n width: calc(240px + 0.125rem);\n justify-content: flex-end;\n}\n\n[dir="rtl"] .sa-stage-hidden [class*="stage-header_stage-size-row"] {\n left: auto;\n right: 0.5rem;\n}\n\n.sa-stage-hidden [class*="gui_tab-list_"] {\n padding-inline-start: calc(240px + 1.125rem);\n}\n',""])},1794:function(e,t,r){"use strict";r.r(t),r.d(t,"resources",(function(){return s}));var n=r(1726);const s={"fix-share-the-love.js":async function({addon:e,console:t}){const r=await e.tab.traps.getBlockly(),n=()=>{Blockly.getMainWorkspace()&&window.dispatchEvent(new Event("resize"))};e.self.addEventListener("disabled",n),e.self.addEventListener("reenabled",n);const s=r.VerticalFlyout.prototype.getClientRect;r.VerticalFlyout.prototype.getClientRect=function(){const t=s.call(this);return!t||e.self.disabled||(this.toolboxPosition_===r.TOOLBOX_AT_LEFT&&(t.left+=1e9),t.width-=1e9),t},n()},"stageleft.css":r.n(n).a}}}]); \ No newline at end of file diff --git a/js/addon-entry-editor-stepping.aaf880e03d1df94ce2d3.js b/js/addon-entry-editor-stepping.aaf880e03d1df94ce2d3.js new file mode 100644 index 0000000..68f4630 --- /dev/null +++ b/js/addon-entry-editor-stepping.aaf880e03d1df94ce2d3.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[26],{1639:function(t,e,s){"use strict";const o="http://www.w3.org/2000/svg",i=document.createElementNS(o,"svg");i.style.position="fixed",i.style.top="-999999px",i.style.width="0",i.style.height="0",document.body.appendChild(i);let n=0;const r=new WeakMap,l=t=>(r.get(t)||r.set(t,new Set),r.get(t)),c=(t,e)=>{let s;for(const t of e)(!s||t.priority>s.priority)&&(s=t);t.style.filter=s?s.filter:""},u=(t,e)=>{const s=l(t);s.add(e),c(t,s)},a=(t,e)=>{const s=l(t);s.delete(e),c(t,s)};e.a=class{constructor(t,e){this.priority=t;const s="sa_glower_filter".concat(n++);this.filter='url("#'.concat(s,'")'),this.previousElements=new Set;const r=document.createElementNS(o,"filter");r.id=s,r.setAttribute("width","180%"),r.setAttribute("height","160%"),r.setAttribute("x","-40%"),r.setAttribute("y","-30%");const l=document.createElementNS(o,"feGaussianBlur");l.setAttribute("in","SourceGraphic"),l.setAttribute("stdDeviation","4"),r.appendChild(l);const c=document.createElementNS(o,"feComponentTransfer");c.setAttribute("result","outBlur"),r.appendChild(c);const u=document.createElementNS(o,"feFuncA");u.setAttribute("type","table"),u.setAttribute("tableValues","0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"),c.appendChild(u);const a=document.createElementNS(o,"feFlood");a.setAttribute("flood-opacity","1"),a.setAttribute("result","outColor"),r.appendChild(a),this.filterFlood=a;const d=document.createElementNS(o,"feComposite");d.setAttribute("in","outColor"),d.setAttribute("in2","outBlur"),d.setAttribute("operator","in"),d.setAttribute("result","outGlow"),r.appendChild(d);const h=document.createElementNS(o,"feComposite");h.setAttribute("in","SourceGraphic"),h.setAttribute("in2","outGlow"),h.setAttribute("operator","over"),r.appendChild(h),i.appendChild(r),this.setColor(e)}setColor(t){this.filterFlood.setAttribute("flood-color",t)}setGlowingThreads(t){const e=new Set,s=Blockly.getMainWorkspace();if(s)for(const o of t)o.stack.forEach(t=>{const i=s.getBlockById(t);if(!i)return;if(!o.stack.find(t=>{let e=i;for(;e.childBlocks_.length;)if(e=e.childBlocks_[e.childBlocks_.length-1],t===e.id)return!0;return!1})&&i.svgPath_){const t=i.svgPath_;e.add(t)}});for(const t of this.previousElements)e.has(t)||a(t,this);for(const t of e)this.previousElements.has(t)||u(t,this);this.previousElements=e}}},1822:function(t,e,s){"use strict";s.r(e),s.d(e,"resources",(function(){return n}));var o=s(1634),i=s(1639);const n={"userscript.js":async function({addon:t,console:e}){const s=t.tab.traps.vm,n=new i.a(0,t.settings.get("highlight-color"));t.settings.addEventListener("change",()=>{n.setColor(t.settings.get("highlight-color"))}),t.self.addEventListener("disabled",()=>{n.setGlowingThreads([])});const r=s.runtime._step;s.runtime._step=function(...e){if(r.call(this,...e),!t.self.disabled){const t=Object(o.a)(),e=s.runtime.threads.filter(e=>e!==t&&!e.target.blocks.forceNoGlow&&!e.isCompiled);n.setGlowingThreads(e)}}}}}}]); \ No newline at end of file diff --git a/js/addon-entry-editor-theme3.a27008859bac4c604314.js b/js/addon-entry-editor-theme3.a27008859bac4c604314.js new file mode 100644 index 0000000..ff31f09 --- /dev/null +++ b/js/addon-entry-editor-theme3.a27008859bac4c604314.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[27],{1718:function(t,o,e){(t.exports=e(9)(!1)).push([t.i,".blocklyEditableText > text {\n fill: var(--editorTheme3-inputColor-text);\n}\n.blocklyHtmlInput {\n background-color: var(--editorTheme3-inputColor);\n color: var(--editorTheme3-inputColor-text);\n}\n\n.blocklyDropDownDiv .goog-menuitem-highlight,\n.blocklyDropDownDiv .goog-menuitem-hover,\n.sa-contextmenu-colored .blocklyContextMenu .goog-menuitem-highlight {\n background-color: var(--editorTheme3-hoveredItem, rgba(0, 0, 0, 0.2));\n}\n\n.scratchCommentRect {\n fill: var(--editorTheme3-commentColor);\n}\n.scratchCommentBody,\n.scratchCommentTextarea {\n background-color: var(--editorTheme3-commentColor);\n}\n.scratchWorkspaceCommentBorder {\n stroke: var(--editorTheme3-commentBorder);\n}\n.scratchCommentTextarea::placeholder {\n color: var(--editorTheme3-commentTextTransparent);\n}\n.scratchCommentText {\n fill: var(--editorTheme3-commentText);\n color: var(--editorTheme3-commentText);\n}\n",""])},1719:function(t,o,e){(t.exports=e(9)(!1)).push([t.i,'@namespace xlink url("http://www.w3.org/1999/xlink");\n\n.scratchCategoryItemBubble::after {\n /* block-palette-icons */\n filter: brightness(0);\n}\n\n.blocklyEditableText > text {\n fill: var(--editorTheme3-inputColor-blackText);\n}\n.blocklyHtmlInput {\n color: var(--editorTheme3-inputColor-blackText);\n}\n\n[class*="blocks_blocks_"] image[xlink|href$="/rotate-left.svg"],\n[class*="blocks_blocks_"] image[xlink|href$="/rotate-right.svg"],\n[class*="blocks_blocks_"] image[xlink|href$="/repeat.svg"] {\n filter: invert(1) hue-rotate(180deg);\n}\n\n.blocklyDropDownDiv .goog-menuitem,\n.sa-contextmenu-colored .blocklyContextMenu .goog-menuitem .goog-menuitem-content {\n color: black;\n}\n.blocklyDropDownDiv .blocklyText {\n fill: black;\n}\n\n/* Compatibility */\n\n.sa-block-color {\n --sa-block-text: black;\n --sa-block-gray-text: black;\n --sa-block-colored-text: var(--sa-block-background-tertiary);\n --sa-block-text-on-bright-background: black;\n}\n',""])},1720:function(t,o,e){(t.exports=e(9)(!1)).push([t.i,".scratchCategoryItemBubble::after {\n /* block-palette-icons */\n filter: brightness(0);\n opacity: 0.6;\n}\n\n.u-dropdown-searchbar,\n.u-dropdown-searchbar:focus,\n.blocklyDropDownDiv .goog-menuitem,\n.sa-contextmenu-colored .blocklyContextMenu .goog-menuitem .goog-menuitem-content {\n color: #575e75;\n}\n.u-dropdown-searchbar:focus {\n background-color: var(--editorTheme3-hoveredItem);\n}\n\n.blocklyAngleDragHandle {\n stroke: black;\n stroke-opacity: 0.15;\n paint-order: stroke fill;\n}\n\n.scratchCommentRect {\n fill: #feffff;\n}\n.scratchCommentBody,\n.scratchCommentTextarea {\n background-color: #ffffff;\n}\n.scratchWorkspaceCommentBorder {\n stroke: var(--editorTheme3-commentColor);\n}\n.scratchCommentTextarea::placeholder {\n color: rgba(0, 0, 0, 0.5);\n}\n.scratchCommentText {\n fill: #575e75;\n color: #575e75;\n}\n\n/* Compatibility */\n\n.sa-block-color {\n --sa-block-colored-background: var(--sa-block-background-secondary);\n --sa-block-colored-background-secondary: var(--sa-block-field-background);\n --sa-block-bright-background: var(--sa-block-background-tertiary);\n --sa-block-text: var(--sa-block-background-tertiary);\n --sa-block-gray-text: #575e75;\n --sa-block-colored-text: var(--sa-block-background-tertiary);\n --sa-block-text-on-bright-background: white;\n}\n",""])},1721:function(t,o,e){(t.exports=e(9)(!1)).push([t.i,".u-dropdown-searchbar {\n border-color: rgba(255, 255, 255, 0.15);\n}\n.u-dropdown-searchbar:focus {\n background-color: var(--editorTheme3-hoveredItem);\n}\n.blocklyDropDownDiv .goog-menuitem-checkbox {\n filter: brightness(0) invert(1);\n}\n\n.scratchCommentRect {\n fill: #282828;\n}\n.scratchCommentBody,\n.scratchCommentTextarea {\n background-color: #282828;\n}\n.scratchWorkspaceCommentBorder {\n stroke: var(--editorTheme3-commentColor);\n}\n.scratchCommentTextarea::placeholder {\n color: rgba(255, 255, 255, 0.5);\n}\n.scratchCommentText {\n fill: #ffffff;\n color: #ffffff;\n}\n\n/* Compatibility */\n\n.sa-block-color {\n --sa-block-colored-background: var(--sa-block-background-secondary);\n --sa-block-colored-background-secondary: var(--sa-block-field-background);\n --sa-block-bright-background: var(--sa-block-background-tertiary);\n --sa-block-text: var(--sa-block-background-tertiary);\n --sa-block-gray-text: white;\n --sa-block-colored-text: var(--sa-block-background-tertiary);\n --sa-block-text-on-bright-background: white;\n}\n",""])},1792:function(t,o,e){"use strict";e.r(o),e.d(o,"resources",(function(){return m}));var r=e(1637);const n=new RegExp("^data:image/svg\\+xml;base64,([A-Za-z0-9+/=]*)$"),l={id:null,settingId:"Pen-color",colorId:"pen"},c={id:null,settingId:"tw-color",colorId:"tw"},i={settingId:"sa-color",colorId:"sa"},s=[{id:"motion",settingId:"motion-color",colorId:"motion"},{id:"looks",settingId:"looks-color",colorId:"looks"},{id:"sound",settingId:"sounds-color",colorId:"sounds"},{id:"events",settingId:"events-color",colorId:"event"},{id:"control",settingId:"control-color",colorId:"control"},{id:"sensing",settingId:"sensing-color",colorId:"sensing"},{id:"operators",settingId:"operators-color",colorId:"operators"},{id:"variables",settingId:"data-color",colorId:"data"},{id:"lists",settingId:"data-lists-color",colorId:"data_lists"},{id:"myBlocks",settingId:"custom-color",colorId:"more"},l,c,i];var a=e(1718),d=e.n(a),b=e(1719),g=e.n(b),h=e(1720),u=e.n(h),p=e(1721),k=e.n(p);const m={"theme3.js":async function({addon:t,console:o}){const e=await t.tab.traps.getBlockly(),a=JSON.parse(JSON.stringify(e.Colours));a.sa={primary:"#29beb8",secondary:"#3aa8a4",tertiary:"#3aa8a4"},a.tw={primary:"#ff4c4c",secondary:"#e64444",tertiary:"#e64444"};let d=t.settings.get("text");const b=()=>t.self.disabled?"white":d,g=()=>"colorOnWhite"===b()||"colorOnBlack"===b(),h=o=>t.self.disabled?a[o.colorId].primary:"colorOnWhite"===b()?"#feffff":"colorOnBlack"===b()?"#282828":t.settings.get(o.settingId),u=o=>t.self.disabled?a[o.colorId].secondary:g()?Object(r.a)(h(o),Object(r.d)(t.settings.get(o.settingId),{a:.15})):"black"===b()?Object(r.b)(t.settings.get(o.settingId),{r:.6,g:.6,b:.6}):Object(r.d)(t.settings.get(o.settingId),{r:.9,g:.9,b:.9}),p=o=>t.self.disabled?a[o.colorId].tertiary:g()?t.settings.get(o.settingId):"black"===b()?Object(r.d)(t.settings.get(o.settingId),{r:.65,g:.65,b:.65}):Object(r.d)(t.settings.get(o.settingId),{r:.8,g:.8,b:.8}),k=o=>{if(o instanceof e.Block||o instanceof e.Field){const t=o instanceof e.Block?o:o.sourceBlock_;if(g()||"black"===b()){let o;return o=t.isShadow()&&t.getParent()?t.getParent().getColour():t.getColour(),g()?Object(r.a)(o,Object(r.d)(t.getColourTertiary(),{a:.25})):Object(r.b)(o,{r:.4,g:.4,b:.4})}return t.getColourTertiary()}return g()?Object(r.a)(h(o),Object(r.d)(t.settings.get(o.settingId),{a:.25})):"black"===b()?Object(r.b)(h(o),{r:.4,g:.4,b:.4}):p(o)},m=o=>t.self.disabled||"white"===b()?"#ffffff":"black"===b()?"#000000":o?o.sourceBlock_.getColourTertiary():"#000000",f=()=>t.self.disabled?"#ffffff":{white:"#ffffff",black:"#575e75",colorOnWhite:"#575e75",colorOnBlack:"#ffffff"}[b],y=e.Block.prototype.makeColour_;e.Block.prototype.makeColour_=function(t){return"string"==typeof t&&/^#(?:[0-9A-Za-z]{2}){3,4}$/.test(t)?t:y(t)};const x=e.Toolbox.Category.prototype.createDom;e.Toolbox.Category.prototype.createDom=function(){if(this.iconURI_){if(t.self.disabled)return x.call(this);if(!["sa-blocks","videoSensing","text2speech"].includes(this.id_))return x.call(this);const o=n.exec(this.iconURI_);if(o){const t=atob(o[1]),e="sa-blocks"===this.id_?i:l,r=g?p(e):h(e);if(r){const o=t.replace(/#29beb8|#0ebd8c/gi,r);this.iconURI_="data:image/svg+xml;base64,".concat(btoa(o))}}}if(x.call(this),this.iconURI_)return;const o=s.find(t=>t.id===this.id_);o&&(this.bubble_.style.backgroundColor=g()?k(o):h(o),this.bubble_.style.borderColor=p(o))};const C=e.Block.prototype.setColour;e.Block.prototype.setColour=function(t,o,e){return t.toLowerCase()===a.pen.primary.toLowerCase()&&(t=h(l),o=u(l),e=p(l)),this.type.startsWith("tw_")&&(t=h(c),o=u(c),e=p(c)),C.call(this,t,o,e)};const v=e.BlockSvg.prototype.updateColour;e.BlockSvg.prototype.updateColour=function(){if(v.call(this),g())for(const t of this.inputList)t.outlinePath&&t.outlinePath.setAttribute("fill",k(this))};const I=e.BlockSvg.prototype.showContextMenu_;e.BlockSvg.prototype.showContextMenu_=function(t){return e.WidgetDiv.DIV.style.setProperty("--editorTheme3-hoveredItem",k(this)),I.call(this,t)};const _=e.FieldLabel.prototype.init;e.FieldLabel.prototype.init=function(){_.call(this),this.textElement_.style.fill=m(this)};const w=e.FieldTextInput.prototype.init;e.FieldTextInput.prototype.init=function(){w.call(this),this.sourceBlock_.isShadow()||this.box_.setAttribute("fill",k(this))};const T=e.FieldDropdown.prototype.init;e.FieldDropdown.prototype.init=function(){T.call(this),this.textElement_.style.setProperty("fill",m(this),"important"),"#ffffff"!==m(this)&&(this.arrow_.style.filter=Object(r.f)(m(this)))};const D=e.FieldDropdown.prototype.showEditor_;e.FieldDropdown.prototype.showEditor_=function(){let t;D.call(this),this.disableColourChange_||(this.sourceBlock_.isShadow()?this.sourceBlock_.setShadowColour(k(this)):this.box_&&this.box_.setAttribute("fill",k(this))),t=this.sourceBlock_.isShadow()&&this.sourceBlock_.getParent()?this.sourceBlock_.getParent().getColour():this.sourceBlock_.getColour(),e.DropDownDiv.DIV_.style.backgroundColor=Object(r.g)(t),g()?e.DropDownDiv.getContentDiv().style.setProperty("--editorTheme3-hoveredItem",k(this)):e.DropDownDiv.getContentDiv().style.removeProperty("--editorTheme3-hoveredItem")};const B=e.FieldVariable.prototype.init;e.FieldVariable.prototype.init=function(){B.call(this),this.textElement_.style.setProperty("fill",m(this),"important")};const F=e.FieldVariableGetter.prototype.init;e.FieldVariableGetter.prototype.init=function(){F.call(this),this.textElement_.style.fill=m(this)};const O=e.FieldMatrix.prototype.updateMatrix_;e.FieldMatrix.prototype.updateMatrix_=function(){O.call(this);for(let t=0;t{const o=t.tab.traps.vm;d=t.settings.get("text");for(const t of s){const o="--editorTheme3-".concat(t.colorId);for(const[e,r]of Object.entries({primary:h(t),secondary:u(t),tertiary:p(t),field:k(t)}))document.documentElement.style.setProperty("".concat(o,"-").concat(e),r);e.Colours[t.colorId]&&(e.Colours[t.colorId].primary=h(t),e.Colours[t.colorId].secondary=u(t),e.Colours[t.colorId].tertiary=p(t))}var r,n;t.tab.setCustomBlockColor({color:h(i),secondaryColor:u(i),tertiaryColor:p(i)}),e.Colours.textField=(r="input-color",n="textField",t.self.disabled?a[n]:t.settings.get(r)),"#575e75"===f()?e.Colours.fieldShadow="rgba(0, 0, 0, 0.15)":e.Colours.fieldShadow=a.fieldShadow;const l=e.getMainWorkspace(),c=l.getFlyout(),b=l.getToolbox();o.editingTarget&&o.emitWorkspaceUpdate();const g=c.getWorkspace();e.Xml.clearWorkspaceAndLoadFromXml(e.Xml.workspaceToDom(g),g),b.populate_(l.options.languageTree),l.toolboxRefreshEnabled_=!0};E(),t.settings.addEventListener("change",E),t.self.addEventListener("disabled",E),t.self.addEventListener("reenabled",E)},"theme3.css":d.a,"black_text.css":g.a,"color_on_white.css":u.a,"color_on_black.css":k.a}}}]); \ No newline at end of file diff --git a/js/addon-entry-fullscreen.222c056dd0688cba9343.js b/js/addon-entry-fullscreen.222c056dd0688cba9343.js new file mode 100644 index 0000000..1ad9dd8 --- /dev/null +++ b/js/addon-entry-fullscreen.222c056dd0688cba9343.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[28],{1749:function(e,s,a){(e.exports=a(9)(!1)).push([e.i,".sa-fullscreen.sa-body-editor {\n overflow: hidden !important;\n}\n",""])},1750:function(e,s,a){(e.exports=a(9)(!1)).push([e.i,'[class*="stage-wrapper_full-screen"] [class*="stage_full-screen"],\n[class*="stage-wrapper_full-screen"] [class*="stage_green-flag-overlay-wrapper"] {\n border: 0 !important;\n border-radius: 0 !important;\n}\n\n[class*="stage_stage-overlays_"][class*="stage_full-screen_"] {\n top: 0;\n left: 0;\n}\n',""])},1751:function(e,s,a){(e.exports=a(9)(!1)).push([e.i,'[class*="stage-wrapper_full-screen"] [class*="stage-wrapper_stage-canvas-wrapper"],\n[class*="stage-wrapper_full-screen"] [class*="stage_stage"],\n[class*="stage-wrapper_full-screen"] [class*="stage-header_stage-menu-wrapper"],\n[class*="stage-wrapper_full-screen"] canvas {\n width: min(calc((100vh - 44px) * var(--sa-fullscreen-width) / var(--sa-fullscreen-height)), 100vw) !important;\n}\n\n[class*="stage-wrapper_full-screen"] [class*="stage-wrapper_stage-canvas-wrapper"],\n[class*="stage-wrapper_full-screen"] [class*="stage_stage"],\n[class*="stage-wrapper_full-screen"] [class*="stage_green-flag-overlay-wrapper"],\n[class*="stage-wrapper_full-screen"] canvas {\n height: min(calc(100vh - 44px), calc(100vw * var(--sa-fullscreen-height) / var(--sa-fullscreen-width))) !important;\n}\n\n[class*="stage-wrapper_full-screen"] {\n padding: 0rem !important;\n}\n\n[class*="stage-wrapper_full-screen"] [class*="monitor-list_monitor-list"] {\n overflow: visible;\n}\n\n[class*="stage-wrapper_full-screen"] [class*="stage_question-wrapper"] {\n width: auto !important;\n}\n',""])},1752:function(e,s,a){(e.exports=a(9)(!1)).push([e.i,'[class*="stage-wrapper_full-screen"] [class*="stage-wrapper_stage-canvas-wrapper"],\n[class*="stage-wrapper_full-screen"] [class*="stage_stage"],\n[class*="stage-wrapper_full-screen"] [class*="stage-header_stage-menu-wrapper"],\n[class*="stage-wrapper_full-screen"] canvas {\n width: min(calc(100vh * var(--sa-fullscreen-width) / var(--sa-fullscreen-height)), 100vw) !important;\n}\n\n[class*="stage-wrapper_full-screen"] [class*="stage-wrapper_stage-canvas-wrapper"],\n[class*="stage-wrapper_full-screen"] [class*="stage_stage"],\n[class*="stage-wrapper_full-screen"] [class*="stage_green-flag-overlay-wrapper"],\n[class*="stage-wrapper_full-screen"] canvas {\n height: min(100vh, calc(100vw * var(--sa-fullscreen-height) / var(--sa-fullscreen-width))) !important;\n}\n\n[class*="stage-wrapper_full-screen"] {\n padding: 0rem !important;\n}\n\n[class*="stage-wrapper_full-screen"] [class*="monitor-list_monitor-list"] {\n overflow: visible;\n}\n\n[class*="stage-wrapper_full-screen"] [class*="stage_question-wrapper"] {\n width: auto !important;\n}\n',""])},1753:function(e,s,a){(e.exports=a(9)(!1)).push([e.i,'[class*="stage-wrapper_full-screen"] [class*="stage-header_stage-header-wrapper-overlay"] {\n display: none;\n}\n\n[class*="stage-wrapper_full-screen"] {\n top: 0rem !important;\n}\n',""])},1817:function(e,s,a){"use strict";a.r(s),a.d(s,"resources",(function(){return g}));var n=a(1749),r=a.n(n),t=a(1750),l=a.n(t),c=a(1751),i=a.n(c),p=a(1752),o=a.n(p),u=a(1753),d=a.n(u);const g={"userscript.js":async function({addon:e,console:s}){const a=e.tab.traps.vm,n=()=>{document.documentElement.style.setProperty("--sa-fullscreen-width",a.runtime.stageWidth),document.documentElement.style.setProperty("--sa-fullscreen-height",a.runtime.stageHeight)};function r(){e.settings.get("browserFullscreen")&&!e.self.disabled&&(e.tab.redux.state.scratchGui.mode.isFullScreen&&null===document.fullscreenElement?document.documentElement.requestFullscreen():e.tab.redux.state.scratchGui.mode.isFullScreen||null===document.fullscreenElement||document.exitFullscreen())}async function t(){const s=await e.tab.waitForElement(".sa-body-editor");e.tab.redux.state.scratchGui.mode.isFullScreen?s.classList.add("sa-fullscreen"):s.classList.remove("sa-fullscreen")}let l,c,i;async function p(){l=await e.tab.waitForElement("[class*=monitor-list_monitor-list-scaler]"),i=await e.tab.waitForElement('[class*="stage-wrapper_full-screen"] [class*="stage_stage"]'),c=new ResizeObserver(()=>{const s=i.getBoundingClientRect();if(!s.width||!s.height)return;const n=e.tab.traps.vm.runtime.renderer;n&&n.resize(s.width,s.height);const r=s.width/a.runtime.stageWidth;l.style.transform="scale(".concat(r,", ").concat(r,")")}),c.observe(i)}n(),a.on("STAGE_SIZE_CHANGED",n),p(),t(),r(),e.tab.redux.initialize(),e.tab.redux.addEventListener("statechanged",e=>{"scratch-gui/mode/SET_FULL_SCREEN"===e.detail.action.type&&(p(),r(),t())}),window.addEventListener("resize",()=>{e.settings.get("browserFullscreen")&&!e.self.disabled&&null===document.fullscreenElement&&e.tab.redux.state.scratchGui.mode.isFullScreen&&e.tab.redux.dispatch({type:"scratch-gui/mode/SET_FULL_SCREEN",isFullScreen:!1})}),document.addEventListener("fullscreenchange",()=>{null===document.fullscreenElement&&e.tab.redux.state.scratchGui.mode.isFullScreen&&e.tab.redux.dispatch({type:"scratch-gui/mode/SET_FULL_SCREEN",isFullScreen:!1})}),e.settings.addEventListener("change",()=>{r()}),e.self.addEventListener("disabled",()=>{c.disconnect()}),e.self.addEventListener("reenabled",()=>{c.observe(i),r()})},"hideOverflow.css":r.a,"removeBorder.css":l.a,"resizeWindow.css":i.a,"resizeWindow_noToolbar.css":o.a,"hideToolbar.css":d.a}}}]); \ No newline at end of file diff --git a/js/addon-entry-gamepad.c9d82685a9748d83966d.js b/js/addon-entry-gamepad.c9d82685a9748d83966d.js new file mode 100644 index 0000000..9b705bc --- /dev/null +++ b/js/addon-entry-gamepad.c9d82685a9748d83966d.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[29],{1733:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,'[dir="ltr"] .sa-gamepad-container {\n margin-right: 0.2rem;\n}\n[dir="rtl"] .sa-gamepad-container {\n margin-left: 0.2rem;\n}\n\n.sa-gamepad-popup-outer {\n /* above fullscreen */\n z-index: 99999;\n}\n.sa-gamepad-popup {\n box-sizing: border-box;\n width: 700px;\n max-height: min(800px, 85vh);\n height: 100%;\n max-width: 85%;\n margin: 50px auto;\n display: flex;\n flex-direction: column;\n}\n.sa-gamepad-popup-content {\n padding: 1.5rem 2.25rem;\n height: 100%;\n overflow-y: auto;\n}\n\n.sa-gamepad-popup [class*="modal_header-item-title"] {\n margin: 0 -20rem 0 0;\n}\n\n.sa-gamepad-cursor {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 9999;\n user-select: none;\n pointer-events: none;\n will-change: transform;\n image-rendering: optimizeSpeed;\n image-rendering: crisp-edges;\n image-rendering: pixelated;\n}\n.sa-gamepad-cursor-down {\n filter: invert(100%);\n}\n\n.sa-gamepad-small .sa-gamepad-container[data-editor-mode="editor"] {\n display: none !important;\n}\n\n.sa-gamepad-hide-cursor [class^="stage_stage_"] {\n cursor: none;\n}\n\n.sa-gamepad-browser-support-warning {\n font-weight: bold;\n margin-bottom: 10px;\n}\n\n.sa-gamepad-extra-options {\n display: none;\n}\n.sa-gamepad-has-controller .sa-gamepad-extra-options {\n display: block;\n}\n\n.sa-gamepad-store-settings {\n display: block;\n}\n.sa-gamepad-store-settings > input {\n margin-right: 4px;\n}\n\n.sa-gamepad-reset-button {\n margin: 8px 8px 8px 0;\n}\n',""])},1734:function(e,t,n){var a=n(209);(e.exports=n(9)(!1)).push([e.i,'.gamepadlib-selector {\n width: 100%;\n margin-bottom: 3px;\n}\n\n.gamepadlib-content {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n}\n.gamepadlib-content-buttons {\n padding-right: 10px;\n}\n\n.gamepadlib-mapping {\n display: flex;\n align-items: center;\n margin-bottom: 3px;\n}\n.gamepadlib-mapping-label {\n width: 100px;\n text-align: center;\n}\n.gamepadlib-keyinput {\n text-align: center;\n width: 75px;\n height: 25px;\n border-radius: 0;\n border: 1px solid black;\n background: white;\n color: black;\n box-sizing: border-box;\n padding: 0;\n margin: 0;\n}\n[theme="dark"] .gamepadlib-keyinput {\n background-color: var(--ui-tertiary);\n border-color: var(--ui-black-transparent);\n color: var(--text-primary);\n}\n.gamepadlib-mapping[data-value="1"] .gamepadlib-keyinput {\n background: yellow;\n}\n[theme="dark"] .gamepadlib-mapping[data-value="1"] .gamepadlib-keyinput {\n background: hsl(60, 100%, 20%)\n}\n.gamepadlib-keyinput[data-accepting-input="true"] {\n background: #d6fff9;\n}\n[theme="dark"] .gamepadlib-keyinput[data-accepting-input="true"] {\n background: hsl(171, 100%, 20%);\n}\n.gamepadlib-keyinput[data-empty="true"]:not([data-accepting-input="true"]) {\n color: #aaa;\n font-style: italic;\n}\n\n.gamepadlib-axis {\n margin-bottom: 8px;\n text-align: center;\n}\n.gamepadlib-axis-circle {\n position: relative;\n width: 150px;\n height: 150px;\n border: 1px solid black;\n overflow: hidden;\n}\n[theme="dark"] .gamepadlib-axis-circle {\n border-color: var(--ui-black-transparent);\n}\n.gamepadlib-axis-dot {\n position: absolute;\n top: 50%;\n left: 50%;\n background-image: url('+a(n(1735))+");\n width: 8px;\n height: 8px;\n transform: translate(-50%, -50%);\n pointer-events: none;\n}\n.gamepadlib-axis-mapping {\n width: 100%;\n}\n\n.gamepadlib-axis-circle-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n.gamepadlib-axis-circle-overlay > .gamepadlib-axis-mapper {\n position: absolute;\n}\n.gamepadlib-axis-circle-overlay > .gamepadlib-axis-mapper:nth-of-type(1) {\n left: 50%;\n top: 0;\n transform: translateX(-50%);\n}\n.gamepadlib-axis-circle-overlay > .gamepadlib-axis-mapper:nth-of-type(2) {\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n}\n.gamepadlib-axis-circle-overlay > .gamepadlib-axis-mapper:nth-of-type(3) {\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n}\n.gamepadlib-axis-circle-overlay > .gamepadlib-axis-mapper:nth-of-type(4) {\n left: 50%;\n bottom: 0;\n transform: translateX(-50%);\n}\n",""])},1735:function(e,t,n){e.exports=n.p+"static/assets/88a77444f0bb453209bf1c62becbd37c.svg"},1761:function(e,t,n){"use strict";n.r(t),n.d(t,"resources",(function(){return N}));var a=n(468);let s=window.console;const i=[{type:"key",high:"ArrowRight",low:"ArrowLeft",deadZone:.5},{type:"key",high:"ArrowDown",low:"ArrowUp",deadZone:.5}],o=[{type:"key",high:"d",low:"a",deadZone:.5},{type:"key",high:"s",low:"w",deadZone:.5}],r=[{type:"virtual_cursor",high:"+x",low:"-x",sensitivity:.6,deadZone:.2},{type:"virtual_cursor",high:"-y",low:"+y",sensitivity:.6,deadZone:.2}],d=e=>{if("object"!=typeof e||!e)return s.warn("invalid mapping",e),{type:"key",high:null,low:null};const t=Object.assign({},e);if("key"===t.type)void 0===t.deadZone&&(t.deadZone=.5),void 0===t.high&&(t.high=""),void 0===t.low&&(t.low="");else if("mousedown"===t.type)void 0===t.deadZone&&(t.deadZone=.5),void 0===t.button&&(t.button=0);else{if("virtual_cursor"!==t.type)return s.warn("unknown mapping type",t.type),{type:"key",high:null,low:null};void 0===t.high&&(t.high=""),void 0===t.low&&(t.low=""),void 0===t.sensitivity&&(t.sensitivity=10),void 0===t.deadZone&&(t.deadZone=.5)}return t},l=e=>Object.assign({},e),c=l,p=e=>{const t=l(e);return delete t.deadZone,delete t.low,t},h=(e,t)=>{for(;e.lengthh([],e),g=e=>({usesArrows:e.has("ArrowUp")||e.has("ArrowDown")||e.has("ArrowRight")||e.has("ArrowLeft"),usesWASD:e.has("w")&&e.has("s")||e.has("a")&&e.has("d")}),m=e=>"".concat(e.id," (").concat(e.index,")");class y{constructor(e,t){this.gamepad=e,this.gamepadLib=t,this.resetMappings()}resetMappings(){this.hints=this.gamepadLib.getHints(),this.buttonMappings=this.getDefaultButtonMappings().map(d),this.axesMappings=this.getDefaultAxisMappings().map(d)}clearMappings(){this.buttonMappings=u(this.gamepad.buttons.length),this.axesMappings=u(this.gamepad.axes.length)}getDefaultButtonMappings(){let e;if(this.hints.importedSettings)e=this.hints.importedSettings.buttons;else{const t=this.hints.usedKeys,n=new Set,{usesArrows:a,usesWASD:s}=g(t);s&&(n.add("w"),n.add("a"),n.add("s"),n.add("d"));const i=["p","q","r"],o=[" ","Enter","e","f","z","x","c",...Array.from(t).filter(e=>1===e.length&&!i.includes(e))],r=e=>{for(const a of e)if(t.has(a)&&!n.has(a))return n.add(a),a;return null},d=()=>r(o),l=()=>r(i),c=()=>a||!s?"ArrowUp":"w",p=()=>a||!s?"ArrowDown":"s",h=()=>a||!s?"ArrowRight":"d",u=()=>a||!s?"ArrowLeft":"a",m=(()=>a&&t.has("ArrowUp")?"ArrowUp":s&&t.has("w")?"w":r(o))();let y=d(),b=d(),w=d();!m||y||b||w||(y=m,b=m,w=m),m&&y&&!b&&!w&&(b=m,w=y),e=[],e[0]={type:"key",high:m},e[1]={type:"key",high:y},e[2]={type:"key",high:b},e[3]={type:"key",high:w},e[4]={type:"mousedown"},e[5]={type:"mousedown"},e[6]={type:"mousedown"},e[7]={type:"mousedown"},e[9]={type:"key",high:l()},e[8]={type:"key",high:l()},e[10]={type:"key",high:null,low:null},e[11]={type:"key",high:null,low:null},e[12]={type:"key",high:c()},e[13]={type:"key",high:p()},e[14]={type:"key",high:u()},e[15]={type:"key",high:h()}}return h(e,this.gamepad.buttons.length)}getDefaultAxisMappings(){let e=[];if(this.hints.importedSettings)e=this.hints.importedSettings.axes;else if(4===this.gamepad.axes.length){const t=this.hints.usedKeys,{usesArrows:n,usesWASD:a}=g(t);a?(e.push(o[0]),e.push(o[1])):n?(e.push(i[0]),e.push(i[1])):(e.push(r[0]),e.push(r[1])),e.push(r[0]),e.push(r[1])}return h(e,this.gamepad.axes.length)}}class b extends a.a{constructor(){super(),this.gamepads=new Map,this.handleConnect=this.handleConnect.bind(this),this.handleDisconnect=this.handleDisconnect.bind(this),this.update=this.update.bind(this),this.animationFrame=null,this.currentTime=null,this.deltaTime=0,this.virtualCursor={x:0,y:0,maxX:1/0,minX:-1/0,maxY:1/0,minY:-1/0,modified:!1},this._editor=null,this.connectCallbacks=[],this.keysPressedThisFrame=new Set,this.oldKeysPressed=new Set,this.mouseButtonsPressedThisFrame=new Set,this.oldMouseDown=new Set,this.addEventHandlers()}addEventHandlers(){window.addEventListener("gamepadconnected",this.handleConnect),window.addEventListener("gamepaddisconnected",this.handleDisconnect)}removeEventHandlers(){window.removeEventListener("gamepadconnected",this.handleConnect),window.removeEventListener("gamepaddisconnected",this.handleDisconnect)}gamepadConnected(){return this.gamepads.size>0?Promise.resolve():new Promise(e=>{this.connectCallbacks.push(e)})}getHints(){return Object.assign({usedKeys:new Set,importedSettings:null,generated:!1},this.getUserHints())}getUserHints(){return{}}resetControls(){for(const e of this.gamepads.values())e.resetMappings()}clearControls(){for(const e of this.gamepads.values())e.clearMappings()}handleConnect(e){for(const e of this.connectCallbacks)e();this.connectCallbacks=[];const t=e.gamepad,n=m(t);s.log("connected",t);const a=new y(t,this);this.gamepads.set(n,a),null===this.animationFrame&&(this.animationFrame=requestAnimationFrame(this.update)),this.dispatchEvent(new CustomEvent("gamepadconnected",{detail:a}))}handleDisconnect(e){const t=e.gamepad,n=m(t);s.log("disconnected",t);const a=this.gamepads.get(n);this.gamepads.delete(n),this.dispatchEvent(new CustomEvent("gamepaddisconnected",{detail:a})),0===this.gamepads.size&&(cancelAnimationFrame(this.animationFrame),this.animationFrame=null,this.currentTime=null)}dispatchKey(e,t){t?this.dispatchEvent(new CustomEvent("keydown",{detail:e})):this.dispatchEvent(new CustomEvent("keyup",{detail:e}))}dispatchMouse(e,t){t?this.dispatchEvent(new CustomEvent("mousedown",{detail:e})):this.dispatchEvent(new CustomEvent("mouseup",{detail:e}))}dispatchMouseMove(e,t){this.dispatchEvent(new CustomEvent("mousemove",{detail:{x:e,y:t}}))}updateButton(e,t){if("key"===t.type)e>=t.deadZone?t.high&&this.keysPressedThisFrame.add(t.high):e<=-t.deadZone&&t.low&&this.keysPressedThisFrame.add(t.low);else if("mousedown"===t.type){Math.abs(e)>=t.deadZone&&this.mouseButtonsPressedThisFrame.add(t.button)}else if("virtual_cursor"===t.type){const n=t.deadZone;let a;if(e>=n&&(a=t.high),e<=-n&&(a=t.low),a){const s=(Math.abs(e)-n)/(1-n),i=s*s*t.sensitivity*this.deltaTime;"+x"===a?this.virtualCursor.x+=i:"-x"===a?this.virtualCursor.x-=i:"+y"===a?this.virtualCursor.y+=i:"-y"===a&&(this.virtualCursor.y-=i),this.virtualCursor.modified=!0}}}update(e){this.oldKeysPressed=this.keysPressedThisFrame,this.oldMouseButtonsPressed=this.mouseButtonsPressedThisFrame,this.keysPressedThisFrame=new Set,this.mouseButtonsPressedThisFrame=new Set,null===this.currentTime?this.deltaTime=0:this.deltaTime=e-this.currentTime,this.deltaTime=Math.max(Math.min(this.deltaTime,1e3),0),this.currentTime=e,this.animationFrame=requestAnimationFrame(this.update);const t=navigator.getGamepads();for(const e of t){if(null===e)continue;const t=m(e),n=this.gamepads.get(t);for(let t=0;tthis.virtualCursor.maxX&&(this.virtualCursor.x=this.virtualCursor.maxX),this.virtualCursor.xthis.virtualCursor.maxY&&(this.virtualCursor.y=this.virtualCursor.maxY),this.virtualCursor.y!navigator.getGamepads||(!(!navigator.userAgent.includes("Firefox")||!navigator.userAgent.includes("Linux"))||!(!navigator.userAgent.includes("Firefox")||!navigator.userAgent.includes("Mac OS"))),b.setConsole=e=>s=e;const w=e=>{for(;e.firstChild;)e.removeChild(e.firstChild)},v=e=>"gamepadlib-axis-".concat(e);class A extends a.a{constructor(e){super(),this.gamepadLib=e,this.root=Object.assign(document.createElement("div"),{className:"gamepadlib-root"}),this.selector=Object.assign(document.createElement("select"),{className:"gamepadlib-selector"}),this.content=Object.assign(document.createElement("div"),{className:"gamepadlib-content"}),this.root.appendChild(this.selector),this.root.appendChild(this.content),this.onSelectorChange=this.onSelectorChange.bind(this),this.onGamepadsChange=this.onGamepadsChange.bind(this),this.selector.addEventListener("change",this.onSelectorChange),this.gamepadLib.addEventListener("gamepadconnected",this.onGamepadsChange),this.gamepadLib.addEventListener("gamepaddisconnected",this.onGamepadsChange),this.buttonIdToElement=new Map,this.axisIdToElement=new Map,this.hidden=!1,this.msg=(e,t)=>e}onSelectorChange(){this.updateContent(),this.dispatchEvent(new CustomEvent("gamepad-changed"))}onGamepadsChange(){this.updateAllContent(),this.dispatchEvent(new CustomEvent("gamepad-changed"))}updateAllContent(){this.updateDropdown(),this.updateContent(),this.focus()}updateDropdown(){w(this.selector);const e=Array.from(this.gamepadLib.gamepads.entries());if(0!==e.length){this.selector.hidden=!1;for(const[t,n]of e){const e=document.createElement("option");e.textContent=t,e.value=t,this.selector.appendChild(e)}}else this.selector.hidden=!0}keyToString(e){return" "===e?this.msg("key-space"):"ArrowUp"===e?this.msg("key-up"):"ArrowDown"===e?this.msg("key-down"):"ArrowLeft"===e?this.msg("key-left"):"ArrowRight"===e?this.msg("key-right"):"Enter"===e?this.msg("key-enter"):1===e.length?e.toUpperCase():e.replace(/[a-z]([A-Z])/,e=>"".concat(e[0]," ").concat(e[1]))}createButtonMapping(e,t,{property:n="high",allowClick:a=!0}={}){const s=document.createElement("input");s.readOnly=!0,s.className="gamepadlib-keyinput",s.title=this.msg("keyinput-title"),s.dataset.index=t;const i=()=>{const a=e[t];if(s.dataset.empty=!1,"key"===a.type)null===a[n]?(s.value=this.msg("key-none"),s.dataset.empty=!0):s.value=this.keyToString(a[n]);else if("mousedown"===a.type){let e=this.msg("key-click");0!==a.button&&(e+=" (".concat(a.button,")")),s.value=e}else s.value="??? ".concat(a.type)},o=()=>{e[t]=d(e[t]),r=!1,s.blur(),i(),s.dispatchEvent(new CustomEvent("mapping-changed")),this.changed()};let r=!1;const l=a=>{if(r){a.preventDefault();const s=a.key;if(["Alt"].includes(s))return;const i=e[t],r=["ArrowUp","ArrowDown","ArrowRight","ArrowLeft","Enter","Shift","CapsLock","ScrollLock","Control","Insert","Home","End","PageUp","PageDown"];1===s.length||r.includes(s)?(i.type="key",i[n]=s):"Escape"!==s&&(i.type="key",i[n]=null),o()}else"Enter"===a.key&&(a.preventDefault(),a.target.click())},c=["Shift","Control"],p=()=>{s.dataset.acceptingInput=!1,r&&(r=!1,i())};return s.addEventListener("contextmenu",e=>{e.preventDefault()}),s.addEventListener("mouseup",n=>{if(n.preventDefault(),r)if(a){const a=e[t];a.type="mousedown",a.button=n.button,o()}else p();else s.value="...",s.dataset.acceptingInput=!0,r=!0}),s.addEventListener("keydown",e=>{c.includes(e.key)||l(e)}),s.addEventListener("keyup",e=>{c.includes(e.key)&&l(e)}),s.addEventListener("blur",p),i(),s}createAxisMapping(e,t){const n=document.createElement("select");n.className="gamepadlib-axis-mapping",n.id=v(t),n.appendChild(Object.assign(document.createElement("option"),{textContent:this.msg("axis-none"),value:"none"})),n.appendChild(Object.assign(document.createElement("option"),{textContent:this.msg("axis-cursor"),value:"cursor"})),n.appendChild(Object.assign(document.createElement("option"),{textContent:"WASD",value:"wasd"})),n.appendChild(Object.assign(document.createElement("option"),{textContent:this.msg("axis-arrows"),value:"arrows"})),n.appendChild(Object.assign(document.createElement("option"),{textContent:this.msg("axis-custom"),value:"custom"}));const a=()=>{"key"===e[t].type||"mousedown"===e[t].type?null===e[t].high&&null===e[t].low&&null===e[t+1].high&&null===e[t+1].low?n.value="none":e[t].high===o[0].high&&e[t].low===o[0].low&&e[t+1].high===o[1].high&&e[t+1].low===o[1].low?n.value="wasd":e[t].high===i[0].high&&e[t].low===i[0].low&&e[t+1].high===i[1].high&&e[t+1].low===i[1].low?n.value="arrows":n.value="custom":"virtual_cursor"===e[t].type?n.value="cursor":n.value="none"};a();const s=document.createElement("div");s.className="gamepadlib-axis-circle-overlay";const l=()=>{if(w(s),"key"===e[t].type){const n=[this.createButtonMapping(e,t+1,{property:"low",allowClick:!1}),this.createButtonMapping(e,t,{property:"low",allowClick:!1}),this.createButtonMapping(e,t,{property:"high",allowClick:!1}),this.createButtonMapping(e,t+1,{property:"high",allowClick:!1})];for(const e of n)e.classList.add("gamepadlib-axis-mapper"),e.addEventListener("mapping-changed",a),s.appendChild(e)}};return l(),n.addEventListener("change",()=>{"custom"===n.value?"key"!==e[t].type&&(e[t]=d(i[0]),e[t+1]=d(i[1])):"arrows"===n.value?(e[t]=d(i[0]),e[t+1]=d(i[1])):"wasd"===n.value?(e[t]=d(o[0]),e[t+1]=d(o[1])):"cursor"===n.value?(e[t]=d(r[0]),e[t+1]=d(r[1])):(e[t]=d({type:"key",high:null,low:null}),e[t+1]=d({type:"key",high:null,low:null})),l(),this.changed()}),{circleOverlay:s,selector:n}}hasControllerSelected(){return!!this.selector.value}updateContent(){if(w(this.content),this.hidden)return;const e=this.selector.value;if(!e){const e=document.createElement("div");return e.textContent=this.msg("no-controllers"),void this.content.appendChild(e)}const t=this.gamepadLib.gamepads.get(e);if(!t){const t=document.createElement("div");return t.textContent="Cannot find controller: ".concat(e),void this.content.appendChild(t)}this.buttonIdToElement.clear(),this.axisIdToElement.clear();const n=document.createElement("div");n.className="gamepadlib-content-buttons";const a=t.buttonMappings;for(let e=0;ee&&m(e)===this.selector.value);if(t){for(let e=0;e{if(a.editingTarget)return e();a.runtime.once("PROJECT_LOADED",e)});const s=()=>null!==a.runtime._steppingInterval,i=e=>{switch(e){case"right arrow":return"ArrowRight";case"up arrow":return"ArrowUp";case"left arrow":return"ArrowLeft";case"down arrow":return"ArrowDown";case"enter":return"Enter";case"space":return" "}return e.toLowerCase().charAt(0)},o=()=>{const e=[a.runtime.getTargetForStage(),...a.runtime.targets].filter(e=>e.isOriginal).map(e=>e.blocks),t=new Set;for(const n of e)for(const e of Object.values(n._blocks))if("event_whenkeypressed"===e.opcode||"sensing_keyoptions"===e.opcode){if("sensing_keyoptions"===e.opcode&&!e.parent)continue;const n=e.fields.KEY_OPTION.value;t.add(i(n))}return t},r=()=>{const e=a.runtime.getTargetForStage().comments;for(const t of Object.values(e))if(t.text.includes(" // _gamepad_"))return t;return null};f.setConsole(t);const d=new f;d.getUserHints=()=>{const e=(()=>{const e=r();if(!e)return null;const n=e.text.split("\n").find(e=>e.endsWith(" // _gamepad_"));if(!n)return t.warn("Gamepad comment does not contain valid line"),null;const a=n.substr(0,n.length-" // _gamepad_".length);let s;try{if(s=JSON.parse(a),!s||"object"!=typeof s||!Array.isArray(s.buttons)||!Array.isArray(s.axes))throw new Error("Invalid data")}catch(e){return t.warn("Gamepad comment has invalid JSON",e),null}return s})();return e?{importedSettings:e}:{usedKeys:o()}},a.runtime.on("PROJECT_LOADED",()=>{d.resetControls()}),e.settings.get("hide")&&await new Promise(t=>{const n=()=>{e.settings.removeEventListener("change",a),t()},a=()=>{e.settings.get("hide")||n()};d.gamepadConnected().then(n),e.settings.addEventListener("change",a)});const l=a.runtime.renderer,c=l._xRight-l._xLeft,p=l._yTop-l._yBottom,h=l.canvas,u=document.createElement("div");u.className="sa-gamepad-container",e.tab.displayNoneWhileDisabled(u,{display:"flex"});const g=document.createElement("span");g.className=e.tab.scratchClass("button_outlined-button","stage-header_stage-button");const m=document.createElement("div");m.className=e.tab.scratchClass("button_content");const y=document.createElement("img");let b;y.className=e.tab.scratchClass("stage-header_stage-button-icon"),y.draggable=!1,y.src=e.self.getResource("/gamepad.svg"),m.appendChild(y),g.appendChild(m),u.appendChild(g);let w=!1;const v=()=>{a.runtime.emitProjectChanged(),a.editingTarget===a.runtime.getTargetForStage()&&a.emitWorkspaceUpdate()},A=()=>{const e=b.export();if(!e)return void t.warn("Could not export gamepad settings");const s="".concat(n("config-header"),"\n").concat(JSON.stringify(e)).concat(" // _gamepad_"),i=r();if(i)i.text=s;else{a.runtime.getTargetForStage().createComment(Math.random()+"",null,s,50,50,350,150,!1)}v()},x=()=>{w&&A()},E=e=>{w=!!e.target.checked,w?A():(()=>{const e=r();if(e){delete a.runtime.getTargetForStage().comments[e.id],v()}})()},k=()=>{document.body.classList.toggle("sa-gamepad-has-controller",b.hasControllerSelected()),x()};g.addEventListener("click",()=>{b||(b=d.editor(),b.msg=n,b.addEventListener("mapping-changed",x),b.addEventListener("gamepad-changed",k));const t=b.generateEditor();k();const{backdrop:a,container:s,content:i,closeButton:o,remove:r}=e.tab.createModal(n("settings"),{isOpen:!0,useEditorClasses:!0});if(a.addEventListener("click",r),window.addEventListener("keydown",e=>{"Escape"!==e.key||e.target.closest("[data-accepting-input]")||r()}),e.self.addEventListener("disabled",r),a.classList.add("sa-gamepad-popup-outer"),s.classList.add("sa-gamepad-popup"),o.tabIndex="0",o.setAttribute("role","button"),o.addEventListener("click",r),o.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||r()}),i.classList.add("sa-gamepad-popup-content"),f.browserHasBrokenGamepadAPI()){const e=document.createElement("div");e.textContent=n("browser-support"),e.className="sa-gamepad-browser-support-warning",i.appendChild(e)}i.appendChild(t);const l=document.createElement("div");l.className="sa-gamepad-extra-options",i.appendChild(l);const c=()=>{b.updateAllContent(),g.checked=!1,w=!1},p=document.createElement("button");p.className="sa-gamepad-reset-button",p.textContent=n("reset"),p.addEventListener("click",()=>{d.resetControls(),c()}),l.appendChild(p);const h=document.createElement("button");h.className="sa-gamepad-reset-button",h.textContent=n("clear"),h.addEventListener("click",()=>{d.clearControls(),c()}),l.appendChild(h);const u=document.createElement("label");u.className="sa-gamepad-store-settings",u.textContent=n("store-in-project");const g=document.createElement("input");g.type="checkbox",g.checked=w,g.addEventListener("change",E),u.prepend(g),l.appendChild(u),b.focus()}),e.tab.redux.state&&"small"===e.tab.redux.state.scratchGui.stageSize.stageSize&&document.body.classList.add("sa-gamepad-small"),document.addEventListener("click",e=>{e.target.closest("[class*='stage-header_stage-button-first']:not(.sa-hide-stage-button)")?document.body.classList.add("sa-gamepad-small"):(e.target.closest("[class*='stage-header_stage-button-last']")||e.target.closest(".sa-hide-stage-button"))&&document.body.classList.remove("sa-gamepad-small")},{capture:!0});const M=document.createElement("img");let L;M.hidden=!0,M.className="sa-gamepad-cursor",M.src=e.self.getResource("/cursor.png"),e.self.addEventListener("disabled",()=>{M.hidden=!0});const D=e=>{M.hidden=!e,clearTimeout(L),e&&(document.body.classList.add("sa-gamepad-hide-cursor"),L=setTimeout(N,8e3))},N=()=>{D(!1)},T=e=>{D(!0),M.classList.toggle("sa-gamepad-cursor-down",e)};let I;if(document.addEventListener("mousemove",()=>{D(!1),document.body.classList.remove("sa-gamepad-hide-cursor")}),window.ResizeObserver){let e=c,t=p;new ResizeObserver(n=>{for(const a of n)e=a.contentRect.width,t=a.contentRect.height}).observe(h),I=()=>[e,t]}else I=()=>{const e=h.getBoundingClientRect();return[e.width,e.height]};let O=0,S=0;const j=t=>{if(e.self.disabled||!s())return;const[n,i]=I();a.postIOData("mouse",C(C({},t),{},{canvasWidth:n,canvasHeight:i,x:(O+c/2)*(n/c),y:i/p*(p/2-S)}))},P=(t,n)=>{!e.self.disabled&&s()&&a.postIOData("keyboard",{key:t,isDown:n})};for(d.virtualCursor.maxX=l._xRight,d.virtualCursor.minX=l._xLeft,d.virtualCursor.maxY=l._yTop,d.virtualCursor.minY=l._yBottom,d.addEventListener("keydown",e=>P(e.detail,!0)),d.addEventListener("keyup",e=>P(e.detail,!1)),d.addEventListener("mousedown",e=>{T(!0),j({isDown:!0,button:e.detail})}),d.addEventListener("mouseup",e=>{T(!1),j({isDown:!1,button:e.detail})}),d.addEventListener("mousemove",e=>{O=e.detail.x,S=e.detail.y,((e,t)=>{D(!0);const n=c/2+e-3,a=p/2-t-3;M.style.transform="translate(".concat(n,"px, ").concat(a,"px)")})(O,S),j({})});;){const t=await e.tab.waitForElement('[class^="stage-header_embed-buttons_"], [class^="stage-header_stage-size-row"], [class^="stage-header_stage-menu-wrapper"] > [class^="button_outlined-button"]',{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","scratch-gui/mode/SET_FULL_SCREEN","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"]});u.dataset.editorMode=e.tab.editorMode,t.className.includes("stage-size-row")?e.tab.appendToSharedSpace({space:"stageHeader",element:u,order:1}):e.tab.appendToSharedSpace({space:"fullscreenStageHeader",element:u,order:0});document.querySelector("[class^='monitor-list_monitor-list-scaler']").appendChild(M)}},"style.css":M.a,"gamepadlib.css":D.a,"active.png":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGAQMAAADaAn0LAAAABlBMVEX///8AAABVwtN+AAAADklEQVQI12MAAQMgBAIAAkwAYUis6mUAAAAASUVORK5CYII=","close.svg":"data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDcuNDggNy40OCI+PHBhdGggZD0iTTMuNzQgNi40OFYxTTEgMy43NGg1LjQ4IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6MnB4Ii8+PC9zdmc+","cursor.png":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGAQMAAADaAn0LAAAABlBMVEUAAAD///+l2Z/dAAAADklEQVQI12MAAQMgBAIAAkwAYUis6mUAAAAASUVORK5CYII=","dot.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCAyLjExNyAyLjExNyI+PGNpcmNsZSBjeD0iMS4wNTgiIGN5PSIxLjA1OCIgcj0iMS4wNTgiIGZpbGw9InJlZCIvPjwvc3ZnPg==","gamepad.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHBhdGggZmlsbD0iIzU3NWU3NSIgZD0iTTM2OCAxNjhoLTk2di02NGgxNzZhMjQuMDI3IDI0LjAyNyAwIDAgMCAyNC0yNFYxNmgtMzJ2NTZIMjY0YTI0LjAyNyAyNC4wMjcgMCAwIDAtMjQgMjR2NzJoLTk2QTEyOC4xNDUgMTI4LjE0NSAwIDAgMCAxNiAyOTZ2MTAwLjk1M0E5MS4xNSA5MS4xNSAwIDAgMCAxMDcuMDQ3IDQ4OGgxLjhhOTAuODA3IDkwLjgwNyAwIDAgMCA2OS45NTMtMzIuNzZMMjMxLjUgMzkyaDQ4LjYyOGw1Mi42NjYgNjguNDY1QTkxLjA0NiA5MS4wNDYgMCAwIDAgNDk2IDQwNC45NTNWMjk2YTEyOC4xNDUgMTI4LjE0NSAwIDAgMC0xMjgtMTI4em05NiAyMzYuOTUzYTU5LjA0NyA1OS4wNDcgMCAwIDEtMTA1Ljg0OSAzNkwyOTUuODc4IDM2MGgtNzkuMzcybC02Mi4yOTQgNzQuNzU0QTU4Ljg5MyA1OC44OTMgMCAwIDEgMTA4Ljg1IDQ1NmgtMS44QTU5LjExMyA1OS4xMTMgMCAwIDEgNDggMzk2Ljk1M1YyOTZhOTYuMTA4IDk2LjEwOCAwIDAgMSA5Ni05NmgyMjRhOTYuMTA4IDk2LjEwOCAwIDAgMSA5NiA5NnoiLz48cGF0aCBmaWxsPSIjNTc1ZTc1IiBkPSJNMzYwIDI0OGgzMnYzMmgtMzJ6bTAgODBoMzJ2MzJoLTMyem0tNDAtNDBoMzJ2MzJoLTMyem04MCAwaDMydjMyaC0zMnptLTI0OC00MGgtMzJ2NDBIODB2MzJoNDB2NDBoMzJ2LTQwaDQwdi0zMmgtNDB2LTQweiIvPjwvc3ZnPg=="}}}]); \ No newline at end of file diff --git a/js/addon-entry-hide-delete-button.113ecb214c4fb22dde69.js b/js/addon-entry-hide-delete-button.113ecb214c4fb22dde69.js new file mode 100644 index 0000000..5b9cbd5 --- /dev/null +++ b/js/addon-entry-hide-delete-button.113ecb214c4fb22dde69.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[30],{1742:function(n,s,t){"use strict";t.r(s),t.d(s,"resources",(function(){return u}));var e=t(1743),o=t.n(e),i=t(1744),c=t.n(i),d=t(1745),a=t.n(d);const u={"sprites.css":o.a,"costumes.css":c.a,"sounds.css":a.a}},1743:function(n,s,t){(n.exports=t(9)(!1)).push([n.i,'div[class*="sprite-selector_sprite-wrapper_"] div[class*="delete-button_delete-button_"] {\n display: none;\n}\n',""])},1744:function(n,s,t){(n.exports=t(9)(!1)).push([n.i,'[data-tabs] > :nth-child(3) div[class*="delete-button_delete-button_"] {\n display: none;\n}\n',""])},1745:function(n,s,t){(n.exports=t(9)(!1)).push([n.i,'[data-tabs] > :nth-child(4) div[class*="delete-button_delete-button_"] {\n display: none;\n}\n',""])}}]); \ No newline at end of file diff --git a/js/addon-entry-hide-flyout.f26da8fba71d9c4e6693.js b/js/addon-entry-hide-flyout.f26da8fba71d9c4e6693.js new file mode 100644 index 0000000..9bc93d0 --- /dev/null +++ b/js/addon-entry-hide-flyout.f26da8fba71d9c4e6693.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[31],{1697:function(e,t,o){(e.exports=o(9)(!1)).push([e.i,'[class*="gui_tabs_"] {\n /* overridden by other addons */\n --sa-category-width: 60px;\n --sa-flyout-width: 250px;\n}\n\n/* The default left-side border does not work properly when a block is being dragged, */\n/* which lets a 1 pixel column of the flyout be visible. */\n/* To fix this we use two elements that are only visible when a block is being dragged. */\n/* The first element is opaque to cover up the contents with the background color. */\n/* The other element is the transparent border color. */\n.sa-flyout-border-1,\n.sa-flyout-border-2 {\n position: absolute;\n /* Above flyout but below add extension button */\n z-index: 40;\n top: 0;\n bottom: 8px;\n left: -1px;\n}\n[dir="rtl"] .sa-flyout-border-1,\n[dir="rtl"] .sa-flyout-border-2 {\n left: auto;\n right: -1px;\n}\n.sa-flyout-border-1 {\n border-left: 1px solid var(--ui-primary, hsla(215, 100%, 95%, 1));\n}\n.sa-flyout-border-2 {\n border-left: 1px solid var(--ui-black-transparent, rgba(0, 0, 0, 0.15));\n}\n\n.blocklyFlyout,\n.blocklyFlyoutScrollbar {\n transition-property: margin;\n}\n\n[dir="ltr"] .blocklyFlyout.sa-flyoutClose,\n[dir="ltr"] .blocklyFlyoutScrollbar.sa-flyoutClose {\n margin-left: calc(0px - var(--sa-flyout-width) - 10px);\n}\n\n[dir="rtl"] .blocklyFlyout.sa-flyoutClose,\n[dir="rtl"] .blocklyFlyoutScrollbar.sa-flyoutClose {\n margin-left: calc(var(--sa-flyout-width) + 10px);\n}\n\n.sa-flyout-placeHolder {\n display: var(--hideFlyout-placeholderDisplay) !important;\n position: absolute;\n height: 100%;\n width: calc(var(--sa-flyout-width) + 1px);\n top: 0;\n}\n\n[dir="ltr"] .sa-flyout-placeHolder {\n left: calc(var(--sa-category-width) + 1px);\n}\n\n[dir="rtl"] .sa-flyout-placeHolder {\n right: calc(var(--sa-category-width) + 1px);\n}\n\n.sa-lock-object {\n display: var(--hideFlyout-lockDisplay) !important;\n transform: translate(calc(var(--sa-flyout-width) - 15px - 32px), 3px);\n width: 32px;\n height: 32px;\n}\n[dir="rtl"] .sa-lock-object {\n transform: translate(15px, 3px);\n}\n\n.sa-lock-button {\n display: flex;\n cursor: pointer;\n width: 100%;\n height: 100%;\n padding: 0;\n justify-content: center;\n align-items: center;\n background-color: var(--ui-primary, white);\n border: 1px solid var(--ui-black-transparent, rgba(0, 0, 0, 0.15));\n border-radius: 4px;\n}\n\n.sa-lock-object.locked .sa-lock-button {\n background-color: #ff4c4c;\n border-color: #cc4c4c;\n}\n\n.sa-lock-button img {\n width: 20px;\n}\n\n[theme="dark"] .sa-lock-button img {\n filter: brightness(200%);\n}\n\n.sa-hide-flyout-not-fullscreen [class*="gui_body-wrapper_" ] [class*="gui_stage-and-target-wrapper"] {\n position: relative;\n /* We need to be above these to hide the flyout while dragging blocks: */\n /* .blocklyFlyout (z-index: 20) */\n /* .blocklyFlyoutScrollbar (z-index: 30) */\n /* and above these so that dragged sprites aren\'t obscured: */\n /* .blocklyToolboxDiv (z-index: 40) */\n /* .gui_extension-button-container_b4rCs (z-index: 42) */\n z-index: 43;\n padding-inline: 0.5rem;\n background-color: var(--ui-primary, hsl(215, 100%, 95%));\n}\n\n[class*="gui_stage-and-target-wrapper_"] {\n padding: 0;\n}\n\n/* https://github.com/ScratchAddons/ScratchAddons/issues/4896 */\n.Popover {\n /* Above stage wrapper and target pane */\n /* See editor-stage-left */\n z-index: 51;\n}\n',""])},1766:function(e,t,o){"use strict";function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function l(e){for(var t=1;t{p.getMainWorkspace().recordCachedAreas(),m()},1e3*t)),g=!1}function I(e,t=y()){u||(e&&e.buttons?g=!0:(h(t),c.classList.add("sa-flyoutClose"),i.classList.add("sa-flyoutClose"),setTimeout(()=>{p.getMainWorkspace().recordCachedAreas(),m()},1e3*t)))}const v=()=>{const t=e.tab.redux.state.scratchGui.mode.isFullScreen;document.documentElement.classList.toggle("sa-hide-flyout-not-fullscreen",!t)};v();let x=!1;function w(){if(x)return;x=!0,e.tab.redux.initialize(),e.tab.redux.addEventListener("statechanged",t=>{switch(t.detail.action.type){case"scratch-gui/navigation/ACTIVATE_TAB":{const o=M();0!==t.detail.action.activeTabIndex||e.self.disabled||"hover"!==o&&"cathover"!==o||(I(null,0),d=!1);break}case"scratch-gui/mode/SET_FULL_SCREEN":v()}}),document.body.addEventListener("mouseup",()=>{g&&(I(),g=!1)}),e.self.enabledLate&&"category"===M()&&p.getMainWorkspace().getToolbox().selectedItem_.setSelected(!1),e.self.addEventListener("disabled",()=>{p.getMainWorkspace().getToolbox().selectedItem_.setSelected(!0),p.svgResize(p.getMainWorkspace())}),e.self.addEventListener("reenabled",()=>{"category"===M()&&(p.getMainWorkspace().getToolbox().selectedItem_.setSelected(!1),I(null,0),d=!1),p.svgResize(p.getMainWorkspace())}),e.settings.addEventListener("change",()=>{e.self.disabled||("category"===M()?u?(d=!0,u=!1,f()):(p.getMainWorkspace().getToolbox().selectedItem_.setSelected(!1),I(null,0),d=!1):(I(),p.getMainWorkspace().getToolbox().selectedItem_.setSelected(!0)),p.svgResize(p.getMainWorkspace()))});const t=p.Toolbox.prototype.setSelectedItem;p.Toolbox.prototype.setSelectedItem=function(o,n=!0){const l=this.selectedItem_;t.call(this,o,n),e.self.disabled||"category"!==M()||(n?o===l?(d=!d,d?A():(I(),o.setSelected(!1))):d||(b=!1,d=!0,A()):o.setSelected(!1))};const o=p.Toolbox.prototype.selectCategoryById;p.Toolbox.prototype.selectCategoryById=function(...t){if(e.self.disabled||"category"!==M()||d)return o.call(this,...t)};const n=p.Flyout.prototype.stepScrollAnimation;p.Flyout.prototype.stepScrollAnimation=function(...e){return b?n.apply(this,e):(this.scrollbar_.set(this.scrollTarget),this.scrollTarget=null,void(b=!0))};const a=p.WorkspaceSvg.getTopLevelWorkspaceMetrics_;p.WorkspaceSvg.getTopLevelWorkspaceMetrics_=function(){var t,o;const n=a.call(this);return e.self.disabled||"hover"===M()||this.RTL||310===(null===(t=this.getToolbox())||void 0===t||null===(o=t.flyout_)||void 0===o?void 0:o.getWidth())?n:l(l({},n),{},{absoluteLeft:n.absoluteLeft-250,viewWidth:n.viewWidth+250})},p.getMainWorkspace()&&(p.getMainWorkspace().getMetrics=p.WorkspaceSvg.getTopLevelWorkspaceMetrics_)}for(;;){c=await e.tab.waitForElement(".blocklyFlyout",{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","scratch-gui/locales/SELECT_LOCALE","fontsLoaded/SET_FONTS_LOADED"],reduxCondition:e=>!e.scratchGui.mode.isPlayerOnly}),i=document.querySelector(".blocklyFlyoutScrollbar");const t=document.querySelector('[class*="gui_blocks-wrapper_"]'),o=document.querySelector(".injectionDiv"),l=document.createElement("div");l.className="sa-flyout-border-1",e.tab.displayNoneWhileDisabled(l),o.appendChild(l);const g=document.createElement("div");g.className="sa-flyout-border-2",e.tab.displayNoneWhileDisabled(g),o.appendChild(g),n&&n.remove(),n=document.createElement("div"),t.appendChild(n),n.className="sa-flyout-placeHolder",n.style.display="none",a&&a.remove(),a=document.createElementNS("http://www.w3.org/2000/svg","foreignObject"),a.setAttribute("class","sa-lock-object"),a.style.display="none",r=document.createElement("button"),r.className="sa-lock-button",s=document.createElement("img"),s.alt="",f(),r.onclick=()=>{u=!u,f()},r.appendChild(s),a.appendChild(r),c.appendChild(a),I(null,0),d=!1;const b=document.querySelector(".blocklyToolboxDiv"),y=document.querySelector("[class^=gui_extension-button-container_]");for(let t of[b,y,c,i])t.onmouseenter=t=>{const o=M();e.self.disabled||"hover"!==o&&"cathover"!==o||A(t)},t.onmouseleave=t=>{const o=M();e.self.disabled||"hover"!==o&&"cathover"!==o||I(t)};n.onmouseenter=t=>{e.self.disabled||"hover"!==M()||A(t)},n.onmouseleave=t=>{e.self.disabled||"hover"!==M()||I(t)},w(),"hover"!==M()&&p.svgResize(p.getMainWorkspace())}},"style.css":o.n(r).a,"lock.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMiAxM2ExIDEgMCAwIDAtMSAxdjNhMSAxIDAgMCAwIDIgMHYtM2ExIDEgMCAwIDAtMS0xem01LTRWN0E1IDUgMCAwIDAgNyA3djJhMyAzIDAgMCAwLTMgM3Y3YTMgMyAwIDAgMCAzIDNoMTBhMyAzIDAgMCAwIDMtM3YtN2EzIDMgMCAwIDAtMy0zek05IDdhMyAzIDAgMCAxIDYgMHYySDl6bTkgMTJhMSAxIDAgMCAxLTEgMUg3YTEgMSAwIDAgMS0xLTF2LTdhMSAxIDAgMCAxIDEtMWgxMGExIDEgMCAwIDEgMSAxeiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==","unlock.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMiAxM2ExLjQ5IDEuNDkgMCAwIDAtMSAyLjYxVjE3YTEgMSAwIDAgMCAyIDB2LTEuMzlBMS40OSAxLjQ5IDAgMCAwIDEyIDEzem01LTRIOVY3YTMgMyAwIDAgMSA1LjEyLTIuMTMgMy4wOCAzLjA4IDAgMCAxIC43OCAxLjM4IDEgMSAwIDEgMCAxLjk0LS41IDUuMDkgNS4wOSAwIDAgMC0xLjMxLTIuMjlBNSA1IDAgMCAwIDcgN3YyYTMgMyAwIDAgMC0zIDN2N2EzIDMgMCAwIDAgMyAzaDEwYTMgMyAwIDAgMCAzLTN2LTdhMyAzIDAgMCAwLTMtM3ptMSAxMGExIDEgMCAwIDEtMSAxSDdhMSAxIDAgMCAxLTEtMXYtN2ExIDEgMCAwIDEgMS0xaDEwYTEgMSAwIDAgMSAxIDF6IiBmaWxsPSIjNTc1ZTc1Ii8+PC9zdmc+"}}}]); \ No newline at end of file diff --git a/js/addon-entry-hide-new-variables.07f2de04487aa6e422b7.js b/js/addon-entry-hide-new-variables.07f2de04487aa6e422b7.js new file mode 100644 index 0000000..affc213 --- /dev/null +++ b/js/addon-entry-hide-new-variables.07f2de04487aa6e422b7.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[32],{1804:function(t,e,s){"use strict";s.r(e),s.d(e,"resources",(function(){return a}));const a={"userscript.js":async function({addon:t,msg:e,console:s}){const a=await t.tab.traps.getBlockly(),c=a.Variables.createVariable;a.Variables.createVariable=function(e,s,a){if(!t.self.disabled){const t=s;s=s=>{if(s){const t=e.isFlyout?e:e.getFlyout();t.setCheckboxState&&t.setCheckboxState(s,!1)}t&&t(s)}}return c.call(this,e,s,a)}}}}}]); \ No newline at end of file diff --git a/js/addon-entry-hide-stage.0b48a8610c71c2b9665e.js b/js/addon-entry-hide-stage.0b48a8610c71c2b9665e.js new file mode 100644 index 0000000..80722ad --- /dev/null +++ b/js/addon-entry-hide-stage.0b48a8610c71c2b9665e.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[33],{1754:function(e,s,a){(e.exports=a(9)(!1)).push([e.i,'.sa-stage-button-middle > [class*="stage-header_stage-button_"] {\n border-radius: 0;\n}\n\n[dir="ltr"] .sa-stage-button-middle > [class*="stage-header_stage-button_"] {\n border-left: none;\n}\n\n[dir="rtl"] .sa-stage-button-middle > [class*="stage-header_stage-button_"] {\n border-right: none;\n}\n\n.sa-stage-hidden [class*="blocks_blocks_"] .injectionDiv,\n.sa-stage-hidden [class*="asset-panel_wrapper_"],\n.sa-stage-hidden [class*="backpack_backpack-header_"] {\n border-radius: 0;\n}\n\n/* [class*="gui_flex-wrapper_"] is for specificity over hide-flyout */\n.sa-stage-hidden [class*="gui_flex-wrapper_"] [class*="gui_stage-and-target-wrapper_"],\n.sa-stage-hidden [class*="stage-wrapper_stage-wrapper_"]:not([class*="stage-wrapper_full-screen_"]),\n.sa-stage-hidden [class*="gui_target-wrapper_"] {\n padding: 0;\n}\n\n.sa-stage-hidden\n [class*="stage-wrapper_stage-wrapper_"]:not([class*="stage-wrapper_full-screen_"])\n [class*="controls_controls-container_"],\n.sa-stage-hidden [class*="gui_target-wrapper_"] {\n display: none;\n}\n.sa-stage-hidden\n [class*="stage-wrapper_stage-wrapper_"]:not([class*="stage-wrapper_full-screen_"])\n [class*="stage-wrapper_stage-canvas-wrapper_"] {\n /* can\'t use display: none because that causes the canvas\'s clientWidth/Height to become 0 which causes crashes */\n visibility: hidden;\n position: absolute;\n z-index: -9999;\n /* move the stage to avoid a horizontal scroll bar */\n right: 0;\n /* and move it up so that the mouse can\'t hover over the stage while its hidden */\n bottom: 100%;\n}\n[dir="rtl"]\n .sa-stage-hidden\n [class*="stage-wrapper_stage-wrapper_"]:not([class*="stage-wrapper_full-screen_"])\n [class*="stage-wrapper_stage-canvas-wrapper_"] {\n right: initial;\n left: 0;\n}\n\n.sa-stage-hidden [class*="stage-header_stage-size-row"] {\n position: absolute;\n top: 0;\n right: 0.5rem;\n height: 2.75rem;\n align-items: center;\n}\n\n[dir="rtl"] .sa-stage-hidden [class*="stage-header_stage-size-row"] {\n right: auto;\n left: 0.5rem;\n}\n\n.sa-stage-hidden\n /* specificity --\x3e */ [class*="stage-header_stage-size-row_"] /* <-- specificity */\n [class*="stage-header_stage-button_"]:not(.sa-hide-stage-button)\n [class*="stage-header_stage-button-icon_"] {\n /* makes small and large stage buttons appear unselected */\n filter: var(--editorDarkMode-accent-desaturateFilter, saturate(0));\n}\n/* from stage-header.css */\n[theme="dark"]\n .sa-stage-hidden\n /* specificity --\x3e */ [class*="stage-header_stage-size-row_"] /* <-- specificity */\n [class*="stage-header_stage-button_"]:not(.sa-hide-stage-button)\n [class*="stage-header_stage-button-icon_"] {\n filter: brightness(0) invert(1);\n}\n\n.sa-stage-hidden-outer .scratchEyedropper {\n display: none;\n}\n',""])},1776:function(e,s,a){"use strict";a.r(s),a.d(s,"resources",(function(){return n}));var t=a(1754);const n={"userscript.js":async function({addon:e,console:s,msg:a}){let t,n,r,i,d=!1;function c(){d=!0,t&&(document.body.classList.add("sa-stage-hidden-outer"),t.classList.add("sa-stage-hidden"),i.classList.remove(e.tab.scratchClass("stage-header_stage-button-toggled-off")),window.dispatchEvent(new Event("resize")))}function o(s){d=!1,t&&(document.body.classList.remove("sa-stage-hidden-outer"),t.classList.remove("sa-stage-hidden"),i.classList.add(e.tab.scratchClass("stage-header_stage-button-toggled-off")),window.dispatchEvent(new Event("resize")))}for(e.self.addEventListener("disabled",()=>o());;){const s=await e.tab.waitForElement("[class*='stage-header_stage-size-toggle-group_']",{markAsSeen:!0,reduxCondition:e=>!e.scratchGui.mode.isPlayerOnly});t=document.querySelector("[class*='gui_body-wrapper_']"),n=s.firstChild,n.classList.add("sa-stage-button-middle"),r=s.lastChild,i=Object.assign(document.createElement("div"),{role:"button",className:e.tab.scratchClass("button_outlined-button","stage-header_stage-button","stage-header_stage-button-first",{others:"sa-hide-stage-button"})}),e.tab.displayNoneWhileDisabled(i),s.insertBefore(i,n),i.appendChild(Object.assign(document.createElement("img"),{className:e.tab.scratchClass("stage-header_stage-button-icon"),src:e.self.getResource("/icon.svg"),alt:a("hide-stage"),draggable:!1})),d?c():o(),i.addEventListener("click",c),n.addEventListener("click",o),r.addEventListener("click",o)}},"style.css":a.n(t).a,"icon.svg":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjRkY0QzRDIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTQgNGExIDEgMCAwIDAtMSAxdjEwYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVY1LjVoLTRWNFoiLz48cGF0aCBkPSJNMTMgNGgzYTEgMSAwIDAgMSAxIDF2LjVoLTR6IiBmaWxsPSIjRkY0QzRDIi8+PC9nPjwvc3ZnPgo="}}}]); \ No newline at end of file diff --git a/js/addon-entry-initialise-sprite-position.0bc43a1c34a17cf1a052.js b/js/addon-entry-initialise-sprite-position.0bc43a1c34a17cf1a052.js new file mode 100644 index 0000000..be2b29f --- /dev/null +++ b/js/addon-entry-initialise-sprite-position.0bc43a1c34a17cf1a052.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[34],{1800:function(t,e,s){"use strict";s.r(e),s.d(e,"resources",(function(){return n}));const n={"userscript.js":async function({addon:t}){const e=t.tab.traps.vm,s=e.constructor.prototype.addSprite;e.constructor.prototype.addSprite=function(e){var n,r;let c,i=!0;"object"==typeof e?[c,i]=[e,!1]:c=JSON.parse(e);const o="cd21514d0531fdffb22204e0ec5ed84a.svg"===(null===(n=c.costumes)||void 0===n||null===(r=n[0])||void 0===r?void 0:r.baseLayerMD5);return t.self.disabled||!o&&c.tags&&t.settings.get("library")||(c.scratchX&&(c.scratchX=t.settings.get("x"),c.scratchY=t.settings.get("y")),c.x&&(c.x=t.settings.get("x"),c.y=t.settings.get("y"))),s.call(this,i?JSON.stringify(c):c)};const n=()=>{const s=e.runtime.getTargetForStage().constructor.prototype,n=s.duplicate;s.duplicate=function(){return n.call(this).then(e=>{if(!t.self.disabled)switch(t.settings.get("duplicate")){case"custom":e.setXY(t.settings.get("x"),t.settings.get("y"));break;case"keep":e.setXY(this.x,this.y)}return e})}};e.runtime.getTargetForStage()?n():e.runtime.once("PROJECT_LOADED",n)}}}}]); \ No newline at end of file diff --git a/js/addon-entry-load-extensions.b89d5207085d24419c9a.js b/js/addon-entry-load-extensions.b89d5207085d24419c9a.js new file mode 100644 index 0000000..6c6414b --- /dev/null +++ b/js/addon-entry-load-extensions.b89d5207085d24419c9a.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[35],{1798:function(n,e,s){"use strict";s.r(e),s.d(e,"resources",(function(){return t}));const t={"userscript.js":async function({addon:n,console:e}){const s=n.tab.traps.vm,t=()=>{if(n.self.disabled)return;const e=["music","pen","text2speech","translate"];for(let t of e)n.settings.get(t)&&!s.extensionManager.isExtensionLoaded(t)&&s.extensionManager.loadExtensionIdSync(t)};s.editingTarget?t():s.runtime.once("PROJECT_LOADED",t)}}}}]); \ No newline at end of file diff --git a/js/addon-entry-mediarecorder.1b976a5c16eec6905e97.js b/js/addon-entry-mediarecorder.1b976a5c16eec6905e97.js new file mode 100644 index 0000000..afc7855 --- /dev/null +++ b/js/addon-entry-mediarecorder.1b976a5c16eec6905e97.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[36],{1638:function(e,t,n){"use strict";t.a=(e,t)=>{const n=document.createElement("a");if(document.body.appendChild(n),navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(t,e);else if("download"in HTMLAnchorElement.prototype){const a=window.URL.createObjectURL(t);n.href=a,n.download=e,n.type=t.type,n.click(),window.setTimeout(()=>{document.body.removeChild(n),window.URL.revokeObjectURL(a)},1e3)}else{let e=window.open("","_blank");const n=new FileReader;n.onloadend=function(){e.location.href=n.result,e=null},n.readAsDataURL(t)}}},1698:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,'.mediaRecorderPopup {\n box-sizing: border-box;\n width: 700px;\n max-height: min(800px, 80vh);\n max-width: 85%;\n margin-top: 12vh;\n overflow-y: auto;\n margin-left: auto;\n margin-right: auto;\n}\n\n.mediaRecorderPopupContent {\n padding: 1.5rem 2.25rem;\n}\n\n.mediaRecorderPopup p {\n font-size: 1rem;\n margin: 0.5rem auto;\n}\n\n.mediaRecorderPopup p :last-child {\n margin-left: 1rem;\n}\n\n.mediaRecorderPopup[dir="rtl"] p :last-child {\n margin-left: 0;\n margin-right: 1rem;\n}\n\np.mediaRecorderPopupOption {\n display: flex;\n align-items: center;\n}\n\n.mediaRecorderPopupOption input[type="checkbox"] {\n height: 1.5rem;\n}\n\n#recordOptionSecondsInput,\n#recordOptionDelayInput {\n width: 6rem;\n}\n\n.mediaRecorderPopupButtons {\n margin-top: 1.5rem;\n}\n\n.mediaRecorderPopupButtons button {\n margin-left: 0.5rem;\n}\n\n/* TW: Fixes cancel button in dark mode */\n.mediaRecorderPopupButtons button:nth-of-type(1) {\n color: black;\n}\n',""])},1783:function(e,t,n){"use strict";n.r(t),n.d(t,"resources",(function(){return r}));var a=n(1638),o=n(1698);const r={"userscript.js":async({addon:e,console:t,msg:n})=>{let o,r,c,i=!1,d=!1,l=null,s=null,p=null,m=[];for(;;){const u=await e.tab.waitForElement('div[class*="menu-bar_file-group"] > div:last-child:not(.sa-record)',{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"]}),b=()=>{const{backdrop:t,container:a,content:o,closeButton:r,remove:c}=e.tab.createModal(n("option-title"),{isOpen:!0,useEditorClasses:!0});a.classList.add("mediaRecorderPopup"),o.classList.add("mediaRecorderPopupContent"),o.appendChild(Object.assign(document.createElement("p"),{textContent:n("record-description"),className:"recordOptionDescription"}));const i=document.createElement("p"),d=Object.assign(document.createElement("input"),{type:"number",min:1,max:300,defaultValue:30,id:"recordOptionSecondsInput",className:e.tab.scratchClass("prompt_variable-name-text-input")}),l=Object.assign(document.createElement("label"),{htmlFor:"recordOptionSecondsInput",textContent:n("record-duration")});i.appendChild(l),i.appendChild(d),o.appendChild(i);const s=document.createElement("p"),p=Object.assign(document.createElement("input"),{type:"number",min:0,max:300,defaultValue:0,id:"recordOptionDelayInput",className:e.tab.scratchClass("prompt_variable-name-text-input")}),m=Object.assign(document.createElement("label"),{htmlFor:"recordOptionDelayInput",textContent:n("start-delay")});s.appendChild(m),s.appendChild(p),o.appendChild(s);const u=Object.assign(document.createElement("p"),{className:"mediaRecorderPopupOption"}),b=Object.assign(document.createElement("input"),{type:"checkbox",defaultChecked:!0,id:"recordOptionAudioInput"}),h=Object.assign(document.createElement("label"),{htmlFor:"recordOptionAudioInput",textContent:n("record-audio"),title:n("record-audio-description")});u.appendChild(b),u.appendChild(h),o.appendChild(u);const g=Object.assign(document.createElement("p"),{className:"mediaRecorderPopupOption"}),O=Object.assign(document.createElement("input"),{type:"checkbox",defaultChecked:!1,id:"recordOptionMicInput"}),C=Object.assign(document.createElement("label"),{htmlFor:"recordOptionMicInput",textContent:n("record-mic")});g.appendChild(O),g.appendChild(C),o.appendChild(g);const E=Object.assign(document.createElement("p"),{className:"mediaRecorderPopupOption"}),f=Object.assign(document.createElement("input"),{type:"checkbox",defaultChecked:!0,id:"recordOptionFlagInput"}),w=Object.assign(document.createElement("label"),{htmlFor:"recordOptionFlagInput",textContent:n("record-after-flag")});E.appendChild(f),E.appendChild(w),o.appendChild(E);const v=Object.assign(document.createElement("p"),{className:"mediaRecorderPopupOption"}),x=Object.assign(document.createElement("input"),{type:"checkbox",defaultChecked:!0,id:"recordOptionStopInput"}),k=Object.assign(document.createElement("label"),{htmlFor:"recordOptionStopInput",textContent:n("record-until-stop")});f.addEventListener("change",()=>{(x.disabled=!f.checked)&&(k.title=n("record-until-stop-disabled",{afterFlagOption:n("record-after-flag")}))}),v.appendChild(x),v.appendChild(k),o.appendChild(v);let R=null;const y=new Promise(e=>{R=e});let P=null;t.addEventListener("click",()=>P(null)),r.addEventListener("click",()=>P(null)),P=e=>{R(e),c()};const S=Object.assign(document.createElement("div"),{className:e.tab.scratchClass("prompt_button-row",{others:"mediaRecorderPopupButtons"})}),j=Object.assign(document.createElement("button"),{textContent:n("cancel")});j.addEventListener("click",()=>P(null),{once:!0}),S.appendChild(j);const T=Object.assign(document.createElement("button"),{textContent:n("start"),className:e.tab.scratchClass("prompt_ok-button")});return T.addEventListener("click",()=>P({secs:Number(d.value),delay:Number(p.value),audioEnabled:b.checked,micEnabled:O.checked,waitUntilFlag:f.checked,useStopSign:!x.disabled&&x.checked}),{once:!0}),S.appendChild(T),o.appendChild(S),y},h=()=>{i=!1,o.textContent=n("record"),o.title="",r=null,m=[],clearTimeout(c),c=0,p&&(e.tab.traps.vm.runtime.off("PROJECT_STOP_ALL",p),p=null)},g=t=>{if(d)return e.tab.traps.vm.runtime.off("PROJECT_START",l),d=!1,l=null,s.abort(),s=null,void h();i&&r&&"inactive"!==r.state&&(t?h():(r.onstop=()=>{const e=new Blob(m,{type:"video/webm"});Object(a.a)("video.webm",e),h()},r.stop()))},O=async a=>{const u=Math.min(300,Math.max(1,a.secs));m=[],i=!0;const b=e.tab.traps.vm;let h;if(a.micEnabled)try{h=await navigator.mediaDevices.getUserMedia({audio:!0})}catch(e){if("NotAllowedError"!==e.name&&"NotFoundError"!==e.name)throw e;a.micEnabled=!1}if(a.waitUntilFlag){d=!0,Object.assign(o,{textContent:n("click-flag"),title:n("click-flag-description")}),s=new AbortController;try{await Promise.race([new Promise(e=>{l=()=>e(),b.runtime.once("PROJECT_START",l)}),new Promise((e,t)=>{s.signal.addEventListener("abort",()=>t("aborted"),{once:!0})})])}catch(e){if("aborted"===e.message)return;throw e}}d=!1,l=s=null;const O=new MediaStream,C=b.runtime.renderer.canvas.captureStream();O.addTrack(C.getVideoTracks()[0]);const E=new AudioContext,f=E.createMediaStreamDestination();if(a.audioEnabled){const e=b.runtime.audioEngine.audioContext.createMediaStreamDestination();b.runtime.audioEngine.inputNode.connect(e);E.createMediaStreamSource(e.stream).connect(f)}if(a.micEnabled){E.createMediaStreamSource(h).connect(f)}(a.audioEnabled||a.micEnabled)&&O.addTrack(f.stream.getAudioTracks()[0]),r=new MediaRecorder(O,{mimeType:"video/webm"}),r.ondataavailable=e=>{m.push(e.data)},r.onerror=e=>{t.warn("Recorder error:",e.error),g(!0)},c=setTimeout(()=>g(!1),1e3*u),a.useStopSign&&(p=()=>g(),b.runtime.once("PROJECT_STOP_ALL",p));const w=a.delay||0,v=Math.floor(w);for(let e=0;esetTimeout(e,975));setTimeout(()=>{o.textContent=n("stop"),r.start(1e3)},1e3*(w-v))};o||(o=Object.assign(document.createElement("div"),{className:"sa-record "+u.className,textContent:n("record")}),o.addEventListener("click",async()=>{if(i)g();else{const e=await b();if(!e)return void t.log("Canceled");O(e)}})),u.parentElement.appendChild(o)}},"style.css":n.n(o).a}}}]); \ No newline at end of file diff --git a/js/addon-entry-mouse-pos.c62fa70d372dc9f3ef8d.js b/js/addon-entry-mouse-pos.c62fa70d372dc9f3ef8d.js new file mode 100644 index 0000000..6637837 --- /dev/null +++ b/js/addon-entry-mouse-pos.c62fa70d372dc9f3ef8d.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[37],{1710:function(e,t,s){(e.exports=s(9)(!1)).push([e.i,'.pos-container-container {\n display: flex;\n align-items: center;\n padding: 0.25rem;\n user-select: none;\n width: 45px;\n justify-content: center;\n}\n\n.pos-container {\n font-size: 0.6rem;\n font-weight: bold;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n color: #5cb1d6;\n white-space: nowrap;\n}\n\n/* Use pseudo elements to avoid firing mutation observers by just moving the cursor */\n.pos-container > span::after {\n content: attr(data-content);\n}\n\n.sa-mouse-pos-small .pos-container-container {\n display: none !important;\n}\n',""])},1784:function(e,t,s){"use strict";s.r(t),s.d(t,"resources",(function(){return a}));var n=s(1710);const a={"userscript.js":async function({addon:e,console:t}){var s=document.createElement("div");e.tab.displayNoneWhileDisabled(s,{display:"flex"});var n=document.createElement("div"),a=document.createElement("span");s.className="pos-container-container",n.className="pos-container",s.appendChild(n),n.appendChild(a);const o=e.tab.traps.vm;o.runtime.ioDevices.mouse.__scratchX=o.runtime.ioDevices.mouse._scratchX,o.runtime.ioDevices.mouse.__scratchY=o.runtime.ioDevices.mouse._scratchY;var c=o.runtime.ioDevices.mouse.__scratchX?o.runtime.ioDevices.mouse.__scratchX:0,i=o.runtime.ioDevices.mouse.__scratchY?o.runtime.ioDevices.mouse.__scratchY:0;const r=()=>a.setAttribute("data-content","".concat(Math.round(c),", ").concat(Math.round(i)));for(Object.defineProperty(o.runtime.ioDevices.mouse,"_scratchX",{get:function(){return this.__scratchX},set:function(e){c=e,r(),this.__scratchX=e}}),Object.defineProperty(o.runtime.ioDevices.mouse,"_scratchY",{get:function(){return this.__scratchY},set:function(e){i=e,r(),this.__scratchY=e}}),e.tab.redux.state&&"small"===e.tab.redux.state.scratchGui.stageSize.stageSize&&document.body.classList.add("sa-mouse-pos-small"),document.addEventListener("click",e=>{e.target.closest("[class*='stage-header_stage-button-first']")?document.body.classList.add("sa-mouse-pos-small"):e.target.closest("[class*='stage-header_stage-button-last']")&&document.body.classList.remove("sa-mouse-pos-small")},{capture:!0});;)await e.tab.waitForElement('[class*="controls_controls-container"]',{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"]}),"editor"===e.tab.editorMode&&e.tab.appendToSharedSpace({space:"afterStopButton",element:s,order:1})},"style.css":s.n(n).a}}}]); \ No newline at end of file diff --git a/js/addon-entry-no-script-bumping.d589d463953c5edbb39f.js b/js/addon-entry-no-script-bumping.d589d463953c5edbb39f.js new file mode 100644 index 0000000..75407a1 --- /dev/null +++ b/js/addon-entry-no-script-bumping.d589d463953c5edbb39f.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[38],{1806:function(o,s,t){"use strict";t.r(s),t.d(s,"resources",(function(){return n}));const n={"userscript.js":async function({addon:o,console:s}){const t=await o.tab.traps.getBlockly(),n=t.BlockSvg.prototype.bumpNeighbours_;t.BlockSvg.prototype.bumpNeighbours_=function(){o.self.disabled&&n.call(this)}}}}}]); \ No newline at end of file diff --git a/js/addon-entry-number-pad.c729587f87857d746b02.js b/js/addon-entry-number-pad.c729587f87857d746b02.js new file mode 100644 index 0000000..9197b34 --- /dev/null +++ b/js/addon-entry-number-pad.c729587f87857d746b02.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[39],{1815:function(o,t,s){"use strict";s.r(t),s.d(t,"resources",(function(){return n}));const n={"userscript.js":async function({addon:o,msg:t,console:s}){const n=await o.tab.traps.getBlockly(),e=n.FieldNumber.prototype.showEditor_;n.FieldNumber.prototype.showEditor_=function(...t){return o.self.disabled||(this.useTouchInteraction_=!0),e.apply(this,t)}}}}}]); \ No newline at end of file diff --git a/js/addon-entry-paint-by-default.db7c65668eff3d46bc80.js b/js/addon-entry-paint-by-default.db7c65668eff3d46bc80.js new file mode 100644 index 0000000..12c00cc --- /dev/null +++ b/js/addon-entry-paint-by-default.db7c65668eff3d46bc80.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[40],{1802:function(e,t,o){"use strict";o.r(t),o.d(t,"resources",(function(){return r}));const r={"userscript.js":async function({addon:e,console:t}){const o=Object.assign(Object.create(null),{upload:{index:0,tooltip:"gui.spriteSelector.addSpriteFromFile"},surprise:{index:1,tooltip:"gui.spriteSelector.addSpriteFromSurprise"},paint:{index:2,tooltip:"gui.spriteSelector.addSpriteFromPaint"},library:{index:3,tooltip:"gui.spriteSelector.addSpriteFromLibrary"}}),r=Object.assign(Object.create(null),{upload:{index:0,tooltip:"gui.stageSelector.addBackdropFromFile"},surprise:{index:1,tooltip:"gui.stageSelector.addBackdropFromSurprise"},paint:{index:2,tooltip:"gui.stageSelector.addBackdropFromPaint"},library:{index:3,tooltip:"gui.spriteSelector.addBackdropFromLibrary"}}),i=Object.assign(Object.create(null),{upload:{index:0,tooltip:"gui.costumeTab.addFileCostume"},surprise:{index:1,tooltip:"gui.costumeTab.addSurpriseCostume"},paint:{index:2,tooltip:"gui.costumeTab.addBlankCostume"},library:{index:3,tooltip:"gui.costumeTab.addCostumeFromLibrary"}}),s=Object.assign(Object.create(null),{upload:{index:0,tooltip:"gui.soundTab.fileUploadSound"},surprise:{index:1,tooltip:"gui.soundTab.surpriseSound"},record:{index:2,tooltip:"gui.soundTab.recordSound"},library:{index:3,tooltip:"gui.soundTab.addSoundFromLibrary"}}),a=t=>e.self.disabled?"library":e.settings.get(t),n=t=>t.closest("[class*=asset-panel_wrapper_]")?2===e.tab.redux.state.scratchGui.editorTab.activeTabIndex?s[a("sound")]||s.library:i[a("costume")]||i.library:t.closest('[class*="target-pane_stage-selector-wrapper"]')?r[a("backdrop")]||r.library:o[a("sprite")]||o.library;document.body.addEventListener("click",t=>{if(e.self.disabled)return;const o=t.target.closest('[class*="action-menu_main-button_"]');if(!o)return;t.stopPropagation();const r=o.parentElement.querySelector('[class*="action-menu_more-buttons_"]').children,{index:i}=n(o);r[r.length-(4-i)].querySelector("button").click()},{bubble:!0}),document.body.addEventListener("mouseover",t=>{const o=t.target.closest('[class*="action-menu_main-button_"]');if(!o)return;const r=o.parentElement.querySelector(".__react_component_tooltip"),{tooltip:i}=n(o),s=e.tab.redux.state.locales.messages[i];s&&r.textContent!==s&&(r.textContent=s,setTimeout(()=>{r.textContent=s,o.dispatchEvent(new Event("mouseenter"))}))},{bubble:!0})}}}}]); \ No newline at end of file diff --git a/js/addon-entry-paint-snap.f3d837ead823ae3ffce3.js b/js/addon-entry-paint-snap.f3d837ead823ae3ffce3.js new file mode 100644 index 0000000..dbd951a --- /dev/null +++ b/js/addon-entry-paint-snap.f3d837ead823ae3ffce3.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[41],{1713:function(t,e,o){(t.exports=o(9)(!1)).push([t.i,'.sa-paint-snap-button {\n position: relative;\n}\n.sa-paint-snap-button:focus-within {\n background-color: hsla(0, 100%, 65%, 0.2);\n}\n.sa-paint-snap-button[data-enabled="true"] .sa-paint-snap-image {\n filter: brightness(0) invert(1);\n}\n.sa-paint-snap-button[data-enabled="true"] {\n background-color: #ff4c4c;\n}\n\n.sa-paint-snap-group {\n position: relative;\n flex-direction: row;\n}\n\n.sa-paint-snap-settings-wrapper {\n position: absolute;\n justify-items: center;\n left: 50%;\n width: 1.95rem;\n height: 1.95rem;\n display: grid;\n}\n\n.sa-paint-snap-settings {\n position: absolute;\n bottom: 100%;\n /* based on the styles for the color dropdown */\n padding: 4px;\n border-radius: 4px;\n border: 1px solid var(--paint-ui-pane-border, #ddd);\n box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, 0.3);\n transition-property: bottom, opacity;\n transition-duration: 500ms;\n transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1);\n opacity: 0;\n pointer-events: none;\n background: var(--ui-primary, white);\n min-height: 100%;\n min-width: 100%;\n display: flex;\n flex-direction: column;\n gap: 0.25em;\n}\n.sa-paint-snap-settings[data-visible="true"] {\n bottom: calc(100% + 22px);\n pointer-events: auto;\n opacity: 1;\n}\n\n.sa-paint-snap-settings-line {\n display: flex;\n justify-content: flex-end;\n align-items: baseline;\n}\n\n.sa-paint-snap-settings-input {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n text-align: center;\n border: 0;\n background: transparent;\n -moz-appearance: textfield;\n border: 0;\n outline: 0;\n}\n\n.sa-paint-snap-settings-input::-webkit-outer-spin-button,\n.sa-paint-snap-settings-input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n.sa-paint-snap-settings-tip {\n position: absolute;\n bottom: 0;\n transform: translateY(100%);\n right: calc(50% - 7px);\n}\n.sa-paint-snap-settings-polygon {\n fill: var(--ui-primary, white);\n stroke: var(--paint-ui-pane-border, #ddd);\n}\n\n.sa-paint-snap-settings-separator {\n flex-grow: 1;\n border-bottom: 1px solid currentColor;\n margin: 4px;\n opacity: 0.25;\n}\n\n.sa-paint-snap-settings-section {\n display: flex;\n flex-direction: column;\n gap: 0.25em;\n align-items: flex-end;\n width: 100%;\n}\n\n.sa-paint-snap-settings-section-title {\n font-size: 1.2em;\n font-weight: 500;\n align-self: flex-start;\n margin-left: 4px;\n}\n\n.sa-paint-snap-settings-label {\n white-space: nowrap;\n}\n\n.sa-paint-snap-image[data-shrink="true"] {\n height: 1em;\n width: 1em;\n}\n',""])},1759:function(t,e,o){"use strict";o.r(e),o.d(e,"resources",(function(){return E}));let n=!0;const i={pageEdges:!0,pageCenter:!0,pageAxes:!0,pageCorners:!1,objectEdges:!0,objectCenters:!0,objectMidlines:!0,objectCorners:!1},a={boxCenter:!0,boxCorners:!1,boxEdgeMids:!1};let s,r=10;function l(t,e){i[t]=!!e}function c(t,e){a[t]=!!e}function d(t){r=t}function p(){n=!0}function u(){n=!1}function m(t){t?p():u()}function g(t){s=t}function b(t,e){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),o.push.apply(o,n)}return o}function h(t){for(var e=1;ee?n:t.view.bounds.unite(n).intersect(i)},guide:{hoverBounds:function(o,n){let i=o.internalBounds;n&&(i=i.expand(n));const a=new t.Path.Rectangle(i);return a.matrix=o.matrix,function(e){e.strokeWidth=1/t.view.zoom,e.opacity=1,e.blendMode="normal",e.guide=!0}(a),a.parent=e("isGuideLayer"),a.strokeColor="#009dec",a.fillColor=null,a.data.isHelperItem=!0,a.data.origItem=o,a.bringToFront(),a}}}}const I=t=>Object.fromEntries(Object.entries(t).map(([t])=>[t,t])),x={BRUSH:null,ERASER:null,LINE:null,FILL:null,SELECT:null,RESHAPE:null,OVAL:null,RECT:null,ROUNDED_RECT:null,TEXT:null},j={BIT_BRUSH:null,BIT_LINE:null,BIT_OVAL:null,BIT_RECT:null,BIT_TEXT:null,BIT_FILL:null,BIT_ERASER:null,BIT_SELECT:null},N=(I(x),I(j)),L=I(f(f({},x),j)),S=(I({FILL:null,SELECT:null,RESHAPE:null,OVAL:null,RECT:null,LINE:null,BIT_OVAL:null,BIT_RECT:null,BIT_SELECT:null,BIT_FILL:null}),(t,e)=>{const o=M(t),{math:{checkPointsClose:l,snapDeltaToAngle:c},view:{getActionBounds:d,CENTER:p},layer:{getDragCrosshairLayer:u,CROSSHAIR_FULL_OPACITY:m,getLayer:g},guide:{hoverBounds:b}}=o,y=(t=>t.boundingBoxTool._modeMap.MOVE)(e);let v=new t.Path.Line({from:[0,0],to:[0,0],strokeColor:new t.Color(s),strokeWidth:1/t.view.zoom,visible:!1,data:{isHelperItem:!0,noSelect:!0,noHover:!0,saPaintSnapGuide:!0},selected:!1});const f={shadow:null,circle:null},w=new t.Group({children:[],visible:!1});let I;v.remove(),w.remove();let x;function j(e){var n,y;const M=e.point,j=d(this.mode in N);M.x=Math.max(j.left,Math.min(M.x,j.right)),M.y=Math.max(j.top,Math.min(M.y,j.bottom));const S=M.subtract(e.downPoint),C=r/t.view.zoom;let P;if(0===this.selectedItems.length)return;const z=this.selectionCenter._owner,T=this.selectionCenter.add(S),D=null!==(n=null===(y=g("isGuideLayer").children.find(t=>t.data.isSelectionBound))||void 0===y?void 0:y.selectionAnchor)&&void 0!==n?n:{},O=()=>{D.strokeColor=new t.Color(.30196078431372547,.592156862745098,1),D.fillColor=null};if(x=()=>{var t;v.remove(),w.remove(),w.visible=!1,v.visible=!1,null===(t=I)||void 0===t||t.remove(),I&&(I.visible=!1),O()},x(),!e.modifiers.shift&&this.mode!==L.RESHAPE){const e=g("isPaintingLayer"),n=function(t,e,o,n){const{view:{CENTER:s,ART_BOARD_BOUNDS:r}}=o;return{from:h(h(h({},a.boxCenter?{center:e.center}:{}),a.boxCorners?{topLeft:e.topLeft,topRight:e.topRight,bottomLeft:e.bottomLeft,bottomRight:e.bottomRight}:{}),a.boxEdgeMids?{left:new t.Point(e.left,e.center.y),right:new t.Point(e.right,e.center.y),top:new t.Point(e.center.x,e.top),bottom:new t.Point(e.center.x,e.bottom)}:{}),to:h(h(h(h(h(h(h(h({},i.pageCenter?{bounds_c:{type:"point",value:s}}:{}),i.pageAxes?{bounds_cx:{type:"xcoord",value:s.x},bounds_cy:{type:"ycoord",value:s.y}}:{}),i.pageEdges?{bounds_l:{type:"xcoord",value:r.left,clamp:{min:r.top,max:r.bottom}},bounds_r:{type:"xcoord",value:r.right,clamp:{min:r.top,max:r.bottom}},bounds_t:{type:"ycoord",value:r.top,clamp:{min:r.left,max:r.right}},bounds_b:{type:"ycoord",value:r.bottom,clamp:{min:r.left,max:r.right}},bounds_lc:{type:"point",value:new t.Point(r.left,s.y)},bounds_rc:{type:"point",value:new t.Point(r.right,s.y)},bounds_tc:{type:"point",value:new t.Point(s.x,r.top)},bounds_bc:{type:"point",value:new t.Point(s.x,r.bottom)}}:{}),i.pageCorners?{bounds_tl:{type:"point",value:r.topLeft},bounds_tr:{type:"point",value:r.topRight},bounds_bl:{type:"point",value:r.bottomLeft},bounds_br:{type:"point",value:r.bottomRight}}:{}),i.objectEdges?Object.fromEntries(n.filter(t=>!(t.selected||t.data.isHelperItem)).map(t=>[["item_".concat(t.id,"_r"),{type:"itemSideVert",value:t.bounds.right,clamp:{min:t.bounds.top,max:t.bounds.bottom}}],["item_".concat(t.id,"_l"),{type:"itemSideVert",value:t.bounds.left,clamp:{min:t.bounds.top,max:t.bounds.bottom}}],["item_".concat(t.id,"_t"),{type:"itemSideHoriz",value:t.bounds.top,clamp:{min:t.bounds.left,max:t.bounds.right}}],["item_".concat(t.id,"_b"),{type:"itemSideHoriz",value:t.bounds.bottom,clamp:{min:t.bounds.left,max:t.bounds.right}}]]).flat(1)):{}),i.objectCenters?Object.fromEntries(n.filter(t=>!t.selected).map(t=>[["item_".concat(t.id,"_c"),{type:"point",value:t.bounds.center}]]).flat(1)):{}),i.objectMidlines?Object.fromEntries(n.filter(t=>!t.selected).map(t=>[["item_".concat(t.id,"_cx"),{type:"xcoord",value:t.bounds.center.x}],["item_".concat(t.id,"_cy"),{type:"ycoord",value:t.bounds.center.y}]]).flat(1)):{}),i.objectCorners?Object.fromEntries(n.filter(t=>!(t.selected||t.data.isHelperItem)).map(t=>[["item_".concat(t.id,"_tl"),{type:"point",value:t.bounds.topLeft}],["item_".concat(t.id,"_tr"),{type:"point",value:t.bounds.topRight}],["item_".concat(t.id,"_bl"),{type:"point",value:t.bounds.bottomLeft}],["item_".concat(t.id,"_br"),{type:"point",value:t.bounds.bottomRight}]]).flat(1)):{})}}(t,z,o,e.children),r=n.from,c=n.to,d=e=>(e.clamp||(e.clamp={min:-1/0,max:1/0}),"point"===e.type?()=>e.value:"xcoord"===e.type||"itemSideVert"===e.type?o=>new t.Point(e.value,Math.min(Math.max(o.y,e.clamp.min),e.clamp.max)):"ycoord"===e.type||"itemSideHoriz"===e.type?o=>new t.Point(Math.min(Math.max(o.x,e.clamp.min),e.clamp.max),e.value):"generator"===e.type?e.value:void 0),p=t=>Object.fromEntries(Object.entries(c).map(([e,o])=>[e,{type:o.type,point:d(o)(t)}])),u=Object.entries(r).map(([t,e])=>({pointPos:t,origPoint:e,point:e.add(S),snapPoints:p(e.add(S))})),m=["point","itemSideVert","itemSideHoriz","xcoord","ycoord","generated",void 0],y=(t,e)=>{const o=m.indexOf(t.snapPointType)-m.indexOf(e.snapPointType);return o||t.distance-e.distance},M=u.map(({point:t,origPoint:e,snapPoints:o})=>{var n,i;const a=Object.entries(o).filter(([e,o])=>l(t,o.point,C)).map(([e,o])=>{return{pos:e,distance:(n=o.point,i=t,n.getDistance(i)),snapPointType:o.type};var n,i}).sort(y)[0]||{pos:"",distance:1/0};return{point:e,snapPoint:null===(n=o[a.pos])||void 0===n?void 0:n.point,snapPointType:null===(i=o[a.pos])||void 0===i?void 0:i.type,distance:a.distance,pos:a.pos}}).sort(y).sort(y)[0];if(x(),null!=M&&M.snapPoint){var E;f.shadow=new t.Path.Circle({center:new t.Point(0,0),radius:5.5/t.view.zoom,fillColor:"black",opacity:.12,data:{isHelperItem:!0,noSelect:!0,noHover:!0,saPaintSnapGuide:!0},visible:!0,guide:!0}),f.circle=new t.Path.Circle({center:new t.Point(0,0),radius:4/t.view.zoom,fillColor:new t.Color(s),data:{isScaleHandle:!1,isHelperItem:!0,noSelect:!0,noHover:!0,saPaintSnapGuide:!0},visible:!0,guide:!0}),w.removeChildren(),w.addChildren([f.shadow,f.circle]),v.strokeWidth=1/t.view.zoom,v.strokeColor=new t.Color(s),v.bringToFront(),w.bringToFront(),g("isGuideLayer").addChildren([v,w]),P=M.snapPoint.subtract(M.point);const e=null===(E=M.pos.match(/item_(\d+)_/))||void 0===E?void 0:E[1];if(e){const o=t.project.getItem({id:parseInt(e,10)});o&&(I=b(o))}if(M.point.equals(this.selectionCenter)&&"point"===M.snapPointType)D.fillColor=D.strokeColor=new t.Color(s);else switch(O(),M.snapPointType){case"point":w.visible=!0,w.position=M.snapPoint,w.bringToFront();break;case"xcoord":case"itemSideVert":v.firstSegment.point=new t.Point(M.snapPoint.x,j.top),v.lastSegment.point=new t.Point(M.snapPoint.x,j.bottom),v.visible=!0,v.bringToFront();break;case"ycoord":case"itemSideHoriz":v.firstSegment.point=new t.Point(j.left,M.snapPoint.y),v.lastSegment.point=new t.Point(j.right,M.snapPoint.y),v.visible=!0,v.bringToFront()}}}let A;for(const t of this.selectedItems)t.data.origPos||(t.data.origPos=t.position),P?t.position=t.data.origPos.add(P):e.modifiers.shift?t.position=t.data.origPos.add(c(S,Math.PI/4)):t.position=t.data.origPos.add(S),A=A?A.unite(t.bounds):t.bounds;this.firstDrag&&(u().visible=!0,this.firstDrag=!1);let k=1;if(p.yA.bottom&&p.xA.right||p.y>A.bottom&&p.x>A.right){const e=Math.max(p.x-A.right,A.left-p.x),o=Math.max(p.y-A.bottom,A.top-p.y),n=Math.sqrt(e*e+o*o);k=Math.max(0,1-n/(10/t.view.zoom))}else p.yA.bottom?k=Math.max(0,1-(Math.abs(p.y-T.y)-A.height/2)/(10/t.view.zoom)):(p.xA.right)&&(k=Math.max(0,1-(Math.abs(p.x-T.x)-A.width/2)/(10/t.view.zoom)));u().opacity=m*k}const S=y.constructor.prototype.onMouseDrag;y.constructor.prototype.onMouseDrag=j;const C=y.constructor.prototype.onMouseDown;y.constructor.prototype.onMouseDown=function(...t){y.constructor.prototype.onMouseDrag=n?j:S,C.apply(this,t)};const P=y.constructor.prototype.onMouseUp;y.constructor.prototype.onMouseUp=function(...t){var e;null===(e=x)||void 0===e||e(),P.apply(this,t)}});function C(t,e){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),o.push.apply(o,n)}return o}function P(t){for(var e=1;e!(t.selected||t.data.isHelperItem)).map(t=>[n&&["item_".concat(t.id,"_r"),{type:"xcoord",value:t.bounds.right}],n&&["item_".concat(t.id,"_l"),{type:"xcoord",value:t.bounds.left}],a&&["item_".concat(t.id,"_t"),{type:"ycoord",value:t.bounds.top}],a&&["item_".concat(t.id,"_b"),{type:"ycoord",value:t.bounds.bottom}],n&&["item_".concat(t.id,"_w"),{type:"width",value:t.bounds.bottom,clamp:{min:t.bounds.left,max:t.bounds.right}}],a&&["item_".concat(t.id,"_h"),{type:"height",value:t.bounds.left,clamp:{min:t.bounds.bottom,max:t.bounds.top}}]].filter(Boolean)).flat(1)):{}),i.objectMidlines?Object.fromEntries(o.filter(t=>!(t.selected||t.data.isHelperItem)).map(t=>[n&&["item_".concat(t.id,"_cx"),{type:"xcoord",value:t.bounds.center.x}],a&&["item_".concat(t.id,"_cy"),{type:"ycoord",value:t.bounds.center.y}]].filter(Boolean)).flat(1)):{})}const D=(t,e)=>{const o=M(t),{view:{getActionBounds:i},layer:{getLayer:a}}=o,l=(t=>t.boundingBoxTool._modeMap.SCALE)(e),c={endLeft:new t.Path.Line({from:[0,0],to:[0,0],strokeColor:new t.Color(s),strokeWidth:1/t.view.zoom,visible:!0,data:{isHelperItem:!0,noSelect:!0,noHover:!0,saPaintSnapGuide:!0},selected:!1}),endRight:new t.Path.Line({from:[0,0],to:[0,0],strokeColor:new t.Color(s),strokeWidth:1/t.view.zoom,visible:!0,data:{isHelperItem:!0,noSelect:!0,noHover:!0,saPaintSnapGuide:!0},selected:!1}),line:new t.Path.Line({from:[0,0],to:[0,0],strokeColor:new t.Color(s),strokeWidth:1/t.view.zoom,visible:!0,data:{isHelperItem:!0,noSelect:!0,noHover:!0,saPaintSnapGuide:!0},selected:!1}),group:new t.Group({children:[],visible:!1})},d={endLeft:new t.Path.Line({from:[0,0],to:[0,0],strokeColor:new t.Color(s),strokeWidth:1/t.view.zoom,visible:!0,data:{isHelperItem:!0,noSelect:!0,noHover:!0,saPaintSnapGuide:!0},selected:!1}),endRight:new t.Path.Line({from:[0,0],to:[0,0],strokeColor:new t.Color(s),strokeWidth:1/t.view.zoom,visible:!0,data:{isHelperItem:!0,noSelect:!0,noHover:!0,saPaintSnapGuide:!0},selected:!1}),line:new t.Path.Line({from:[0,0],to:[0,0],strokeColor:new t.Color(s),strokeWidth:1/t.view.zoom,visible:!0,data:{isHelperItem:!0,noSelect:!0,noHover:!0,saPaintSnapGuide:!0},selected:!1}),group:new t.Group({children:[],visible:!1})};c.endLeft.remove(),d.endLeft.remove(),c.endRight.remove(),d.endRight.remove(),c.line.remove(),d.line.remove(),c.group.remove(),d.group.remove(),c.group.addChildren([c.endLeft,c.line,c.endRight]),d.group.addChildren([d.endLeft,d.line,d.endRight]);let p=new t.Path.Line({from:[0,0],to:[0,0],strokeColor:new t.Color(s),strokeWidth:1/t.view.zoom,visible:!1,data:{isHelperItem:!0,noSelect:!0,noHover:!0,saPaintSnapGuide:!0,axis:"x"},selected:!1}),u=new t.Path.Line({from:[0,0],to:[0,0],strokeColor:new t.Color(s),strokeWidth:1/t.view.zoom,visible:!1,data:{isHelperItem:!0,noSelect:!0,noHover:!0,saPaintSnapGuide:!0,axis:"y"},selected:!1});p.remove(),u.remove();const m=["width","height","itemSideVert","itemSideHoriz","xcoord","ycoord","generated",void 0],g=()=>{c.group.remove(),c.group.visible=!1,d.group.remove(),d.group.visible=!1,p.remove(),p.visible=!1,u.remove(),u.visible=!1};l.constructor.prototype.onMouseDrag=function(e){if(!this.active)return;const l=e.point,b=i(this.isBitmap);l.x=Math.max(b.left,Math.min(l.x,b.right)),l.y=Math.max(b.top,Math.min(l.y,b.bottom)),this.lastPoint||(this.lastPoint=e.lastPoint);const h=l.subtract(this.lastPoint);this.lastPoint=l,e.modifiers.alt?(this.centered=!0,this.itemGroup.position=this.origCenter,this.pivot=this.origCenter):(this.centered&&(this.centered=!1,this.itemGroup.scale(1/this.lastSx,1/this.lastSy,this.pivot),this.selectionAnchor&&this.selectionAnchor.scale(this.lastSx,this.lastSy),this.lastSx=1,this.lastSy=1),this.pivot=this.origPivot),this.corner=this.corner.add(h);let y=this.corner.subtract(this.pivot);e.modifiers.alt&&(y=y.multiply(2));let v=1,f=1;Math.abs(this.origSize.x)>1e-7&&(v=y.x/this.origSize.x),Math.abs(this.origSize.y)>1e-7&&(f=y.y/this.origSize.y);const w=(t,e)=>{const o=m.indexOf(t.type)-m.indexOf(e.type);return o||t.distance-e.distance},M=a("isPaintingLayer"),I=n&&(this.isCorner&&!e.modifiers.shift||Math.abs(this.origSize.x)>1e-7),x=n&&(this.isCorner&&!e.modifiers.shift||Math.abs(this.origSize.y)>1e-7),j=r/t.view.zoom,N=t=>t.distance({type:e.type,distance:(()=>{switch(e.type){case"width":return Math.abs(Math.abs(y.x)-Math.abs(e.clamp.max-e.clamp.min));case"height":return Math.abs(Math.abs(y.y)-Math.abs(e.clamp.max-e.clamp.min));case"xcoord":case"itemSideVert":return Math.abs(this.corner.x-e.value);case"ycoord":case"itemSideHoriz":return Math.abs(this.corner.y-e.value)}})(),name:t,coord:e}),S=T(0,o,M.children,I,!1),C=Object.entries(S).map(L).filter(N).sort(w),P=T(0,o,M.children,!1,x),z=Object.entries(P).map(L).filter(N).sort(w),D=C[0],O=z[0],E=v>0?1:-1,A=f>0?1:-1;if(D)switch(D.type){case"width":v=new t.Point(Math.abs(D.coord.clamp.max-D.coord.clamp.min),this.corner.y).x/this.origSize.x;break;case"xcoord":case"itemSideVert":v=new t.Point(D.coord.value,this.corner.y).subtract(this.pivot).x/this.origSize.x,e.modifiers.alt&&(v*=2);break}if(O)switch(O.type){case"height":f=new t.Point(this.corner.x,Math.abs(O.coord.clamp.max-O.coord.clamp.min)).y/this.origSize.y;break;case"ycoord":case"itemSideHoriz":f=new t.Point(this.corner.x,O.coord.value).subtract(this.pivot).y/this.origSize.y,e.modifiers.alt&&(f*=2);break}const k=v,_=f;if(this.isCorner&&!e.modifiers.shift&&(v=f=Math.max(Math.abs(v),Math.abs(f)),v*=E,f*=A),v=E*Math.max(Math.abs(v),1e-4),f=A*Math.max(Math.abs(f),1e-4),this.itemGroup.scale(v/this.lastSx,f/this.lastSy,this.pivot),this.selectionAnchor&&this.selectionAnchor.scale(this.lastSx/v,this.lastSy/f),g(),(Math.abs(k)===Math.abs(v)&&D||Math.abs(_)===Math.abs(f)&&O)&&(p.strokeWidth=1/t.view.zoom,u.strokeWidth=1/t.view.zoom,p.strokeColor=new t.Color(s),u.strokeColor=new t.Color(s),c.endLeft.strokeWidth=1/t.view.zoom,d.endLeft.strokeWidth=1/t.view.zoom,c.endRight.strokeWidth=1/t.view.zoom,d.endRight.strokeWidth=1/t.view.zoom,c.line.strokeWidth=1/t.view.zoom,d.line.strokeWidth=1/t.view.zoom,c.endLeft.strokeColor=new t.Color(s),d.endLeft.strokeColor=new t.Color(s),c.endRight.strokeColor=new t.Color(s),d.endRight.strokeColor=new t.Color(s),c.line.strokeColor=new t.Color(s),d.line.strokeColor=new t.Color(s),p.bringToFront(),u.bringToFront(),a("isGuideLayer").addChildren([u,p,c.group,d.group])),Math.abs(k)===Math.abs(v)&&D)switch(D.type){case"width":{const e=D.coord.value,o=this.itemGroup.bounds.bottom;d.endLeft.firstSegment.point=new t.Point(D.coord.clamp.min,e),d.endLeft.lastSegment.point=new t.Point(D.coord.clamp.min,e+5/t.view.zoom),d.endRight.firstSegment.point=new t.Point(D.coord.clamp.max,e),d.endRight.lastSegment.point=new t.Point(D.coord.clamp.max,e+5/t.view.zoom),d.line.firstSegment.point=new t.Point(D.coord.clamp.min,e+3/t.view.zoom),d.line.lastSegment.point=new t.Point(D.coord.clamp.max,e+3/t.view.zoom),d.group.visible=!0,d.group.bringToFront(),c.endLeft.firstSegment.point=new t.Point(this.itemGroup.bounds.left,o+2/t.view.zoom),c.endLeft.lastSegment.point=new t.Point(this.itemGroup.bounds.left,o+7/t.view.zoom),c.endRight.firstSegment.point=new t.Point(this.itemGroup.bounds.right,o+2/t.view.zoom),c.endRight.lastSegment.point=new t.Point(this.itemGroup.bounds.right,o+7/t.view.zoom),c.line.firstSegment.point=new t.Point(this.itemGroup.bounds.left,o+4.5/t.view.zoom),c.line.lastSegment.point=new t.Point(this.itemGroup.bounds.right,o+4.5/t.view.zoom),c.group.visible=!0,c.group.bringToFront();break}case"xcoord":case"itemSideVert":p.firstSegment.point=new t.Point(D.coord.value,b.top),p.lastSegment.point=new t.Point(D.coord.value,b.bottom),p.visible=!0,p.bringToFront()}if(Math.abs(_)===Math.abs(f)&&O)switch(O.type){case"height":{const e=O.coord.value,o=this.itemGroup.bounds.left;d.endLeft.firstSegment.point=new t.Point(e,O.coord.clamp.min),d.endLeft.lastSegment.point=new t.Point(e-5/t.view.zoom,O.coord.clamp.min),d.endRight.firstSegment.point=new t.Point(e,O.coord.clamp.max),d.endRight.lastSegment.point=new t.Point(e-5/t.view.zoom,O.coord.clamp.max),d.line.firstSegment.point=new t.Point(e-3/t.view.zoom,O.coord.clamp.min),d.line.lastSegment.point=new t.Point(e-3/t.view.zoom,O.coord.clamp.max),d.group.visible=!0,d.group.bringToFront(),c.endLeft.firstSegment.point=new t.Point(o-2/t.view.zoom,this.itemGroup.bounds.top),c.endLeft.lastSegment.point=new t.Point(o-7/t.view.zoom,this.itemGroup.bounds.top),c.endRight.firstSegment.point=new t.Point(o-2/t.view.zoom,this.itemGroup.bounds.bottom),c.endRight.lastSegment.point=new t.Point(o-7/t.view.zoom,this.itemGroup.bounds.bottom),c.line.firstSegment.point=new t.Point(o-4.5/t.view.zoom,this.itemGroup.bounds.top),c.line.lastSegment.point=new t.Point(o-4.5/t.view.zoom,this.itemGroup.bounds.bottom),c.group.visible=!0,c.group.bringToFront();break}case"ycoord":case"itemSideHoriz":u.firstSegment.point=new t.Point(b.left,O.coord.value),u.lastSegment.point=new t.Point(b.right,O.coord.value),u.visible=!0,u.bringToFront()}this.lastSx=v,this.lastSy=f};const b=l.constructor.prototype.onMouseUp;l.constructor.prototype.onMouseUp=function(){g(),b.call(this)}};var O=o(1713);const E={"userscript.js":async function(t){const{addon:e}=t;e.self.addEventListener("disabled",u),e.self.addEventListener("reenabled",p),function({settings:t}){for(const e in i)Object.prototype.hasOwnProperty.call(i,e)&&l(e,t.get(e));for(const e in a)Object.prototype.hasOwnProperty.call(a,e)&&c(e,t.get(e));d(t.get("threshold")),m(t.get("enable-default"))}(e);const o=await e.tab.traps.getPaper(),[s]=o.tools;m(e.settings.get("enable-default")),g(e.settings.get("guide-color")),e.settings.addEventListener("change",()=>g(e.settings.get("guide-color"))),(t=>"selectionBoxTool"in t&&"boundingBoxTool"in t)(s)&&(S(o,s),D(o,s)),function({addon:t,msg:e}){const o=()=>{const t=document.createElement("div");return t.className="sa-paint-snap-group",t},s=()=>{const t=document.createElement("div");return t.className="sa-paint-snap-settings-separator",t},p=({useButtonTag:t}={})=>{const e=document.createElement(t?"button":"span");return e.className="sa-paint-snap-button",e.setAttribute("role","button"),e},u=e=>{const o=document.createElement("img");return o.className="sa-paint-snap-image",o.draggable=!1,o.src=t.self.getResource("/icons/"+e+".svg"),o},g=o();t.tab.displayNoneWhileDisabled(g,{display:"flex"});const b=document.createElement("div");b.className="sa-paint-snap-settings-wrapper",g.appendChild(b);const h=document.createElement("div");h.className="sa-paint-snap-settings",b.appendChild(h);const y="http://www.w3.org/2000/svg",v=document.createElementNS(y,"svg");v.setAttribute("class","sa-paint-snap-settings-tip"),v.setAttribute("width","14"),v.setAttribute("height","7");const f=document.createElementNS(y,"polygon");f.setAttribute("class","sa-paint-snap-settings-polygon"),f.setAttribute("points","0,0 7,7, 14,0"),v.appendChild(f),h.appendChild(v);const w=p();w.addEventListener("click",()=>{n||(Object.values(i).some(t=>t)||l("pageCenter",!0),Object.values(a).some(t=>t)||c("boxCenter",!0)),m(!n),w.dataset.enabled=n}),w.title=e("toggle"),w.appendChild(u("snap")),w.dataset.enabled=n,g.appendChild(w);const M=p();M.addEventListener("click",()=>x(!j())),M.title=e("settings"),M.appendChild(u("settings")),g.appendChild(M);const I=[],x=t=>{M.dataset.enabled=t,h.dataset.visible=t,t?I.forEach(t=>{try{null==t||t()}catch(t){}}):(Object.values(a).every(t=>!t)||Object.values(i).every(t=>!t))&&(m(!1),w.dataset.enabled=!1)},j=()=>"true"===h.dataset.visible,N=(t,n,i,a=(()=>{}))=>{const s=[t,n],r=o(),l=p({useButtonTag:!0}),c=p({useButtonTag:!0}),d=u(t),m=u(n);d.dataset.shrink=m.dataset.shrink=!0,l.appendChild(d),c.appendChild(m),l.setAttribute("aria-label",l.title=e(t)),c.setAttribute("aria-label",c.title=e(n));const g=(t,e,o=!1)=>{l.dataset.enabled=!!t,c.dataset.enabled=!t,o||a(s[t])};return g(1-s.indexOf(i),0,!0),l.addEventListener("click",g.bind(l,1)),c.addEventListener("click",g.bind(c,0)),r.append(l,c),r},L=(t,o)=>{const n=document.createElement("label");n.className="sa-paint-snap-settings-line";const s=document.createElement("div");return s.className="sa-paint-snap-settings-label",s.textContent=e(t),n.append(s,o),I.push(()=>{const n=o.querySelector('[aria-label="'.concat(e("on"),'"]')),s=o.querySelector('[aria-label="'.concat(e("off"),'"]'));t in i&&(n.dataset.enabled=!!i[t],s.dataset.enabled=!i[t]),t in a&&(n.dataset.enabled=!!a[t],s.dataset.enabled=!a[t])}),n},S=(t,...e)=>{const o=document.createElement("div");o.className="sa-paint-snap-settings-section";const n=document.createElement("span");return n.appendChild(document.createTextNode(t)),n.className="sa-paint-snap-settings-section-title",o.appendChild(n),o.append(...e),o},C=L("threshold",((t,e=(()=>{}),n=-1/0,i=1/0,a=1)=>{const s=o(),r=document.createElement("div");r.style.width="20px";const l=p();l.appendChild(r);const c=document.createElement("input");c.className="sa-paint-snap-settings-input",c.type="number",c.step=a,c.min=n,c.max=i,c.value=t,c.addEventListener("change",()=>{c.value>i&&(c.value=i),c.value{c.value||(c.value="0")}),l.appendChild(c);const d=p();d.appendChild(u("decrement")),d.addEventListener("click",()=>{c.value>n&&(c.value=Number(c.value)-1,e(Number(c.value)+1))});const m=p();return m.appendChild(u("increment")),m.addEventListener("click",()=>{c.value{d(t)},4,50,1)),P=(t,e=(()=>{}))=>{return["off","on",(o=t,o?"on":"off"),t=>e(!!["on","off"].indexOf(t))];var o},z=t=>L(t,N(...P(i[t],e=>{m(!0),w.dataset.enabled=!0,l(t,e)}))),T=S(e("snapTo"),z("pageCenter"),z("pageAxes"),z("pageEdges"),z("pageCorners"),z("objectCenters"),z("objectMidlines"),z("objectEdges"),z("objectCorners")),D=t=>L(t,N(...P(a[t],e=>{c(t,e)}))),O=S(e("snapFrom"),D("boxCenter"),D("boxCorners"),D("boxEdgeMids"));h.append(C,s(),T,s(),O),(async()=>{let e=!1;for(;;){const o=(await t.tab.waitForElement("[class^='paint-editor_canvas-controls']",{markAsSeen:!0,reduxEvents:["scratch-gui/navigation/ACTIVATE_TAB","scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE","scratch-gui/targets/UPDATE_TARGET_LIST"],reduxCondition:t=>1===t.scratchGui.editorTab.activeTabIndex&&!t.scratchGui.mode.isPlayerOnly})).querySelector("[class^='paint-editor_zoom-controls']");if(t.tab.appendToSharedSpace({space:"paintEditorZoomControls",element:g,order:2}),!e){e=!0;const t=o.firstChild.className,n=o.firstChild.firstChild.className,i=o.firstChild.firstChild.firstChild.className;for(const e of document.querySelectorAll(".sa-paint-snap-group"))e.className+=" "+t;for(const t of document.querySelectorAll(".sa-paint-snap-button"))t.className+=" "+n;for(const t of document.querySelectorAll(".sa-paint-snap-image"))t.className+=" "+i}}})()}(t)},"userstyle.css":o.n(O).a,"icons/decrement.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggc3R5bGU9ImZpbGw6IzU3NWU3NTtzdHJva2Utd2lkdGg6LjczNDczNiIgZD0iTTMuMjUgMTEuMzU4aDE3LjUwMXYxLjI4NUgzLjI1eiIvPjwvc3ZnPg==","icons/increment.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHdpZHRoPSIyNCI+PHBhdGggc3R5bGU9ImZpbGw6IzU3NWU3NTtzdHJva2Utd2lkdGg6LjczNDczNiIgZD0iTTMuMjUgMTEuMzU4aDE3LjUwMXYxLjI4NUgzLjI1eiIvPjxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDkwKSIgc3R5bGU9ImZpbGw6IzU3NWU3NTtzdHJva2Utd2lkdGg6LjczNDczNiIgZD0iTTMuMjUtMTIuNjQyaDE3LjUwMXYxLjI4NUgzLjI1eiIvPjwvc3ZnPg==","icons/off.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzU3NWU3NSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIgZD0ibTExLjI1IDQuNzUtNi41IDYuNW0wLTYuNSA2LjUgNi41Ii8+PC9zdmc+","icons/on.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxwYXRoIGZpbGw9IiM1NzVlNzUiIGQ9Ik0xMi43MzYgMy45N2EuNzMzLjczMyAwIDAgMSAxLjA0NyAwYy4yODYuMjg5LjI5Ljc1Ni4wMSAxLjA1TDcuODggMTIuMDFhLjczMy43MzMgMCAwIDEtMS4wNjUuMDJMMy4yMTcgOC4zODRhLjc1Ny43NTcgMCAwIDEgMC0xLjA2LjczMy43MzMgMCAwIDEgMS4wNDcgMGwzLjA1MiAzLjA5MyA1LjQtNi40MjVhLjI0Ny4yNDcgMCAwIDEgLjAyLS4wMjJaIi8+PC9zdmc+","icons/settings.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PGNpcmNsZSBjeD0iMTIuNTUiIGN5PSIxMi41NSIgcj0iOS4wNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNTc1ZTc1IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iNyIvPjxjaXJjbGUgY3g9IjYxLjk0MyIgY3k9IjYxLjQzNiIgcj0iNy41IiBmaWxsPSIjNTc1ZTc1Ii8+PHBhdGggZmlsbD0iIzU3NWU3NSIgZD0ibTUzLjExOSAyNy43NDMtOC4yNjcgOC4yNjZMMzEuNjkgMjIuODQ3bC04LjU3IDguNTczIDEzLjE2IDEzLjE2LTguMjY2IDguMjY2aDI1LjEwNXoiIGNvbG9yPSIjNTc1ZTc1Ii8+PHBhdGggZmlsbD0iIzU3NWU3NSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNDYuMjI3IDEwMGMuNTMtMy4yMDUgMS4yMTktNi4zNzQgMi4xMTItOS40N2wtNC44MDQtMS4zODZjLS45NTQgMy4zMS0xLjY4MyA2LjY2OS0yLjI0IDEwLjA0em0zLjYwMy0xNC4wNjhhNjMuOTM1IDYzLjkzNSAwIDAgMSAzLjkzLTguNzc1bC00LjM5My0yLjM4NmE2OC45MTcgNjguOTE3IDAgMCAwLTQuMjQgOS40NnptNi4zODItMTIuOWMxLjc1My0yLjY5NCAzLjY5LTUuMjQ5IDUuODQtNy41NzhsLTMuNjczLTMuMzkyYy0yLjM3MiAyLjU2OS00LjQ3NCA1LjM1LTYuMzU3IDguMjQxem05LjIzNC0xMC45NDFhNTcuOTUgNTcuOTUgMCAwIDEgNy42MDktNS44MTNsLTIuNzAzLTQuMjA4YTYyLjk0NCA2Mi45NDQgMCAwIDAtOC4yNjYgNi4zMTd6bTExLjc1Mi04LjI2MmE3MS4yNjUgNzEuMjY1IDAgMCAxIDguNzg2LTRsLTEuNzY2LTQuNjc3YTc2LjI0MiA3Ni4yNDIgMCAwIDAtOS40MDEgNC4yODF6bTEzLjM3Mi01LjU3MkE4Ny45MjYgODcuOTI2IDAgMCAxIDEwMCA0NS45MUw5OS4wNTcgNDFhOTIuOTM4IDkyLjkzOCAwIDAgMC05Ljk2NyAyLjQ4eiIgY29sb3I9IiM1NzVlNzUiLz48L3N2Zz4=","icons/snap.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHBhdGggZmlsbD0iIzU3NWU3NSIgc3Ryb2tlPSIjNTc1ZTc1IiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iMzIiIGQ9Ik0xOTEuOTggNDYzLjU4di00OE05MC4xNiA0MjEuNGwzMy45NC0zMy45NG0tNzYuMTItNjcuODhoNDgiLz48cGF0aCBmaWxsPSIjNTc1ZTc1IiBkPSJNNDIyLjIgODkuODJhMTQ0IDE0NCAwIDAgMC0yMDMuNzEtLjA3bC02Ny44OCA2Ny44OCA2Ny44OCA2Ny44OSA2Ny44OC02Ny44OWE0OCA0OCAwIDAgMSA2OC40Ni41OWMxOC4zIDE4LjkyIDE3LjQ4IDQ5LjI0LTEuMTQgNjcuODZsLTY3LjMyIDY3LjMyIDY3Ljg4IDY3Ljg4IDY2LjkxLTY2LjkxYzU2LjM3LTU2LjM3IDU3LjM3LTE0OC4xNSAxLjA0LTIwNC41NVpNODIuNzE5IDIyNS41MTdsNDUuMjU0LTQ1LjI1NCA2Ny44ODMgNjcuODgyTDE1MC42IDI5My40ek0yMTguNDkgMzYxLjI3bDQ1LjI1NC00NS4yNTQgNjcuODgyIDY3Ljg4Mi00NS4yNTUgNDUuMjU1eiIvPjwvc3ZnPg=="}}}]); \ No newline at end of file diff --git a/js/addon-entry-remove-curved-stage-border.7b0cfb055df68d100a74.js b/js/addon-entry-remove-curved-stage-border.7b0cfb055df68d100a74.js new file mode 100644 index 0000000..6e59a01 --- /dev/null +++ b/js/addon-entry-remove-curved-stage-border.7b0cfb055df68d100a74.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[42],{1738:function(r,n,s){"use strict";s.r(n),s.d(n,"resources",(function(){return o}));var e=s(1739);const o={"remove-borders.css":s.n(e).a}},1739:function(r,n,s){(r.exports=s(9)(!1)).push([r.i,'[class*="stage_stage"] {\n border-radius: 0rem !important;\n}\n\n[class*="stage_green-flag-overlay-wrapper"] {\n border-radius: 0rem !important;\n}\n',""])}}]); \ No newline at end of file diff --git a/js/addon-entry-remove-sprite-confirm.ed3cd5b0a7a84f2b1f10.js b/js/addon-entry-remove-sprite-confirm.ed3cd5b0a7a84f2b1f10.js new file mode 100644 index 0000000..9542e71 --- /dev/null +++ b/js/addon-entry-remove-sprite-confirm.ed3cd5b0a7a84f2b1f10.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[43],{1785:function(e,t,s){"use strict";s.r(t),s.d(t,"resources",(function(){return r}));const r={"userscript.js":async({addon:e,console:t,msg:s})=>{if(!e.tab.redux.state)return t.warn("Redux is not available!");const r=e.tab.traps.vm;if(!r)return;const n=r.deleteSprite;r.deleteSprite=function(...t){if(e.self.disabled)return n.apply(this,t);if(confirm(s("confirm")))return n.apply(this,t);const r=Object.assign({},e.tab.redux.state.scratchGui.restoreDeletion);return setTimeout(()=>e.tab.redux.dispatch({type:"scratch-gui/restore-deletion/RESTORE_UPDATE",state:r}),100),Promise.resolve()}}}}}]); \ No newline at end of file diff --git a/js/addon-entry-script-snap.44691da4c7192463548d.js b/js/addon-entry-script-snap.44691da4c7192463548d.js new file mode 100644 index 0000000..2f8094c --- /dev/null +++ b/js/addon-entry-script-snap.44691da4c7192463548d.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[44],{1816:function(n,e,t){"use strict";t.r(e),t.d(e,"resources",(function(){return s}));const s={"userscript.js":async function({addon:n,console:e}){const t=await n.tab.traps.getBlockly();let s=t.getMainWorkspace();const i=t.init_;function a(e){s.grid_.snapToGrid_=e,s.grid_.spacing_=e?n.settings.get("grid"):40,s.grid_.update(s.scale)}t.init_=function(...e){return s=e[0],n.self.disabled||a(!0),i.call(this,...e)},a(!0),n.settings.addEventListener("change",()=>a(!0)),n.self.addEventListener("disabled",()=>a(!1)),n.self.addEventListener("reenabled",()=>a(!0))}}}}]); \ No newline at end of file diff --git a/js/addon-entry-search-sprites.700a19e19b9d35f94c36.js b/js/addon-entry-search-sprites.700a19e19b9d35f94c36.js new file mode 100644 index 0000000..755cbc6 --- /dev/null +++ b/js/addon-entry-search-sprites.700a19e19b9d35f94c36.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[45],{1731:function(e,n,s){(e.exports=s(9)(!1)).push([e.i,'.sa-search-sprites-container {\n position: relative;\n display: flex;\n align-items: center;\n}\n\ninput.sa-search-sprites-box {\n width: 100%;\n box-sizing: border-box;\n background-color: transparent;\n border: 0px;\n border-bottom: 1px solid hsla(0, 0%, 1%, 0.15);\n outline: none;\n padding: 5px 20px 5px 10px;\n}\n[theme="dark"] input.sa-search-sprites-box {\n border-color: var(--ui-black-transparent);\n}\n\n.sa-search-sprites-reset {\n display: none;\n margin: 0;\n padding: 0;\n background: none;\n border: none;\n outline: none;\n cursor: pointer;\n position: absolute;\n right: 0;\n padding-right: 5px;\n font-size: 25px;\n}\n\n.sa-search-sprites-box:not(:placeholder-shown) ~ .sa-search-sprites-reset {\n display: block;\n}\n',""])},1795:function(e,n,s){"use strict";s.r(n),s.d(n,"resources",(function(){return t}));var r=s(1731);const t={"userscript.js":async function({addon:e,console:n,msg:s}){let r,t;const o=document.createElement("div");o.className="sa-search-sprites-container",e.tab.displayNoneWhileDisabled(o,{display:"flex"});const a=document.createElement("input");a.className="sa-search-sprites-box",a.placeholder=s("placeholder"),a.autocomplete="off",a.type="text";const i=e=>{if(!r)return;e=e.toLowerCase();const n=n=>n.toLowerCase().includes(e);for(const s of r.children){const r=!e||n(s.children[0].children[1].innerText)||n(s.children[0].children[2].children[0].innerText)&&s.children[0].classList.contains("sa-folders-folder");s.style.display=r?"":"none"}};a.addEventListener("input",e=>{i(e.target.value)});const c=()=>{i(""),a.value=""},l=document.createElement("button");for(l.className="sa-search-sprites-reset",l.addEventListener("click",c),l.textContent="×",e.self.addEventListener("disabled",c),o.appendChild(a),o.appendChild(l);;)await e.tab.waitForElement("div[class^='sprite-selector_items-wrapper']",{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"],reduxCondition:e=>!e.scratchGui.mode.isPlayerOnly}),r=document.querySelector('[class^="sprite-selector_items-wrapper"]'),t=document.querySelector('[class^="sprite-selector_scroll-wrapper"]'),t.insertBefore(o,r),c()},"search-bar.css":s.n(r).a}}}]); \ No newline at end of file diff --git a/js/addon-entry-sprite-properties.339a3bf278ed06a36356.js b/js/addon-entry-sprite-properties.339a3bf278ed06a36356.js new file mode 100644 index 0000000..2437b92 --- /dev/null +++ b/js/addon-entry-sprite-properties.339a3bf278ed06a36356.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[46],{1732:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,'[class^="sprite-info_sprite-info_"] {\n height: 0;\n padding: 0 0.75rem;\n overflow: hidden;\n transition-property: height, padding, transform;\n transition-duration: var(--spriteProperties-transitionDuration);\n}\n\n.sa-hide-sprite-properties [class^="sprite-info_sprite-info_"] {\n border: none;\n}\n\n[class^="sprite-selector_scroll-wrapper_"] {\n height: 100%;\n transition-property: height;\n transition-duration: var(--spriteProperties-transitionDuration);\n}\n\n.sa-show-sprite-properties [class^="sprite-info_sprite-info_"] {\n /* The height needs to be known for the animation to work.\n 6.5rem + 5px is the exact height of sprite info when\n this addon is enabled:\n 0.75rem (top padding)\n + 2rem + 2px (.icon-wrappers in the first row)\n + 0.5rem (margin between rows)\n + 2rem + 2px (.icon-wrappers in the second row)\n + 1.25rem (close button)\n + 1px (bottom border) */\n height: calc(6.5rem + 5px);\n padding: 0.75rem;\n padding-bottom: 0;\n}\n.sa-sprite-properties-wide-locale.sa-show-sprite-properties [class^="sprite-info_sprite-info_"] {\n /* In wide languages, add in addition to the previous:\n + 2 * 0.625rem * 1.2 (each row\'s text label now uses vertical space)\n + 2 * 0.25rem (each row has extra padding) */\n height: calc(6.5rem + 5px + 2rem);\n}\n[class^="label_input-group-column_"] {\n /* Default line-height: normal is inconsistent across browsers, but above style needs constant line-height. */\n line-height: 1.2;\n}\n\n/* see heights in above selectors */\n.sa-show-sprite-properties [class^="sprite-selector_scroll-wrapper_"] {\n height: calc(100% - 6.5rem - 5px);\n}\n.sa-sprite-properties-wide-locale.sa-show-sprite-properties [class^="sprite-selector_scroll-wrapper_"] {\n height: calc(100% - 6.5rem - 5px - 2rem);\n}\n\n.sa-sprite-properties-info-btn {\n /* !important to override displayNoneWhileDisabled\'s inline styles */\n display: flex !important;\n position: absolute;\n justify-content: center;\n align-items: center;\n width: 1rem;\n height: 1rem;\n top: -2px;\n left: -2px;\n border: none;\n border-radius: 100%;\n background-color: var(--editorDarkMode-primary, hsla(0, 100%, 65%, 1));\n}\n[dir="rtl"] .sa-sprite-properties-info-btn {\n left: auto;\n right: -2px;\n}\n.sa-show-sprite-properties .sa-sprite-properties-info-btn {\n display: none !important;\n}\n\n.sa-sprite-properties-info-btn img {\n width: calc(1rem - 6px);\n height: calc(1rem - 6px);\n filter: var(--editorDarkMode-primary-filter);\n}\n\n.sa-sprite-properties-close-btn {\n width: 100%;\n height: 1.25rem;\n padding: 0;\n padding-top: 0.5rem;\n display: flex;\n justify-content: center;\n align-items: center;\n border: none;\n background-color: transparent;\n user-select: none;\n}\n\n.sa-sprite-properties-close-btn img {\n filter: var(--editorDarkMode-accent-filter);\n transition: opacity 0.25s ease-out;\n}\n\n.sa-sprite-properties-close-btn:hover img {\n opacity: 0.75;\n}\n\n/* Prevent double clicking from highlighting the "Choose a sprite" button */\n[class*="action-menu_main-button_"] {\n user-select: none;\n}\n',""])},1770:function(e,t,n){"use strict";n.r(t),n.d(t,"resources",(function(){return i}));var s=n(1732);const i={"userscript.js":async function({addon:e,console:t,msg:n}){let s;const i=new MutationObserver(()=>{g()});function r(e){document.body.classList.toggle("sa-show-sprite-properties",e),document.body.classList.toggle("sa-hide-sprite-properties",!e)}function o(){r(!document.body.classList.contains("sa-show-sprite-properties"))}function a(){e.settings.get("autoCollapse")&&r(!1)}function p(){r(!e.settings.get("autoCollapse")&&!e.settings.get("hideByDefault"))}function c(t,n,s){const i=document.createElement("img");i.setAttribute("src",e.self.getResource(n)),i.draggable=!1;const r=document.createElement("button");return r.classList.add(t),r.title=s,r.addEventListener("click",()=>o()),r.appendChild(i),e.tab.displayNoneWhileDisabled(r,{display:"flex"}),r}let l,d;function g(){l||(l=c("sa-sprite-properties-info-btn","/info.svg",n("open-properties-panel-tooltip")));const e=s.parentNode.querySelector('[class*="sprite-selector-item_is-selected"]');l.parentNode!==e&&(e?e.appendChild(l):l.remove())}function u(){const e=!!s.querySelector("[class^=label_input-group-column_]");document.body.classList.toggle("sa-sprite-properties-wide-locale",e)}for(document.addEventListener("click",e=>{2===e.detail&&e.target.closest('[class^="sprite-selector_scroll-wrapper_"]')&&o()}),document.body.addEventListener("mouseleave",e=>{e.target.matches('[class*="sprite-selector_sprite-selector_2KgCX"]')&&a()},{capture:!0}),e.settings.addEventListener("change",a),e.self.addEventListener("reenabled",p),p(),e.self.addEventListener("disabled",()=>{r(!0)}),document.addEventListener("click",e=>{(e.target.closest("[class*='stage-header_stage-button-first']")||e.target.closest("[class*='stage-header_stage-button-last']"))&&setTimeout(u)},{capture:!0});;){s=await e.tab.waitForElement('[class^="sprite-info_sprite-info_"]',{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"],reduxCondition:e=>!e.scratchGui.mode.isPlayerOnly});const t=s.parentNode.querySelector('[class*="sprite-selector_items-wrapper_"]');i.observe(t,{childList:!0,subtree:!0}),u(),g(),d||(d=c("sa-sprite-properties-close-btn","/collapse.svg",n("close-properties-panel-tooltip"))),s.appendChild(d)}},"userstyle.css":n.n(s).a,"collapse.svg":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIuNyIgaGVpZ2h0PSI4Ljc5IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik02LjM2IDFhMS40MyAxLjQzIDAgMCAwLTEgLjQyTDEuNDIgNS4zNGExLjQ0IDEuNDQgMCAwIDAgMCAyYy41Ni41NiA5LjMxLjU2IDkuODcgMGExLjQ0IDEuNDQgMCAwIDAgMC0yTDcuMzcgMS40MkExLjQzIDEuNDMgMCAwIDAgNi4zNiAxeiIgZmlsbD0iIzU3NWU3NSIvPjwvc3ZnPg==","info.svg":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAwLjU3IDAuNTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNLjIzMi4yMzJ2LjAzNmguMDM2Vi41SC4yMTR2LjAzNWguMTQzVi41SC4zMDRWLjIzM3oiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIuMDcxIiBzdHlsZT0icGFpbnQtb3JkZXI6c3Ryb2tlIGZpbGwgbWFya2VycyIvPjxjaXJjbGUgY3g9Ii4yODUiIGN5PSIuMDcxIiByPSIuMDcxIiBzdHlsZT0icGFpbnQtb3JkZXI6c3Ryb2tlIGZpbGwgbWFya2VycyIvPjwvZz48L3N2Zz4="}}}]); \ No newline at end of file diff --git a/js/addon-entry-swap-local-global.8ef2697b19df0980495b.js b/js/addon-entry-swap-local-global.8ef2697b19df0980495b.js new file mode 100644 index 0000000..f51cff8 --- /dev/null +++ b/js/addon-entry-swap-local-global.8ef2697b19df0980495b.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[47],{1746:function(e,t,a){(e.exports=a(9)(!1)).push([e.i,".sa-swap-local-global-hint {\n padding-bottom: 1rem;\n}\n.sa-swap-local-global-stage {\n /* resolves scratch class style conflict */\n display: block;\n}\n",""])},1812:function(e,t,a){"use strict";a.r(t),a.d(t,"resources",(function(){return n}));var s=a(1746);const n={"userscript.js":async function({addon:e,msg:t,console:a}){const s=await e.tab.traps.getBlockly(),n=e.tab.traps.vm,i=e=>e.isStage?s.ScratchMsgs.translate("SENSING_OF_STAGE","Stage"):e.getName(),l=e=>n.editingTarget.lookupVariableById(e),o=()=>n.editingTarget.isStage,r=(e,t)=>{"string"==typeof t&&(t=e.getVariableById(t)),e.variableMap_.deleteVariable(t)};let c=null;const d=()=>{c&&(c(),c=null)},p=function(e){const t=this.getEventWorkspace_();e?(c=b(t,this.varId),r(t,this.varId)):(t.createVariable(this.varName,this.varType,this.varId,this.isLocal,this.isCloud),d())},u=function(e){const t=this.getEventWorkspace_();e?(t.createVariable(this.varName,this.varType,this.varId,this.isLocal,this.isCloud),d()):(c=b(t,this.varId),r(t,this.varId))},g=()=>s.Events.fireNow_(),b=(e,t)=>{const a=n.runtime._monitorState.get(t),s=l(t);return()=>{g();const i=l(t);if(i&&(i.value=s.value),a){a.visible&&n.runtime.monitorBlocks.changeBlock({id:t,element:"checkbox",value:!0});const e=!n.runtime.getTargetForStage().variables[t];let l=a;if(e){const e=n.editingTarget;l=l.set("targetId",e.id),l=l.set("spriteName",e.getName())}else l=l.set("targetId",null),l=l.set("spriteName",null);if(i.name!==s.name){const e=n.runtime.monitorBlocks,a=e.getBlock(t);a&&(l=l.set("params",e._getBlockParams(a)))}n.runtime.requestAddMonitor(l)}i.name!==s.name&&((e,t)=>{const a=e.getVariableById(t);for(const t of e.getAllBlocks())t.updateVarName(a)})(e,t)}},m=(e,a,l)=>{const c=e.name,d=e.getId(),m=e.type,h=e.isLocal,v=e.isCloud;if(h===a&&v===l)return;if(l&&a)return void alert(t("cant-convert-cloud"));const f=n.editingTarget;if(h!==a)if(a){if(o())return void alert(t("cant-convert-stage"));const e=(e=>n.runtime.targets.filter(e=>e.isOriginal).filter(t=>Object.values(t.blocks._blocks).find(t=>t.fields.LIST&&t.fields.LIST.id===e||t.fields.VARIABLE&&t.fields.VARIABLE.id===e)))(d);if(!e.every(e=>e===f))return void(e.length>1?alert(t("cant-convert-to-local",{sprites:e.map(i).join(", ")})):alert(t("cant-convert-used-elsewhere",{sprite:i(e[0])})))}else{const e=((e,t)=>n.runtime.targets.filter(a=>a.isOriginal&&a.lookupVariableByNameAndType(e,t,!0)))(c,m).filter(e=>e!==f);if(e.length>0)return void alert(t("cant-convert-conflict",{sprites:e.map(i).join(", ")}))}let k=c;v!==l&&(l?k="☁ "+c:c.startsWith("☁ ")&&(k=c.replace("☁ ","")));const y=e.workspace,C=b(y,d);s.Events.setGroup(!0);try{r(y,e),y.createVariable(k,m,d,a,l)}finally{s.Events.setGroup(!1)}g();const E=y.undoStack_,S=E[E.length-1],_=E[E.length-2];S instanceof s.Events.VarCreate&&_ instanceof s.Events.VarDelete&&(S.run=u,_.run=p),C()},h=a=>{if(e.self.disabled)return;const s=document.querySelector('[class^="prompt_body_"]');if(!s)return;const i=s.parentElement.querySelector('[class^="modal_header-item_"]');i&&(""===a.type?i.textContent=t("edit-variable-header"):i.textContent=t("edit-list-header"));const l=document.createElement("div");e.tab.displayNoneWhileDisabled(l);const r=(e,t)=>{const a=document.createElement("label"),s=document.createElement("input");"checkbox"===t?s.type="checkbox":(s.name="variableScopeOption",s.type="radio",s.value=t),a.appendChild(s);const n=document.createElement("span");return n.textContent=e,a.appendChild(n),{outer:a,label:n,input:s}},c=e.tab.scratchClass("prompt_disabled-label"),d=document.createElement("div");d.className=e.tab.scratchClass("prompt_info-message","prompt_cloud-option",{others:"sa-swap-local-global-stage"}),d.appendChild(Object.assign(document.createElement("span"),{textContent:e.tab.scratchMessage("gui.gui.variablePromptAllSpritesMessage")}));const p=document.createElement("div");p.className=e.tab.scratchClass("prompt_options-row","prompt_cloud-option");const u=r(e.tab.scratchMessage("gui.gui.variableScopeOptionAllSprites"),"global"),g=r(e.tab.scratchMessage("gui.gui.variableScopeOptionSpriteOnly"),"local");u.input.checked=!a.isLocal,g.input.checked=a.isLocal,p.appendChild(u.outer),p.appendChild(g.outer);const b=document.createElement("div");b.className=e.tab.scratchClass("prompt_cloud-option");const m=r(e.tab.scratchMessage("gui.gui.cloudVariableOption"),"checkbox");m.input.checked=a.isCloud,n.runtime.canAddCloudVariable()||a.isCloud||(m.input.disabled=!0,b.classList.add(c)),b.appendChild(m.outer);const h=()=>{const e=m.input.checked;g.input.disabled=e,g.label.classList.toggle(c,e),e&&u.input.click()};m.input.addEventListener("change",h),h();let v=!1;return o()?l.appendChild(d):(v=!0,l.appendChild(p)),""===a.type&&(()=>{const t=document.querySelector('[class^="gui_blocks-wrapper_"]');let a=t[e.tab.traps.getInternalKey(t)];for(;;){var s,n;if(!a)return!1;const e=null===(s=a.stateNode)||void 0===s||null===(n=s.props)||void 0===n?void 0:n.canUseCloud;if("boolean"==typeof e)return e;a=a.child}})()&&(v=!0,l.appendChild(b)),v&&l.prepend(Object.assign(document.createElement("div"),{textContent:t("edit"),className:"sa-swap-local-global-hint"})),s.insertBefore(l,s.lastChild),{isLocal:()=>g.input.checked,isCloud:()=>m.input.checked}},v=s.Variables.renameVariable;s.Variables.renameVariable=function(t,a,s){const n=v.call(this,t,a,(...t)=>{s&&s(...t),!e.self.disabled&&i&&m(a,i.isLocal(),i.isCloud())}),i=h(a);return n},e.tab.createBlockContextMenu((a,n)=>{if(!e.self.disabled&&("data"===n.getCategory()||"data-lists"===n.getCategory())){const e=n.workspace.getVariableById(n.getVars()[0]);e&&(a.length>0&&(a[0].text===s.ScratchMsgs.translate("RENAME_VARIABLE")?a[0].text=t("edit-variable-option"):a[0].text===s.ScratchMsgs.translate("RENAME_LIST")&&(a[0].text=t("edit-list-option"))),a.push({enabled:!0,separator:!0,text:t("to-".concat(e.isLocal?"global":"local")),callback:()=>m(e,!e.isLocal,e.isCloud)}))}return a},{flyout:!0,blocks:!0})},"style.css":a.n(s).a}}}]); \ No newline at end of file diff --git a/js/addon-entry-transparent-orphans.8ea83f6e976e2a1a1bb8.js b/js/addon-entry-transparent-orphans.8ea83f6e976e2a1a1bb8.js new file mode 100644 index 0000000..972788d --- /dev/null +++ b/js/addon-entry-transparent-orphans.8ea83f6e976e2a1a1bb8.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[48],{1740:function(a,l,c){"use strict";c.r(l),c.d(l,"resources",(function(){return o}));var n=c(1741);const o={"userstyle.css":c.n(n).a}},1741:function(a,l,c){(a.exports=c(9)(!1)).push([a.i,'.blocklySvg > .blocklyWorkspace > .blocklyBlockCanvas > .blocklyDraggable[data-shapes*="hat"],\n.blocklyFlyout > .blocklyWorkspace > .blocklyBlockCanvas > .blocklyDraggable {\n opacity: calc(1 - var(--transparentOrphans-block) / 100);\n}\n.blocklyWsDragSurface > .blocklyBlockCanvas > .blocklyDraggable[data-shapes*="hat"] {\n opacity: calc(1 - var(--transparentOrphans-block) / 100);\n}\n\n.blocklySvg > .blocklyWorkspace > .blocklyBlockCanvas > .blocklyDraggable:not([data-shapes*="hat"]) {\n opacity: calc(1 - var(--transparentOrphans-orphan) / 100);\n}\n.blocklyWsDragSurface > .blocklyBlockCanvas > .blocklyDraggable:not([data-shapes*="hat"]) {\n opacity: calc(1 - var(--transparentOrphans-orphan) / 100);\n}\n\n.blocklyBlockDragSurface {\n opacity: calc(1 - var(--transparentOrphans-dragged) / 100);\n}\n',""])}}]); \ No newline at end of file diff --git a/js/addon-entry-tw-disable-cloud-variables.a286f3e67082a3b734f7.js b/js/addon-entry-tw-disable-cloud-variables.a286f3e67082a3b734f7.js new file mode 100644 index 0000000..a1163be --- /dev/null +++ b/js/addon-entry-tw-disable-cloud-variables.a286f3e67082a3b734f7.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[49],{1820:function(n,s,c){"use strict";c.r(s),c.d(s,"resources",(function(){return t}));const t={"userscript.js":async function({addon:n}){n.tab.redux.dispatch({type:"tw/SET_CLOUD",cloud:!1})}}}}]); \ No newline at end of file diff --git a/js/addon-entry-tw-disable-compiler.04f8746705c30ab0318e.js b/js/addon-entry-tw-disable-compiler.04f8746705c30ab0318e.js new file mode 100644 index 0000000..0995c9d --- /dev/null +++ b/js/addon-entry-tw-disable-compiler.04f8746705c30ab0318e.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[50],{1821:function(n,s,o){"use strict";o.r(s),o.d(s,"resources",(function(){return t}));const t={"userscript.js":async function({addon:n}){n.tab.traps.vm.setCompilerOptions({enabled:!1})}}}}]); \ No newline at end of file diff --git a/js/addon-entry-tw-remove-backpack.0fcb5ca080960398ec53.js b/js/addon-entry-tw-remove-backpack.0fcb5ca080960398ec53.js new file mode 100644 index 0000000..5db9e5e --- /dev/null +++ b/js/addon-entry-tw-remove-backpack.0fcb5ca080960398ec53.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[51],{1755:function(n,e,s){(n.exports=s(9)(!1)).push([n.i,'[class^="backpack_backpack-container"] {\n display: none;\n}\n',""])},1819:function(n,e,s){"use strict";s.r(e),s.d(e,"resources",(function(){return a}));var c=s(1755);const a={"remove-backpack.js":async function({addon:n}){const e=()=>window.dispatchEvent(new Event("resize"));n.self.addEventListener("disabled",e),n.self.addEventListener("reenabled",e),e()},"remove-backpack.css":s.n(c).a}}}]); \ No newline at end of file diff --git a/js/addon-entry-tw-remove-feedback.f7b95c65ed0d2644d1fa.js b/js/addon-entry-tw-remove-feedback.f7b95c65ed0d2644d1fa.js new file mode 100644 index 0000000..2007353 --- /dev/null +++ b/js/addon-entry-tw-remove-feedback.f7b95c65ed0d2644d1fa.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[52],{1756:function(n,e,s){"use strict";s.r(e),s.d(e,"resources",(function(){return o}));var c=s(1757);const o={"remove-feedback.css":s.n(c).a}},1757:function(n,e,s){(n.exports=s(9)(!1)).push([n.i,'a[class^="menu-bar_feedback-link_"] {\n display: none;\n}\n',""])}}]); \ No newline at end of file diff --git a/js/addon-entry-tw-straighten-comments.cfb293879e9bcb631ef9.js b/js/addon-entry-tw-straighten-comments.cfb293879e9bcb631ef9.js new file mode 100644 index 0000000..faf13ad --- /dev/null +++ b/js/addon-entry-tw-straighten-comments.cfb293879e9bcb631ef9.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[53],{1818:function(t,e,n){"use strict";n.r(e),n.d(e,"resources",(function(){return o}));const o={"userscript.js":async function({addon:t,global:e,console:n}){const o=await t.tab.traps.getBlockly(),r=o.BubbleDragger.prototype.endBubbleDrag;o.BubbleDragger.prototype.endBubbleDrag=function(e,n){if(!t.self.disabled&&this.draggingBubble_.comment){const t=this.draggingBubble_.comment.iconXY_.y-o.ScratchBubble.TOP_BAR_HEIGHT/2;n.y=t-this.startXY_.y}return r.call(this,e,n)}}}}}]); \ No newline at end of file diff --git a/js/addon-entry-variable-manager.c045ab194bd17ccd8db7.js b/js/addon-entry-variable-manager.c045ab194bd17ccd8db7.js new file mode 100644 index 0000000..05c6415 --- /dev/null +++ b/js/addon-entry-variable-manager.c045ab194bd17ccd8db7.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[54],{1729:function(e,t,a){var n=a(209);(e.exports=a(9)(!1)).push([e.i,'/* Change z-indexes to allow more than 3 tabs */\n[class*="gui_tab_"][class*="gui_is-selected_"] {\n z-index: 10 !important;\n}\n[class*="gui_tab_"]:nth-of-type(1) {\n z-index: 9;\n}\n[class*="gui_tab_"]:nth-of-type(2) {\n z-index: 8;\n}\n[class*="gui_tab_"]:nth-of-type(3) {\n z-index: 7;\n}\n[class*="gui_tab_"]:nth-of-type(4) {\n z-index: 6;\n}\n\n.sa-var-manager {\n display: block;\n padding: 18px;\n /* weird hack to fix scrolling??? */\n height: 50px;\n overflow-y: auto;\n}\n\n.sa-var-manager-searchbox {\n background-image: url('+n(a(1730))+');\n width: 25%;\n margin-bottom: 4px;\n padding: 8px;\n padding-right: 32px; /* for the text to not overlap the image */\n border-radius: 4px;\n background-repeat: no-repeat;\n background-size: 18px 18px;\n background-position: calc(100% - 7px) center;\n font-size: 0.75rem;\n}\n[theme="dark"] .sa-var-manager-searchbox {\n border-color: #333;\n}\n\n[dir="rtl"] .sa-var-manager-searchbox {\n padding-right: 8px;\n padding-left: 32px;\n background-position: 7px center;\n}\n\n.sa-var-manager.freeze .sa-var-manager-value *,\n.sa-var-manager.freeze .sa-var-manager-name * {\n opacity: 0.5;\n}\n\n.sa-var-manager.freeze input:focus,\n.sa-var-manager.freeze textarea:focus {\n opacity: 1;\n}\n\n.sa-var-manager-heading {\n display: block;\n font-weight: bold;\n font-size: large;\n margin-top: 6px;\n margin-bottom: 6px;\n}\n\n.sa-var-manager-name {\n word-break: break-word;\n}\n\n.sa-var-manager .sa-var-manager-value {\n width: 75%;\n}\n\n.sa-var-manager * > input {\n background: none;\n border: none;\n padding: 8px;\n width: 100%;\n height: 100%;\n}\n\n.sa-var-manager-value > textarea {\n background: none;\n border: none;\n padding: 8px;\n width: 100%;\n height: 100%;\n line-height: 2em;\n resize: none;\n}\n\n.sa-var-manager-too-big {\n display: none;\n cursor: pointer;\n font: inherit;\n font-style: italic;\n color: inherit;\n background: none;\n border: none;\n margin: 0;\n padding: 8px;\n opacity: 0.8;\n width: 100%;\n text-align: left;\n}\n.sa-var-manager-too-big:hover {\n text-decoration: underline;\n}\n[data-too-big="true"] .sa-var-manager-too-big {\n display: block;\n}\n[data-too-big="true"] .sa-var-manager-value-input {\n display: none;\n}\n\n.sa-var-manager table {\n border-radius: 5px;\n border-collapse: collapse;\n width: 100%;\n}\n\n.sa-var-manager td {\n border: 1px solid rgba(0, 0, 0, 0.15);\n text-align: left;\n}\n[theme="dark"] .sa-var-manager td {\n border-color: #333;\n}\n\n/* tr:nth-child(even) {\n background-color: #dddddd;\n} */\n',""])},1730:function(e,t,a){e.exports=a.p+"static/assets/1821649bb254ff5d93bb397ad646a23f.svg"},1769:function(e,t,a){"use strict";a.r(t),a.d(t,"resources",(function(){return i}));var n=a(1729);const i={"userscript.js":async function({addon:e,console:t,msg:a}){const n=e.tab.traps.vm;let i=[],s=[],r=!1;const o=document.createElement("div");o.classList.add(e.tab.scratchClass("asset-panel_wrapper"),"sa-var-manager");const c=document.createElement("input");c.placeholder=a("search"),c.className=e.tab.scratchClass("input_input-form",{others:"sa-var-manager-searchbox"}),c.addEventListener("input",e=>{for(const e of i)e.handleSearch(c.value);for(const e of s)e.handleSearch(c.value);M()}),o.appendChild(c);const l=document.createElement("div"),d=document.createElement("span"),u=document.createElement("table");d.className="sa-var-manager-heading",d.innerText=a("for-this-sprite"),l.appendChild(d),l.appendChild(u);const g=document.createElement("div"),h=document.createElement("span"),p=document.createElement("table");h.className="sa-var-manager-heading",h.innerText=a("for-all-sprites"),g.appendChild(h),g.appendChild(p),o.appendChild(l),o.appendChild(g);const b=document.createElement("li");e.tab.displayNoneWhileDisabled(b,{display:"flex"}),b.classList.add(e.tab.scratchClass("react-tabs_react-tabs__tab"),e.tab.scratchClass("gui_tab")),b.id="react-tabs-sa-variable-manager";const m=document.createElement("img");m.draggable=!1,m.src=e.self.getResource("/icon.svg");const v=document.createElement("span");function M(){let e=i.filter(e=>"none"!==e.row.style.display),t=s.filter(e=>"none"!==e.row.style.display);d.style.display=0===e.length?"none":"",h.style.display=0===t.length?"none":""}v.innerText=a("variables"),b.appendChild(m),b.appendChild(v);const I=new WeakMap,x=new IntersectionObserver(e=>{for(const t of e){I.get(t.target).setVisible(t.isIntersecting)}},{rootMargin:"100px"});class E{constructor(e,t){this.scratchVariable=e,this.target=t,this.visible=!1,this.ignoreTooBig=!1,this.buildDOM()}updateValue(e){if(!this.visible&&!e)return;let t,a;if("list"===this.scratchVariable.type?(t=this.scratchVariable.value.join("\n"),a=5e6):(t=this.scratchVariable.value,a=1e6),!this.ignoreTooBig&&t.length>a)return this.input.value="",void(this.row.dataset.tooBig=!0);this.row.dataset.tooBig=!1,t!==this.input.value&&(this.input.disabled=!1,this.input.value=t)}handleSearch(e){this.scratchVariable.name.toLowerCase().includes(e.toLowerCase())||!e?(this.row.style.display="",this.updateValue(!0)):this.row.style.display="none"}resizeInputIfList(){if("list"===this.scratchVariable.type){this.input.style.height="auto";const e=Math.min(1e3,this.input.scrollHeight);e>0&&(this.input.style.height=e+"px")}}setVisible(e){this.visible!==e&&(this.visible=e,e&&this.updateValue())}buildDOM(){const e="sa-variable-manager-".concat(this.scratchVariable.id),t=document.createElement("tr");this.row=t;const i=document.createElement("td");i.className="sa-var-manager-name";const s=document.createElement("input");s.value=this.scratchVariable.name,s.htmlFor=e;s.addEventListener("keydown",e=>{"Enter"===e.key&&e.target.blur()}),s.addEventListener("focusout",e=>{e.preventDefault();const t=Blockly.getMainWorkspace();let a=s.value;if(a===this.scratchVariable.name)return;this.scratchVariable.isCloud&&(a.startsWith("☁")?a.startsWith("☁ ")||(a=a.substring(0,1)+" "+a.substring(1)):a="☁ "+a);let i=!1;if(this.target.isStage){i=n.runtime.getAllVarNamesOfType(this.scratchVariable.type).includes(a)}else i=!!t.getVariable(a,this.scratchVariable.type);!a.trim()||i?s.value=this.scratchVariable.name:(t.renameVariableById(this.scratchVariable.id,a),s.value!==a&&(s.value=a))}),s.addEventListener("focus",e=>{r=!0,o.classList.add("freeze")}),s.addEventListener("blur",e=>{r=!1,o.classList.remove("freeze")}),i.appendChild(s),I.set(t,this),x.observe(t);const l=document.createElement("td");l.className="sa-var-manager-value";const d=document.createElement("button");let u;this.tooBigElement=d,d.textContent=a("too-big"),d.className="sa-var-manager-too-big",d.addEventListener("click",()=>{this.ignoreTooBig=!0,this.updateValue(!0)}),u="list"===this.scratchVariable.type?document.createElement("textarea"):document.createElement("input"),u.className="sa-var-manager-value-input",u.id=e,this.input=u,this.updateValue(!0),"list"===this.scratchVariable.type&&this.input.addEventListener("input",()=>this.resizeInputIfList(),!1);u.addEventListener("keydown",e=>{"INPUT"===e.target.nodeName&&"Enter"===e.key&&e.target.blur()}),u.addEventListener("focusout",e=>{e.preventDefault(),"list"===this.scratchVariable.type?n.setVariableValue(this.target.id,this.scratchVariable.id,u.value.split("\n")):n.setVariableValue(this.target.id,this.scratchVariable.id,u.value),u.blur()}),u.addEventListener("focus",e=>{r=!0,o.classList.add("freeze")}),u.addEventListener("blur",e=>{r=!1,o.classList.remove("freeze")}),l.appendChild(u),l.appendChild(d),t.appendChild(i),t.appendChild(l),this.handleSearch(c.value)}}function A(){var t,a,o;if(3!==(null===(t=e.tab.redux.state)||void 0===t||null===(a=t.scratchGui)||void 0===a||null===(o=a.editorTab)||void 0===o?void 0:o.activeTabIndex)||r)return;const c=n.runtime.getEditingTarget(),l=n.runtime.getTargetForStage();for(i=c.isStage?[]:Object.values(c.variables).filter(e=>""===e.type||"list"===e.type).map(e=>new E(e,c)),s=Object.values(l.variables).filter(e=>""===e.type||"list"===e.type).map(e=>new E(e,l)),M();u.firstChild;)u.removeChild(u.firstChild);for(;p.firstChild;)p.removeChild(p.firstChild);for(const e of i)u.appendChild(e.row),e.resizeInputIfList();for(const e of s)p.appendChild(e.row),e.resizeInputIfList()}function y(t){if(t){b.classList.add(e.tab.scratchClass("react-tabs_react-tabs__tab--selected"),e.tab.scratchClass("gui_is-selected"));document.querySelector("[class^=gui_tabs]").insertAdjacentElement("beforeend",o),A()}else b.classList.remove(e.tab.scratchClass("react-tabs_react-tabs__tab--selected"),e.tab.scratchClass("gui_is-selected")),o.remove(),i=[],s=[]}b.addEventListener("click",t=>{e.tab.redux.dispatch({type:"scratch-gui/navigation/ACTIVATE_TAB",activeTabIndex:3})}),e.tab.redux.initialize(),e.tab.redux.addEventListener("statechanged",({detail:t})=>{"scratch-gui/navigation/ACTIVATE_TAB"===t.action.type?y(3===t.action.activeTabIndex):"scratch-gui/mode/SET_PLAYER"===t.action.type&&(t.action.isPlayerOnly||3!==e.tab.redux.state.scratchGui.editorTab.activeTabIndex||queueMicrotask(()=>y(!0)))}),n.runtime.on("PROJECT_LOADED",()=>{try{A()}catch(e){t.error(e)}}),n.runtime.on("TOOLBOX_EXTENSIONS_NEED_UPDATE",()=>{try{A()}catch(e){t.error(e)}});const f=n.runtime._step;for(n.runtime._step=function(...a){const n=f.call(this,...a);try{!function(){var t,a,n;if(3===(null===(t=e.tab.redux.state)||void 0===t||null===(a=t.scratchGui)||void 0===a||null===(n=a.editorTab)||void 0===n?void 0:n.activeTabIndex)&&!r){for(const e of i)e.updateValue();for(const e of s)e.updateValue()}}()}catch(e){t.error(e)}return n},e.self.addEventListener("disabled",()=>{3===e.tab.redux.state.scratchGui.editorTab.activeTabIndex&&e.tab.redux.dispatch({type:"scratch-gui/navigation/ACTIVATE_TAB",activeTabIndex:2})});;)await e.tab.waitForElement("[class^='react-tabs_react-tabs__tab-list']",{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"],reduxCondition:e=>!e.scratchGui.mode.isPlayerOnly}),e.tab.appendToSharedSpace({space:"afterSoundTab",element:b,order:3})},"style.css":a.n(n).a,"icon.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0iI0ZGNEM0QyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNC42NDkgMy4wODRBMSAxIDAgMCAxIDUuMTYzIDQuNCAxMy45NSAxMy45NSAwIDAgMCA0IDEwYzAgMS45OTMuNDE2IDMuODg2IDEuMTY0IDUuNmExIDEgMCAwIDEtMS44MzIuOEExNS45NSAxNS45NSAwIDAgMSAyIDEwYzAtMi4yNzQuNDc1LTQuNDQgMS4zMzItNi40YTEgMSAwIDAgMSAxLjMxNy0uNTE2ek0xMi45NiA3YTMgMyAwIDAgMC0yLjM0MiAxLjEyNmwtLjMyOC40MS0uMTExLS4yNzlBMiAyIDAgMCAwIDguMzIzIDdIOGExIDEgMCAwIDAgMCAyaC4zMjNsLjUzMiAxLjMzLTEuMDM1IDEuMjk1YTEgMSAwIDAgMS0uNzgxLjM3NUg3YTEgMSAwIDEgMCAwIDJoLjAzOWEzIDMgMCAwIDAgMi4zNDItMS4xMjZsLjMyOC0uNDEuMTExLjI3OUEyIDIgMCAwIDAgMTEuNjc3IDE0SDEyYTEgMSAwIDEgMCAwLTJoLS4zMjNsLS41MzItMS4zMyAxLjAzNS0xLjI5NUExIDEgMCAwIDEgMTIuOTYxIDlIMTNhMSAxIDAgMSAwIDAtMmgtLjAzOXptMS44NzQtMi42YTEgMSAwIDAgMSAxLjgzMy0uOEExNS45NSAxNS45NSAwIDAgMSAxOCAxMGMwIDIuMjc0LS40NzUgNC40NC0xLjMzMiA2LjRhMSAxIDAgMSAxLTEuODMyLS44QTEzLjk0OSAxMy45NDkgMCAwIDAgMTYgMTBjMC0xLjk5My0uNDE2LTMuODg2LTEuMTY1LTUuNnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPgo=","search.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0eiIgZmlsbD0iI0QzRDNEMyIvPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48L3N2Zz4="}}}]); \ No newline at end of file diff --git a/js/addon-entry-vol-slider.9b31e15473d56cd57713.js b/js/addon-entry-vol-slider.9b31e15473d56cd57713.js new file mode 100644 index 0000000..eb9f993 --- /dev/null +++ b/js/addon-entry-vol-slider.9b31e15473d56cd57713.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[55],{1703:function(M,I,N){var g=N(209);(M.exports=N(9)(!1)).push([M.i,'.sa-vol-slider {\n /* Same lateral padding as .clone-container-container */\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n display: flex;\n align-items: center;\n}\n\n.sa-vol-slider-icon {\n width: 20px;\n height: 20px;\n background-repeat: no-repeat;\n}\n.sa-vol-slider-icon[data-icon="mute"] {\n background-image: url('+g(N(1704))+');\n}\n.sa-vol-slider-icon[data-icon="quiet"] {\n background-image: url('+g(N(1705))+');\n}\n.sa-vol-slider-icon[data-icon="loud"] {\n background-image: url('+g(N(1706))+');\n}\n\n.sa-vol-slider-small .sa-vol-slider-input,\n.sa-vol-slider-small .sa-vol-slider-icon:not([data-icon="mute"]) {\n display: none;\n}\n\n.sa-vol-slider-input {\n -webkit-appearance: none;\n appearance: none;\n width: 50px;\n height: 6px;\n border-radius: 3px;\n background-color: #de91de;\n margin-left: 3px;\n}\n\n.sa-vol-slider-input::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background-color: #cf63cf;\n}\n\n.sa-vol-slider-input::-moz-range-thumb {\n width: 12px;\n height: 12px;\n border: none;\n border-radius: 50%;\n background-color: #cf63cf;\n}\n\n/* TW: Hide mute-project icon. Upstream this is a conditional stylesheet in mute-project but those don\'t work well for us. */\n.sa-mute-project-icon {\n display: none !important;\n}\n',""])},1704:function(M,I,N){M.exports=N.p+"static/assets/e21225ab4b675bc61eed30cfb510c288.svg"},1705:function(M,I,N){M.exports=N.p+"static/assets/3547fa1f2678a483a19f46852f36b426.svg"},1706:function(M,I,N){M.exports=N.p+"static/assets/b2c44c738c9cbc1a99cd6edfd0c2b85b.svg"},1764:function(M,I,N){"use strict";N.r(I),N.d(I,"resources",(function(){return a}));var g=N(1646),c=N(1703);const a={"userscript.js":async function({addon:M,console:I}){const N=M.tab.traps.vm;Object(g.g)(N);const c=document.createElement("div");c.className="sa-vol-slider-icon",c.addEventListener("click",()=>{Object(g.d)(!Object(g.b)())});Object(g.c)(()=>{const M=Object(g.a)();c.dataset.icon=0==M?"mute":M<.5?"quiet":"loud"});const a=document.createElement("input");a.className="sa-vol-slider-input",a.type="range",a.min=0,a.max=1,a.step=.02,a.addEventListener("input",M=>{Object(g.f)(+M.target.value)}),a.addEventListener("change",M=>{Object(g.b)()||Object(g.e)(Object(g.a)())}),Object(g.c)(()=>{const M=Object(g.a)();M!==+a.value&&(a.value=M)}),Object(g.f)(M.settings.get("defVol")/100);const j=document.createElement("div");for(j.className="sa-vol-slider",j.appendChild(c),j.appendChild(a),M.tab.displayNoneWhileDisabled(j,{display:"flex"}),M.tab.redux.state&&"small"===M.tab.redux.state.scratchGui.stageSize.stageSize&&document.body.classList.add("sa-vol-slider-small"),document.addEventListener("click",M=>{M.target.closest("[class*='stage-header_stage-button-first']")?document.body.classList.add("sa-vol-slider-small"):M.target.closest("[class*='stage-header_stage-button-last']")&&document.body.classList.remove("sa-vol-slider-small")},{capture:!0}),M.self.addEventListener("disabled",()=>{Object(g.f)(1)}),M.self.addEventListener("reenabled",()=>{Object(g.f)(M.settings.get("defVol")/100)});;)await M.tab.waitForElement("[class^='green-flag_green-flag']",{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"]}),M.tab.displayNoneWhileDisabled(j,{display:"flex"}),M.tab.appendToSharedSpace({space:"afterStopButton",element:j,order:0})},"userstyle.css":N.n(c).a,"loud.svg":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjIwcHgiIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDIwIDIwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA0OC4yICg0NzMyNykgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+bG91bmRlcjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJsb3VuZGVyIj4KICAgICAgICAgICAgPGcgaWQ9ImxvdWRlciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMi4wMDAwMDAsIDQuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNi43MDQxLDIuMTIyMSBMNi43MDQxLDEwLjUzNjEgQzYuNzA0MSwxMC44ODUxIDYuNDIyMSwxMS4xNjcxIDYuMDc0MSwxMS4xNjcxIEw0Ljg5NzEsMTEuMTY3MSBDNC42MjUxLDExLjE2NzEgNC4zODMxLDEwLjk5MjEgNC4yOTgxLDEwLjczMjEgQzMuODE4MSw5LjI2ODEgMi40NTIxLDguMjc4MSAwLjkxMTEsOC4yNzgxIEwwLjYzMTEsOC4yNzgxIEMwLjI4NDEsOC4yNzgxIDAuMDAwMSw3Ljk5NDEgMC4wMDAxLDcuNjQ3MSBMMC4wMDAxLDUuMDExMSBDMC4wMDAxLDQuNjY0MSAwLjI4NDEsNC4zODAxIDAuNjMxMSw0LjM4MDEgTDAuOTExMSw0LjM4MDEgQzIuNDUyMSw0LjM4MDEgMy44MTgxLDMuMzkwMSA0LjI5ODEsMS45MjYxIEM0LjM4MzEsMS42NjYxIDQuNjI1MSwxLjQ5MTEgNC44OTcxLDEuNDkxMSBMNi4wNzQxLDEuNDkxMSBDNi40MjIxLDEuNDkxMSA2LjcwNDEsMS43NzMxIDYuNzA0MSwyLjEyMjEiIGlkPSJGaWxsLTEiIGZpbGw9IiNDRjYzQ0YiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik05LjExNzIsNS4yMTI5IEM5LjcyOTIsNS44MjU5IDkuNzI5Miw2LjgzMTkgOS4xMTcyLDcuNDQ0OSIgaWQ9IlN0cm9rZS0zIiBzdHJva2U9IiNDRjYzQ0YiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4zNDg2LDIuOTgxNSBDMTMuMTk2Niw0LjgyOTUgMTMuMTk2Niw3LjgyOTUgMTEuMzQ4Niw5LjY3NjUiIGlkPSJTdHJva2UtNSIgc3Ryb2tlPSIjQ0Y2M0NGIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTMuNTgsMC43NTAxIEMxNi42NjMsMy44MzIxIDE2LjY2Myw4LjgyNjEgMTMuNTgsMTEuOTA4MSIgaWQ9IlN0cm9rZS03IiBzdHJva2U9IiNDRjYzQ0YiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+","mute.svg":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjBweCIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIDAgMjAgMjAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDU1LjIgKDc4MTgxKSAtIGh0dHBzOi8vc2tldGNoYXBwLmNvbSAtLT4KICAgIDx0aXRsZT5Tb3VuZC9FZmZlY3RzL011dGU8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iU291bmQvRWZmZWN0cy9NdXRlIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8cGF0aCBmaWxsPSIjQ0Y2M0NGIiBkPSJNMTMuNDU0MTc0OSw1LjA0ODE1MjQzIEwxNS42MjgxMTY4LDIuODc0MjEwNTQgQzE1LjkyMTAxLDIuNTgxMzE3MzIgMTYuMzk1ODgzNywyLjU4MTMxNzMyIDE2LjY4ODc3NywyLjg3NDIxMDU0IEMxNi45ODE2NzAyLDMuMTY3MTAzNzYgMTYuOTgxNjcwMiwzLjY0MTk3NzQ5IDE2LjY4ODc3NywzLjkzNDg3MDcxIEw0LjUzMDMzMDA5LDE2LjA5MzMxNzYgQzQuMjM3NDM2ODcsMTYuMzg2MjEwOCAzLjc2MjU2MzEzLDE2LjM4NjIxMDggMy40Njk2Njk5MSwxNi4wOTMzMTc2IEMzLjE3Njc3NjcsMTUuODAwNDI0NCAzLjE3Njc3NjcsMTUuMzI1NTUwNiAzLjQ2OTY2OTkxLDE1LjAzMjY1NzQgTDYuMzEyMTQ5MzIsMTIuMTkwMTc4IEM2LjEyNDExOTEsMTIuMDYyMTM3OSA2LDExLjg0NjMzMzEgNiwxMS42MDI5ODc1IEw2LDguNjM3NDg3NSBDNiw4LjI0NzExMjUgNi4zMTk0MTUyNyw3LjkyNzYxMjUgNi43MDk2ODY3NSw3LjkyNzYxMjUgTDcuMDI0NjAzMjIsNy45Mjc2MTI1IEM4Ljc1Nzc2ODQ4LDcuOTI3NjEyNSAxMC4yOTQxMTEsNi44MTM4NjI1IDEwLjgzMzk2NzgsNS4xNjY4NjI1IEMxMC45Mjk1Njc0LDQuODc0MzYyNSAxMS4yMDE3NDUyLDQuNjc3NDg3NSAxMS41MDc2NjQxLDQuNjc3NDg3NSBMMTIuODMxNDM3OSw0LjY3NzQ4NzUgQzEzLjEwMDI4NDQsNC42Nzc0ODc1IDEzLjMzNDEwNzUsNC44MjcxNzIwOCAxMy40NTQxNzQ5LDUuMDQ4MTUyNDMgWiBNMTMuNTQsOS4wODM2NDc3MSBMMTMuNTQsMTQuODUzMTEyNSBDMTMuNTQsMTUuMjQ1NzM3NSAxMy4yMjI4MzQxLDE1LjU2Mjk4NzUgMTIuODMxNDM3OSwxNS41NjI5ODc1IEwxMS41MDc2NjQxLDE1LjU2Mjk4NzUgQzExLjIwMTc0NTIsMTUuNTYyOTg3NSAxMC45Mjk1Njc0LDE1LjM2NjExMjUgMTAuODMzOTY3OCwxNS4wNzM2MTI1IEMxMC41NzczNzg1LDE0LjI5MDgwNzcgMTAuMDk1NjgxMywxMy42Mjg0NjUgOS40NzQ3MzUzMSwxMy4xNDg5MTI0IEwxMy41NCw5LjA4MzY0NzcxIFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+Cg==","quiet.svg":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjIwcHgiIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDIwIDIwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA0OC4yICg0NzMyNykgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+aWNvbi0tc29mdGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+PC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNvZnRlciI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUuMDAwMDAwLCA0LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTcuNTQwMTEyNDYsMS4zODczNjI1IEw3LjU0MDExMjQ2LDEwLjg1MzExMjUgQzcuNTQwMTEyNDYsMTEuMjQ1NzM3NSA3LjIyMjk0NjU5LDExLjU2Mjk4NzUgNi44MzE1NTA0MSwxMS41NjI5ODc1IEw1LjUwNzc3NjU1LDExLjU2Mjk4NzUgQzUuMjAxODU3NywxMS41NjI5ODc1IDQuOTI5Njc5OSwxMS4zNjYxMTI1IDQuODM0MDgwMjYsMTEuMDczNjEyNSBDNC4yOTQyMjM0Niw5LjQyNjYxMjUgMi43NTc4ODA5OCw4LjMxMjg2MjUgMS4wMjQ3MTU3Miw4LjMxMjg2MjUgTDAuNzA5Nzk5MjUxLDguMzEyODYyNSBDMC4zMTk1Mjc3NzMsOC4zMTI4NjI1IDAuMDAwMTEyNSw3Ljk5MzM2MjUgMC4wMDAxMTI1LDcuNjAyOTg3NSBMMC4wMDAxMTI1LDQuNjM3NDg3NSBDMC4wMDAxMTI1LDQuMjQ3MTEyNSAwLjMxOTUyNzc3MywzLjkyNzYxMjUgMC43MDk3OTkyNTEsMy45Mjc2MTI1IEwxLjAyNDcxNTcyLDMuOTI3NjEyNSBDMi43NTc4ODA5OCwzLjkyNzYxMjUgNC4yOTQyMjM0NiwyLjgxMzg2MjUgNC44MzQwODAyNiwxLjE2Njg2MjUgQzQuOTI5Njc5OSwwLjg3NDM2MjUgNS4yMDE4NTc3LDAuNjc3NDg3NSA1LjUwNzc3NjU1LDAuNjc3NDg3NSBMNi44MzE1NTA0MSwwLjY3NzQ4NzUgQzcuMjIyOTQ2NTksMC42Nzc0ODc1IDcuNTQwMTEyNDYsMC45OTQ3Mzc1IDcuNTQwMTEyNDYsMS4zODczNjI1IiBpZD0iRmlsbC0xIiBmaWxsPSIjQ0Y2M0NGIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOS4yNSw0Ljg2NDUxMjUgQzkuOTM4NSw1LjU1NDEzNzUgOS45Mzg1LDYuNjg1ODg3NSA5LjI1LDcuMzc1NTEyNSIgaWQ9IlN0cm9rZS0zIiBzdHJva2U9IiNDRjYzQ0YiIHN0cm9rZS13aWR0aD0iMS43NSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="}}}]); \ No newline at end of file diff --git a/js/addon-entry-zebra-striping.ccb2531052686c9c0d95.js b/js/addon-entry-zebra-striping.ccb2531052686c9c0d95.js new file mode 100644 index 0000000..696fed6 --- /dev/null +++ b/js/addon-entry-zebra-striping.ccb2531052686c9c0d95.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[56],{1717:function(e,t,r){(e.exports=r(9)(!1)).push([e.i,':root {\n --zebraStriping-percent: calc(var(--zebraStriping-shadeNumber) * var(--zebraStriping-intensity) / 100);\n --zebraStriping-bright: calc(1 + var(--zebraStriping-percent));\n --zebraStriping-saturate: calc(1 - var(--zebraStriping-percent));\n --zebraStriping-filter: brightness(var(--zebraStriping-bright)) saturate(var(--zebraStriping-saturate));\n /* "Temporary" value, gets replaced by userscript */\n --zebraStriping-replacementGlow: url(#blocklyReplacementGlowFilter);\n}\n\n.sa-zebra-stripe {\n filter: var(--zebraStriping-filter);\n}\n\n.sa-zebra-stripe[filter*="#blocklyReplacementGlowFilter"] {\n filter: var(--zebraStriping-filter) var(--zebraStriping-replacementGlow);\n}\n\n/* editor-stepping and debugger compatibility */\n/* this is pretty horrible */\n.sa-zebra-stripe[style*="#sa_glower_filter0"] {\n /* !important because editor-stepping Highlighter uses inline styles */\n filter: var(--zebraStriping-filter) url("#sa_glower_filter0") !important;\n}\n.sa-zebra-stripe[style*="#sa_glower_filter1"] {\n filter: var(--zebraStriping-filter) url("#sa_glower_filter1") !important;\n}\n',""])},1791:function(e,t,r){"use strict";r.r(t),r.d(t,"resources",(function(){return n}));var i=r(1717);const n={"userscript.js":async function({addon:e,msg:t,console:r}){const i=e.tab.traps.vm,n=await e.tab.traps.getBlockly(),a=n.BlockSvg.prototype.render;for(n.BlockSvg.prototype.render=function(e){if(!this.isInFlyout&&!this.isShadow()&&null===this.getParent()){const e=new Map;for(const t of this.getDescendants()){const r=t.getSurroundParent();let i=!1;r&&(t.isShadow()?i=!!e.get(r):r.getColour()===t.getColour()&&(i=!e.get(r))),e.set(t,i);const n=[t.svgPath_];for(const e of t.inputList){e.outlinePath&&n.push(e.outlinePath);for(const t of e.fieldRow)t.fieldGroup_&&n.push(t.fieldGroup_)}for(const e of n)e.classList.toggle("sa-zebra-stripe",i)}}return a.call(this,e)},i.editingTarget&&i.emitWorkspaceUpdate();;){const t=await e.tab.waitForElement('filter[id*="blocklyReplacementGlowFilter"]',{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"],reduxCondition:e=>!e.scratchGui.mode.isPlayerOnly});document.documentElement.style.setProperty("--zebraStriping-replacementGlow","url(#".concat(t.id,")"))}},"userstyle.css":r.n(i).a}}}]); \ No newline at end of file diff --git a/js/addon-l10n-de.e710a53e85ecc91e299a.js b/js/addon-l10n-de.e710a53e85ecc91e299a.js new file mode 100644 index 0000000..d7b4fd9 --- /dev/null +++ b/js/addon-l10n-de.e710a53e85ecc91e299a.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[57],{1668:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"Blöcke aufräumen +","editor-devtools/copy-all":"Alle Kopieren","editor-devtools/copy-block":"Kopieren","editor-devtools/cut-block":"Ausschneiden","editor-devtools/lists":"Listen","editor-devtools/make-space":"Platz machen","editor-devtools/orphaned":"{count, plural, one {1 alleinstehenden Variablenblock löschen?} other {# alleinstehende Variablenblöcke löschen?} }","editor-devtools/paste":"Einfügen","editor-devtools/replace":"Alle {name} in dieser Figur austauschen mit der Variable namens:","editor-devtools/swap":"{var} in dieser Figur austauschen","editor-devtools/unused-list":"{count, plural, one {1 unbenutzte lokale Liste entfernen? Hier ist sie:\\n} other {# unbenutzte lokale Listen entfernen? Hier sind sie:\\n} }","editor-devtools/unused-var":"{count, plural, one {1 unbenutzte lokale Variable löschen? Hier ist sie:\\n} other {# unbenutzte lokale Variablen löschen? Hier sind sie:\\n} }","editor-devtools/var-not-exist":"Diese Variable existiert nicht...","editor-devtools/variables":"Variablen","find-bar/complex-broadcast":"(Parameter)","find-bar/find-placeholder":"Finden (Strg+F)","middle-click-popup/start-typing":"Beginne mit der EIngabe...","editor-searchable-dropdowns/createBroadcast":"Nachricht „{name}“ erstellen","editor-searchable-dropdowns/createGlobalList":"Liste „{name}“ für alle Figuren erstellen","editor-searchable-dropdowns/createGlobalVariable":"Variable „{name}“ für alle Figuren erstellen","editor-searchable-dropdowns/createLocalList":"Liste „{name}“ nur für diese Figur erstellen","editor-searchable-dropdowns/createLocalVariable":"Variable „{name}“ nur für diese Figur erstellen","data-category-tweaks-v2/for-all-sprites":"Für alle Figuren:","data-category-tweaks-v2/for-this-sprite-only":"Nur für diese Figur:","data-category-tweaks-v2/list-category":"Listen","hide-flyout/lock":"Palette fixieren","hide-flyout/unlock":"Palette loslösen","mediarecorder/cancel":"Abbrechen","mediarecorder/click-flag":"Warte...","mediarecorder/click-flag-description":"Klicke die Grüne Flagge, um die Aufnahme zu starten. Klicke auf diesen Button, um sie zu beenden.","mediarecorder/option-title":"Aufnahmeoptionen","mediarecorder/record":"Aufnehmen","mediarecorder/record-after-flag":"Aufnahme erst starten, wenn die Grüne Flagge angeklickt wird","mediarecorder/record-audio":"Projektklänge einschließen","mediarecorder/record-audio-description":"Dies schließt Text zu Sprache nicht ein.","mediarecorder/record-description":"Die Bühne als WebM-Datei aufnehmen. Du kannst sie nach der Aufnahme auf deinem Computer speichern.\\nAnmerkung: Variablen- und Listenanzeigen werden im Video nicht sichtbar sein.","mediarecorder/record-duration":"Aufnahmedauer (in Sekunden)","mediarecorder/record-mic":"Mikrofonklänge einschließen","mediarecorder/record-until-stop":"Aufnahme anhalten, wenn das Projekt gestoppt wird","mediarecorder/record-until-stop-disabled":"Du musst \\"{afterFlagOption}\\" aktivieren um diese Option zu verwenden.","mediarecorder/start":"Starten","mediarecorder/start-delay":"Startverzögerung (in Sekunden)","mediarecorder/starting-in":"Startet in {secs}...","mediarecorder/stop":"Aufnahme stoppen","debugger/block-breakpoint":"unterbrechen","debugger/block-error":"schreibe Fehler %s im Log","debugger/block-log":"schreibe %s im Log","debugger/block-warn":"schreibe Warnung %s im Log","debugger/cannot-pause-player":"Der \\"unterbrechen\\"-Block kann nur im Editor verwendet werden.","debugger/clear":"Löschen","debugger/clone-of":"Klon von {sprite}","debugger/close":"Schließen","debugger/debug":"Debuggen","debugger/empty-string":"(leerer Text)","debugger/enter-format":"Exportformat eingeben:","debugger/export":"Exportieren","debugger/export-desc":"Halte die Umschalttaste während dem Klicken gedrückt, um das Exportformat anzupassen.","debugger/icon-error":"Fehler","debugger/icon-warn":"Warnung","debugger/log-msg-broadcasted":"Nachricht \'{broadcast}\' gesendet.","debugger/log-msg-clone-cap":"Klonen von \'{sprite}\' fehlgeschlagen, es können nicht mehr als 300 Klone erzeugt werden.","debugger/log-msg-clone-created":"\'{sprite}\' geklont.","debugger/log-msg-flag-clicked":"Grüne Flagge angeklickt.","debugger/no-logs":"Es gibt keine Logs zum Anzeigen.","debugger/no-threads-running":"Es werden momentan keine Threads ausgeführt.","debugger/step":"Schritt","debugger/step-desc":"Führt einen Block aus.","debugger/unknown-sprite":"(unbekannte Figur)","debugger/unpause":"Fortsetzen","clones/clones":"Klone: {cloneCount}","color-picker/hex":"Hexadezimal-Farbe","remove-sprite-confirm/confirm":"Möchtest du diese Figur löschen?","block-count/blocks":"{num, plural, one {1 Block} other {# Blöcke}}","onion-skinning/behind":"Hinten","onion-skinning/front":"Vorne","onion-skinning/layering":"Schichtung","onion-skinning/merge":"Mischen","onion-skinning/mode":"Modus","onion-skinning/next":"Nächstes Kostüm","onion-skinning/opacity":"Transparenz (%)","onion-skinning/opacityStep":"Transparenz-Abstufung (%)","onion-skinning/previous":"Vorheriges Kostüm","onion-skinning/settings":"Einstellungen für Onion Skinning","onion-skinning/tint":"Färbung","onion-skinning/toggle":"Onion Skinning umschalten","paint-snap/boxCenter":"Auswahlmitte","paint-snap/boxCorners":"Auswahlecken","paint-snap/boxEdgeMids":"Mittelpunkte von Auswahlrändern","paint-snap/objectCenters":"Objektmitten","paint-snap/objectCorners":"Objektecken","paint-snap/objectEdges":"Objektecken","paint-snap/objectMidlines":"Objektmittellinien","paint-snap/off":"Aus","paint-snap/on":"Ein","paint-snap/pageAxes":"X- und Y- Achsen der Seite ","paint-snap/pageCenter":"Seitenmitte","paint-snap/pageCorners":"Seitenecken","paint-snap/pageEdges":"Seitenrand","paint-snap/settings":"Einstellungen für Einrasten","paint-snap/snapFrom":"Einrasten von:","paint-snap/snapTo":"Einrasten an:","paint-snap/threshold":"Einrasteabstand","paint-snap/toggle":"Einrasten umschalten","2d-color-picker/shade":"Schattieren","better-img-uploads/upload":"In HD hochalden","variable-manager/for-all-sprites":"Variablen für alle Figuren","variable-manager/for-this-sprite":"Variablen für diese Figur","variable-manager/search":"Suchen","variable-manager/too-big":"Klicke hier, um diesen langen Wert anzuzeigen.","variable-manager/variables":"Variablen","search-sprites/placeholder":"Figuren suchen","sprite-properties/close-properties-panel-tooltip":"Eigenschaften schließen","sprite-properties/open-properties-panel-tooltip":"Eigenschaften öffnen","gamepad/axes-a-b":"Achsen {a} & {b}","gamepad/axis-arrows":"Pfeiltasten","gamepad/axis-custom":"Benutzerdefiniert","gamepad/axis-none":"Keine","gamepad/browser-support":"Dieser Browser und dieses Betriebssystem haben bekannte Bugs, die die Verwendung dieses Addons erschweren könnten. Versuche einen anderen Browser, falls du auf Probleme stößt.","gamepad/button-n":"Knopf {n}","gamepad/clear":"Alle Steuerungen löschen","gamepad/config-header":"Dieser Kommentar enthält die Konfiguration für Gamepad-Steuerung in Tools von Drittanbietern oder Websites wie https://turbowarp.org/\\nNicht eigenhändig bearbeiten","gamepad/key-click":"Klicken","gamepad/key-down":"Unten","gamepad/key-left":"Links","gamepad/key-none":"(keine)","gamepad/key-right":"Rechts","gamepad/key-space":"Leertaste","gamepad/key-up":"Oben","gamepad/keyinput-title":"Klicke und drücke eine Taste oder klicke, um Knopf zu wechseln. Drücke Esc zum abbrechen. Löschen oder Entf zum Löschen.","gamepad/no-controllers":"Keine Controller gefunden. Schließe einen an und drücke einen der Knöpfe.","gamepad/reset":"Alle Steuerungen zu Projektstandards zurücksetzen","gamepad/settings":"Gamepad-Einstellungen","gamepad/store-in-project":"Speichere diese Einstellungen im Projekt, um die Standardkonfiguration zu ersetzen (Experimentelles Werkzeug für Projektentwickler)","folders/add-to-folder":"zu Ordner \\"{folder}\\" hinzufügen","folders/closed-folder":"Ordner","folders/confirm-backpack-folder":"Den ganzen Ordner im Lager speichern?","folders/create-folder":"neuer Ordner","folders/name-not-allowed":"Ungültiger Ordnername","folders/name-prompt":"Ordnername:","folders/name-prompt-title":"Neuer Ordner","folders/open-folder":"Offen","folders/remove-folder":"Ordner entfernen","folders/remove-from-folder":"vom Ordner entfernen","folders/rename-folder":"Ordner umbenennen","folders/rename-folder-prompt":"Ordner umbenennen in:","folders/rename-folder-prompt-title":"Ordner umbenennen","block-switching/control_forever":"wiederhole fortlaufend","block-switching/control_if":"falls, dann","block-switching/control_if_else":"falls, dann... sonst","block-switching/control_repeat_until":"wiederhole bis","block-switching/control_wait_until":"warte bis","block-switching/data_changevariableby":"ändere Variable um","block-switching/data_hidelist":"verstecke Liste","block-switching/data_hidevariable":"verstecke Variable","block-switching/data_insertatlist":"füge Element ein","block-switching/data_replaceitemoflist":"ersetze Element","block-switching/data_setvariableto":"setze Variable auf","block-switching/data_showlist":"zeige Liste","block-switching/data_showvariable":"zeige Variable","block-switching/debugger_error":"Fehler im Log schreiben","block-switching/debugger_log":"im Log schreiben","block-switching/debugger_warn":"Warnung im Log schreiben","block-switching/event_broadcast":"sende an alle","block-switching/event_broadcastandwait":"sende an alle und warte","block-switching/looks_backdropnumbername":"Bühnenbildnummer oder -name","block-switching/looks_changeeffectby":"ändere Effekt um","block-switching/looks_changesizeby":"ändere Größe um","block-switching/looks_costumenumbername":"Kostümnummer oder -name","block-switching/looks_hide":"verstecke dich","block-switching/looks_nextbackdrop":"nächstes Bühnenbild","block-switching/looks_nextcostume":"nächstes Kostüm","block-switching/looks_say":"sage","block-switching/looks_sayforsecs":"sage für Sekunden","block-switching/looks_seteffectto":"setze Effekt auf","block-switching/looks_setsizeto":"setze Größe auf","block-switching/looks_show":"zeige dich","block-switching/looks_switchbackdropto":"wechsle zu Bühnenbild","block-switching/looks_switchbackdroptoandwait":"wechsle zu Bühnenbild und warte","block-switching/looks_think":"denke","block-switching/looks_thinkforsecs":"denke für Sekunden","block-switching/motion_changexby":"ändere x um","block-switching/motion_changeyby":"ändere y um","block-switching/motion_setx":"setze x auf","block-switching/motion_sety":"setze y auf","block-switching/motion_turnleft":"drehe dich nach links","block-switching/motion_turnright":"drehe dich nach rechts","block-switching/motion_xposition":"x-Position","block-switching/motion_yposition":"y-Position","block-switching/music_changeTempo":"ändere Tempo um","block-switching/music_setTempo":"setze Tempo auf","block-switching/operator_and":"und","block-switching/operator_or":"oder","block-switching/pen_changePenColorParamBy":"ändere Parameter","block-switching/pen_changePenHueBy":"ändere Farbton um","block-switching/pen_changePenShadeBy":"ändere Helligkeit um","block-switching/pen_changePenSizeBy":"ändere Größe um","block-switching/pen_penDown":"schalte Stift ein","block-switching/pen_penUp":"schalte Stift aus","block-switching/pen_setPenColorParamTo":"setze Parameter auf","block-switching/pen_setPenHueToNumber":"setze Farbton auf","block-switching/pen_setPenShadeToNumber":"setze Helligkeit auf","block-switching/pen_setPenSizeTo":"setze Größe auf","block-switching/sensing_mousex":"Maus-x-Position","block-switching/sensing_mousey":"Maus-y-Position","block-switching/sound_changeeffectby":"ändere Effekt um","block-switching/sound_changevolumeby":"ändere Lautstärke um","block-switching/sound_play":"Start","block-switching/sound_playuntildone":"spiele Klang ganz","block-switching/sound_seteffectto":"setze Effekt auf","block-switching/sound_setvolumeto":"setze Lautstärke auf","blocks2image/error_blocks_not_added":"Füge Blöcke zum Arbeitsbereich hinzu!","blocks2image/export_all_to_PNG":"Alle als PNG exportieren","blocks2image/export_all_to_SVG":"Alle als SVG exportieren","blocks2image/export_selected_to_PNG":"Exportiere Block als PNG","blocks2image/export_selected_to_SVG":"Block als SVG exportieren","editor-extra-keys/enter-key":"Enter","move-to-top-bottom/bottom":"an letzte Stelle verschieben","move-to-top-bottom/top":"an erste Stelle verschieben","rename-broadcasts/RENAME_BROADCAST":"Nachricht umbenennen","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"Nachricht umbenennen","rename-broadcasts/RENAME_BROADCAST_TITLE":"Alle \\"{name}\\"-Nachrichten umbenennen nach:","swap-local-global/cant-convert-cloud":"Cloudvariablen können nicht in nur für diese Figur umgewandelt werden.","swap-local-global/cant-convert-conflict":"Konnte nicht umwandeln, weil Konflikte mit Variablen in einer anderen Figur auftreten würden: {sprites}","swap-local-global/cant-convert-stage":"Die Bühne kann nicht Variablen nur für diese Figur haben.","swap-local-global/cant-convert-to-local":"Konnte nicht umwandeln, weil sie von mehreren Figuren verwendet wird: {sprites}","swap-local-global/cant-convert-used-elsewhere":"Konnte nicht umwandeln, weil sie von einer anderen Figur verwendet wird: {sprite}","swap-local-global/edit":"Eigenschaften bearbeiten:","swap-local-global/edit-list-header":"Liste bearbeiten","swap-local-global/edit-list-option":"Liste umbenennen oder bearbeiten","swap-local-global/edit-variable-header":"Variable bearbeiten","swap-local-global/edit-variable-option":"Variable bearbeiten oder umbenennen","swap-local-global/to-global":"In \\"Für alle Figuren\\" umwandeln","swap-local-global/to-local":"In \\"Nur für diese Figur\\" umwandeln","hide-stage/hide-stage":"Bühne ausblenden"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-es.46d7675ecea579fe345b.js b/js/addon-l10n-es.46d7675ecea579fe345b.js new file mode 100644 index 0000000..34bb86b --- /dev/null +++ b/js/addon-l10n-es.46d7675ecea579fe345b.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[58],{1669:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"Ordenar Bloques +","editor-devtools/copy-all":"Copiar Todos","editor-devtools/copy-block":"Copiar Bloque","editor-devtools/cut-block":"Cortar Bloque","editor-devtools/lists":"listas","editor-devtools/make-space":"Hacer Espacio","editor-devtools/orphaned":"{count, plural, one {Herramientas de desarrollador: ¿borrar 1 bloque reportero huérfano?} many {Herramientas de desarrollador: ¿borrar # bloques reporteros huérfanos?} other {Herramientas de desarrollador: ¿borrar # bloques reporteros huérfanos?} }","editor-devtools/paste":"Pegar","editor-devtools/replace":"Herramientas de desarrollador: cambiar todos los {name} en este objeto por la variable llamada:","editor-devtools/swap":"Intercambiar Variable {var} en Objeto","editor-devtools/unused-list":"{count, plural, one {Herramientas de desarrollador: ¿borrar 1 lista local sin usar? Esta es:\\n} many {Herramientas de desarrollador: ¿borrar # listas locales sin usar? Estas son:\\n} other {Herramientas de desarrollador: ¿borrar # listas locales sin usar? Estas son:\\n} }","editor-devtools/unused-var":"{count, plural, one {Herramientas de desarrollador: ¿borrar 1 variable local sin usar? Estas son:\\n} many {Herramientas de desarrollador: ¿borrar # variables locales sin usar? Estas son:\\n} other {Herramientas de desarrollador: ¿borrar # variables locales sin usar? Estas son:\\n} }","editor-devtools/var-not-exist":"Esa variable no existe..","find-bar/complex-broadcast":"(expresión)","find-bar/find-placeholder":"Buscar (Ctrl+F)","middle-click-popup/start-typing":"Empiece a escribir...","editor-searchable-dropdowns/createBroadcast":"Crear mensaje \\"{name}\\"","editor-searchable-dropdowns/createGlobalList":"Crear lista \\"{name}\\" para todos los objetos","editor-searchable-dropdowns/createGlobalVariable":"Crear variable \\"{name}\\" para todos los objetos","editor-searchable-dropdowns/createLocalList":"Crear lista \\"{name}\\" solo para este objeto","editor-searchable-dropdowns/createLocalVariable":"Crear variable \\"{name}\\" solo para este objeto","data-category-tweaks-v2/for-all-sprites":"Para todos los objetos:","data-category-tweaks-v2/for-this-sprite-only":"Solo para este objeto:","data-category-tweaks-v2/list-category":"Listas","hide-flyout/lock":"Bloquear Paleta","hide-flyout/unlock":"Desbloquear Paleta","mediarecorder/cancel":"Cancelar","mediarecorder/click-flag":"Esperando...","mediarecorder/click-flag-description":"Haga click en la bandera verde para empezar a grabar. Haga click en este botón para parar.","mediarecorder/option-title":"Opciones de grabación","mediarecorder/record-after-flag":"No empezar grabación hasta que haga click en la Bandera Verde","mediarecorder/record-audio":"Incluir sonidos del proyecto","mediarecorder/record-audio-description":"Esto no incluye Text-to-Speech.","mediarecorder/record-duration":"Duración (en segundos)","mediarecorder/record-mic":"Incluir sonidos del micrófono","mediarecorder/record-until-stop":"Parar grabación luego de que el proyecto se detenga","mediarecorder/record-until-stop-disabled":"Debes activar \\"{afterFlagOption}\\" para usar esta opción.","mediarecorder/start":"Empezar","mediarecorder/start-delay":"Demora para empezar (en segundos)","mediarecorder/starting-in":"Empezando en {secs}...","mediarecorder/stop":"Detener Grabación","debugger/block-log":"loguear","debugger/block-warn":"advertir %s","debugger/cannot-pause-player":"El bloque breakpoint solo se puede usar mientras esté en el editor.","debugger/clear":"Vaciar","debugger/clone-of":"Clon de {sprite}","debugger/close":"Cerrar","debugger/debug":"Depurar","debugger/empty-string":"(string vacío)","debugger/enter-format":"Ingrese formato de exportación:","debugger/export":"Exportar","debugger/export-desc":"Haga click mientras mantiene Shift para personalizar el formato de exportación.","debugger/icon-warn":"Advertencia","debugger/log-msg-broadcasted":"Mensaje enviado \'{broadcast}\'.","debugger/log-msg-clone-cap":"No se pudo crear clon de \'{sprite}\', no se pueden crear más de 300 clones.","debugger/log-msg-clone-created":"Se creo un clon de \'{sprite}\'.","debugger/log-msg-flag-clicked":"Bandera verde clickeada.","debugger/no-logs":"No hay logs para mostrar.","debugger/no-threads-running":"No hay hilos ejecutándose.","debugger/step":"Paso","debugger/step-desc":"Ejecuta un bloque.","debugger/tab-threads":"Hilos","debugger/thread":"Hilo {id}","debugger/unknown-sprite":"(objeto desconocido)","debugger/unpause":"Continuar","pause/pause":"Pausar","color-picker/hex":"color hex","remove-sprite-confirm/confirm":"¿Quiere borrar este objeto?","block-count/blocks":"{num, plural, one {1 bloques} many {# bloques} other {# bloques}}","onion-skinning/behind":"Detrás","onion-skinning/front":"Frente","onion-skinning/layering":"Método de superposición","onion-skinning/merge":"Combinar","onion-skinning/mode":"Modo","onion-skinning/next":"Disfraces siguientes","onion-skinning/opacity":"Opacidad (%)","onion-skinning/opacityStep":"Salto de opacidad (%)","onion-skinning/previous":"Disfraces anteriores","onion-skinning/settings":"Ajustes de Capa Sobre Capa","onion-skinning/tint":"Teñir","onion-skinning/toggle":"Activar/desactivar capa sobre capa","paint-snap/boxCenter":"Centro de selección","paint-snap/boxCorners":"Esquinas de selección","paint-snap/boxEdgeMids":"Seleccionar puntos medios de lados","paint-snap/objectCenters":"Centros de objetos","paint-snap/objectCorners":"Esquinas de objetos","paint-snap/objectEdges":"Lados de objetos","paint-snap/objectMidlines":"Líneas centrales de objetos","paint-snap/off":"Apagado","paint-snap/on":"Encendido","paint-snap/pageAxes":"Ejes x e y de la página","paint-snap/pageCenter":"Centro de la página","paint-snap/pageCorners":"Esquinas de la página","paint-snap/pageEdges":"Lados de la página","paint-snap/settings":"Configuración de ajuste de posición","paint-snap/snapFrom":"Ajustar desde:","paint-snap/snapTo":"Ajustar a:","paint-snap/threshold":"Distancia de ajuste","paint-snap/toggle":"Alternar activación del ajuste de posición","2d-color-picker/shade":"Tonalidad","better-img-uploads/upload":"Subida HD","variable-manager/for-all-sprites":"Variables para todos los objetos","variable-manager/for-this-sprite":"Variables para este objeto","variable-manager/search":"Buscar","search-sprites/placeholder":"Buscar objetos...","sprite-properties/close-properties-panel-tooltip":"Colapsar panel de propiedades","sprite-properties/open-properties-panel-tooltip":"Abrir panel de propiedades","gamepad/axes-a-b":"Ejes {a} y {b}","gamepad/axis-arrows":"Flechas del Teclado","gamepad/axis-custom":"Personalizado","gamepad/axis-none":"Ninguno","gamepad/browser-support":"Este navegador y sistema operativo tienen bugs conocidos que pueden causar que este addon sea difícil de usar. Pruebe otro navegador si encuentra problemas.","gamepad/button-n":"Botón {n}","gamepad/clear":"Borrar todos los controles","gamepad/config-header":"Este comentario contiene configuración de soporte de mando de videojuegos para herramientas de terceros o páginas web como https://turbowarp.org/\\nNo editar a mano","gamepad/key-down":"Abajo","gamepad/key-left":"Izquierda","gamepad/key-none":"(ninguno)","gamepad/key-right":"Derecha","gamepad/key-space":"Espacio","gamepad/key-up":"Arriba","gamepad/keyinput-title":"Haga click y presione una tecla para cambiar el botón. Esc para cancelar. Retroceso o Suprimir para borrar.","gamepad/no-controllers":"No se detectó ningún mando. Intente conectar uno y presionar cualquier botón de él.","gamepad/reset":"Restablecer todos los controles a los predeterminados del proyecto","gamepad/settings":"Ajustes del Mando","gamepad/store-in-project":"Guardar estos ajustes en el proyecto para reemplazar la configuración por defecto (herramienta experimental para creadores de proyectos)","folders/add-to-folder":"agregar a carpeta: {folder}","folders/closed-folder":"Carpeta","folders/confirm-backpack-folder":"¿Guardar carpeta entera en la mochila?","folders/create-folder":"crear carpeta","folders/name-not-allowed":"Nombre de carpeta inválido","folders/name-prompt":"Nombre de carpeta:","folders/name-prompt-title":"Crear Carpeta","folders/open-folder":"Abierta","folders/remove-folder":"quitar carpeta","folders/remove-from-folder":"quitar de carpeta","folders/rename-folder":"renombrar carpeta","folders/rename-folder-prompt":"Renombrar carpeta a:","folders/rename-folder-prompt-title":"Renombrar Carpeta","block-switching/control_forever":"por siempre","block-switching/control_if":"si","block-switching/control_if_else":"si... si no","block-switching/control_repeat_until":"repetir hasta que","block-switching/control_wait_until":"esperar hasta que","block-switching/data_changevariableby":"cambiar/sumar variable","block-switching/data_hidelist":"esconder lista","block-switching/data_hidevariable":"esconder variable","block-switching/data_insertatlist":"insertar elemento","block-switching/data_replaceitemoflist":"reemplazar elemento","block-switching/data_setvariableto":"establecer variable","block-switching/data_showlist":"mostrar lista","block-switching/data_showvariable":"mostrar variable","block-switching/debugger_log":"loguear","block-switching/debugger_warn":"advertir","block-switching/event_broadcast":"enviar","block-switching/event_broadcastandwait":"enviar y esperar","block-switching/looks_backdropnumbername":"número o nombre de fondo","block-switching/looks_changeeffectby":"cambiar/sumar efecto","block-switching/looks_changesizeby":"cambiar/sumar tamaño","block-switching/looks_costumenumbername":"número o nombre de disfraz","block-switching/looks_hide":"ocultar","block-switching/looks_nextbackdrop":"siguiente fondo","block-switching/looks_nextcostume":"siguiente disfraz","block-switching/looks_say":"decir","block-switching/looks_sayforsecs":"decir por segundos","block-switching/looks_seteffectto":"fijar efecto","block-switching/looks_setsizeto":"fijar tamaño","block-switching/looks_show":"mostrar","block-switching/looks_switchbackdropto":"cambiar fondo","block-switching/looks_switchbackdroptoandwait":"cambiar fondo y esperar","block-switching/looks_think":"pensar","block-switching/looks_thinkforsecs":"pensar por segundos","block-switching/motion_changexby":"cambiar/sumar x","block-switching/motion_changeyby":"cambiar/sumar y","block-switching/motion_setx":"fijar x","block-switching/motion_sety":"fijar y","block-switching/motion_turnleft":"girar a la izquierda","block-switching/motion_turnright":"girar a la derecha","block-switching/motion_xposition":"posición en x","block-switching/motion_yposition":"posición en y","block-switching/music_changeTempo":"cambiar tempo","block-switching/music_setTempo":"fijar tempo","block-switching/operator_and":"y","block-switching/operator_mod":"módulo","block-switching/operator_or":"o","block-switching/pen_changePenColorParamBy":"fijar parámetro","block-switching/pen_changePenHueBy":"cambiar/sumar matiz de color","block-switching/pen_changePenShadeBy":"cambiar/sumar sombra de color","block-switching/pen_changePenSizeBy":"cambiar/sumar tamaño","block-switching/pen_penDown":"bajar lápiz","block-switching/pen_penUp":"subir lápiz","block-switching/pen_setPenColorParamTo":"cambiar/sumar parámetro","block-switching/pen_setPenHueToNumber":"fijar matiz de color","block-switching/pen_setPenShadeToNumber":"fijar sombra de color","block-switching/pen_setPenSizeTo":"fijar tamaño","block-switching/sensing_mousex":"posición x del ratón","block-switching/sensing_mousey":"posición y del ratón","block-switching/sound_changeeffectby":"cambiar/sumar efecto","block-switching/sound_changevolumeby":"cambiar/sumar volumen","block-switching/sound_play":"iniciar","block-switching/sound_playuntildone":"tocar sonido hasta terminar","block-switching/sound_seteffectto":"fijar efecto","block-switching/sound_setvolumeto":"fijar volumen","blocks2image/error_blocks_not_added":"Agregue bloques al workspace","blocks2image/export_all_to_PNG":"Exportar todos como PNG","blocks2image/export_all_to_SVG":"Exportar todos como SVG","blocks2image/export_selected_to_PNG":"Exportar bloque como PNG","blocks2image/export_selected_to_SVG":"Exportar bloque como SVG","move-to-top-bottom/bottom":"mover al fondo","move-to-top-bottom/top":"movar a la cima","rename-broadcasts/RENAME_BROADCAST":"Renombrar mensaje","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"Renombrar Mensaje","rename-broadcasts/RENAME_BROADCAST_TITLE":"Renombrar todos los mensajes \\"{name}\\" a:","swap-local-global/cant-convert-cloud":"Variables en la nube no pueden ser convertidas a solo para este objeto","swap-local-global/cant-convert-conflict":"No se pudo convertir porque entraría en conflicto con variables en otro objeto: {sprites}","swap-local-global/cant-convert-stage":"El escenario no puede tener variables solo para este objeto.","swap-local-global/cant-convert-to-local":"No se pudo convertir porque es usado por múltiples objetos: {sprites}","swap-local-global/cant-convert-used-elsewhere":"No se pudo convertir porque es usado por otro objeto: {sprite}","swap-local-global/edit":"Editar propiedades:","swap-local-global/edit-list-header":"Editar Lista","swap-local-global/edit-list-option":"Renombrar o editar lista","swap-local-global/edit-variable-header":"Editar Variable","swap-local-global/edit-variable-option":"Renombrar o editar variable","swap-local-global/to-global":"Convertir a \\"Para todos los objetos\\"","swap-local-global/to-local":"Convertir a \\"Solo para este objeto\\"","hide-stage/hide-stage":"Esconder escenario"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-fr.bf8eace6b3eb75cef14f.js b/js/addon-l10n-fr.bf8eace6b3eb75cef14f.js new file mode 100644 index 0000000..5d8d05b --- /dev/null +++ b/js/addon-l10n-fr.bf8eace6b3eb75cef14f.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[59],{1670:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"Nettoyer les blocs +","editor-devtools/copy-all":"Tout Copier","editor-devtools/copy-block":"Copier Le Bloc","editor-devtools/cut-block":"Couper le bloc","editor-devtools/lists":"listes","editor-devtools/make-space":"Espacer","editor-devtools/orphaned":"{count, plural, one {Outils développeur : Supprimer 1 bloc de valeur seul ?} many {Outils développeur : Supprimer les # blocs de valeur seuls ?} other {Outils développeur : Supprimer les # blocs de valeur seuls ?} }","editor-devtools/paste":"Coller","editor-devtools/replace":"Outils développeur : Remplacer toutes les utilisations de la variable {name} dans ce sprite par la variable nommée :","editor-devtools/swap":"Remplacer la variable \\"{var}\\" dans le sprite","editor-devtools/unused-list":"{count, plural, one {Outils développeur : Supprimer 1 liste locale inutilisée ? La voici :\\n} many {Outils développeur : Supprimer # listes locales inutilisées ? Les voici :\\n} other {Outils développeur : Supprimer # listes locales inutilisées ? Les voici :\\n} }","editor-devtools/unused-var":"{count, plural, one {Outils développeur : Supprimer 1 variable locale inutilisée ? Là voilà :\\n} many {Outils développeur : Supprimer les # variables locales inutilisées ? Les voici :\\n} other {Outils développeur : Supprimer les # variables locales inutilisées ? Les voici :\\n} }","editor-devtools/var-not-exist":"Cette variable n\'existe pas...","find-bar/find-placeholder":"Rechercher (Ctrl + F)","middle-click-popup/start-typing":"Commencez à taper…","editor-searchable-dropdowns/createBroadcast":"Créer un message nommé \\"{name}\\"","editor-searchable-dropdowns/createGlobalList":"Créer une liste \\"{name}\\" pour tous les sprites","editor-searchable-dropdowns/createGlobalVariable":"Créer une variable \\"{name}\\" pour tous les sprites","editor-searchable-dropdowns/createLocalList":"Créer une liste \\"{name}\\" pour ce sprite uniquement","editor-searchable-dropdowns/createLocalVariable":"Créer une variable \\"{name}\\" pour ce sprite uniquement","data-category-tweaks-v2/for-all-sprites":"Pour tous les sprites :","data-category-tweaks-v2/for-this-sprite-only":"Pour ce sprite uniquement :","data-category-tweaks-v2/list-category":"Listes","hide-flyout/lock":"Vérouiller la palette","hide-flyout/unlock":"Dévérouiller la palette","mediarecorder/cancel":"Annuler","mediarecorder/click-flag":"En attente...","mediarecorder/click-flag-description":"Cliquez sur le drapeau vert pour démarrer l\'enregistrement. Cliquez sur ce bouton pour arrêter.","mediarecorder/option-title":"Options d\'enregistrement","mediarecorder/record":"Enregistrer","mediarecorder/record-after-flag":"Ne démarrez pas l\'enregistrement tant que le drapeau vert n\'est pas été cliqué","mediarecorder/record-audio":"Inclure les sons du projet","mediarecorder/record-audio-description":"Cela n\'inclut pas la synthèse vocale.","mediarecorder/record-duration":"Durée de l\'enregistrement (en secondes)","mediarecorder/record-mic":"Inclure les sons du microphone","mediarecorder/record-until-stop":"Arrêter l\'enregistrement quand le projet se termine","mediarecorder/record-until-stop-disabled":"Vous devez activer \\"{afterFlagOption}\\" pour utiliser cette option.","mediarecorder/start":"Commencer","mediarecorder/start-delay":"Délai de démarrage (en secondes)","mediarecorder/starting-in":"Démarrage dans{secs} ...","mediarecorder/stop":"Arrêter l\'enregistrement","debugger/block-breakpoint":"point d\'arrêt","debugger/block-error":"afficher erreur %s","debugger/block-log":"afficher message %s","debugger/block-warn":"afficher avertissement %s","debugger/cannot-pause-player":"Le bloc de point d\'arrêt ne peut être utilisé que dans l\'éditeur.","debugger/clear":"Effacer","debugger/clone-of":"Clone de {sprite}","debugger/close":"Fermer","debugger/console":"Console","debugger/debug":"Débogage","debugger/empty-string":"(chaîne de caractères vide)","debugger/enter-format":"Entrez un format d\'export :","debugger/export":"Exporter","debugger/export-desc":"Cliquez tout en maintenant la touche Maj. enfoncée pour personnaliser le format d\'exportation.","debugger/icon-error":"Erreur","debugger/icon-warn":"Avertissement","debugger/log-msg-broadcasted":"\\"{broadcast}\\" envoyé à tous les sprites.","debugger/log-msg-clone-cap":"Échec lors de la création d\'un clone de \'{sprite}\', car il est impossible de créer plus de 300 clones.","debugger/log-msg-clone-created":"Un clone de \'{sprite}\' a été créé.","debugger/log-msg-flag-clicked":"Drapeau vert cliqué.","debugger/no-logs":"Il y a aucune activité à montrer.","debugger/no-threads-running":"Aucun processus en cours d\'exécution.","debugger/step":"Avancer","debugger/step-desc":"Exécute un seul bloc.","debugger/tab-logs":"Activités","debugger/tab-threads":"Processus","debugger/unknown-sprite":"(sprite inconnu)","debugger/unpause":"Reprendre","clones/clones":"clones : {cloneCount}","color-picker/hex":"couleur hexa","remove-sprite-confirm/confirm":"Voulez-vous supprimer le sprite ?","block-count/blocks":"{num, plural, one {1 bloc} many {# blocs} other {# blocs}}","onion-skinning/behind":"Derrière","onion-skinning/front":"Devant","onion-skinning/layering":"Calques","onion-skinning/merge":"Combiner","onion-skinning/next":"Costumes suivants","onion-skinning/opacity":"Opacité (%)","onion-skinning/opacityStep":"Différence d\'opacité (%)","onion-skinning/previous":"Costumes précédents","onion-skinning/settings":"Paramètres de Pelure d\'Oignon","onion-skinning/tint":"Teinte","onion-skinning/toggle":"Activer la Pelure d\'Oignon","paint-snap/objectEdges":"Bords des objets","paint-snap/pageEdges":"Bords de la page","paint-snap/settings":"Réglages du Snap","paint-snap/snapTo":"Snap à :","2d-color-picker/shade":"Nuancier","better-img-uploads/upload":"Charger HD","variable-manager/for-all-sprites":"Variables pour tous les sprites","variable-manager/for-this-sprite":"Variables de ce sprite","variable-manager/search":"Rechercher","search-sprites/placeholder":"Rechercher des sprites...","sprite-properties/close-properties-panel-tooltip":"Réduire le panneau des propriétés","sprite-properties/open-properties-panel-tooltip":"Ouvrir le panneau des propriétés","gamepad/axis-arrows":"Flèches","gamepad/axis-cursor":"Curseur","gamepad/axis-custom":"Personnalisé","gamepad/axis-none":"Aucun","gamepad/browser-support":"Ce navigateur et ce système d\'exploitation ont des bugs connus qui peuvent rendre cet addon difficile à utiliser. Essayez un autre navigateur si vous rencontrez des problèmes.","gamepad/button-n":"Bouton {n}","gamepad/clear":"Effacer tous les contrôles","gamepad/config-header":"Ce commentaire contient la configuration pour le support de la manette dans d\'autres outils et sites web, tels que https://turbowarp.org/\\nNe le modifiez pas à la main","gamepad/key-click":"Clic","gamepad/key-down":"Bas","gamepad/key-enter":"Entrée","gamepad/key-left":"Gauche","gamepad/key-none":"(aucun)","gamepad/key-right":"Droite","gamepad/key-space":"Espace","gamepad/key-up":"Haut","gamepad/keyinput-title":"Cliquez et appuyez sur une touche ou cliquez pour modifier le bouton. Échap pour annuler. Retour arrière ou supprimer pour effacer.","gamepad/no-controllers":"Aucuns contrôleurs détectés. Essayez d\'en brancher un et d\'appuyer sur un bouton.","gamepad/reset":"Réinitialiser tous les contrôles aux paramètres par défaut du projet","gamepad/settings":"Paramètres de la manette","gamepad/store-in-project":"Stockez ces paramètres dans le projet pour remplacer la configuration par défaut (Outil expérimental pour les créateurs de projets)","folders/add-to-folder":"ajouter au dossier : {folder}","folders/closed-folder":"Dossier","folders/confirm-backpack-folder":"Sauvegarder tout le dossier dans le sac-à-dos ?","folders/create-folder":"créer un dossier","folders/name-not-allowed":"Nom de dossier invalide","folders/name-prompt":"Nom du dossier :","folders/name-prompt-title":"Créer un dossier","folders/open-folder":"Ouvert","folders/remove-folder":"supprimer le dossier","folders/remove-from-folder":"supprimer du dossier","folders/rename-folder":"renommer le dossier","folders/rename-folder-prompt":"Renommer le dossier en :","folders/rename-folder-prompt-title":"Renommer le dossier","block-switching/control_forever":"répéter indéfiniment","block-switching/control_if":"si","block-switching/control_if_else":"si... sinon","block-switching/control_repeat_until":"répéter jusqu\'à ce que","block-switching/control_wait_until":"attendre jusqu\'à ce que","block-switching/data_changevariableby":"ajouter à la variable","block-switching/data_hidelist":"cacher la liste","block-switching/data_hidevariable":"cacher la variable","block-switching/data_insertatlist":"insérer l\'élément","block-switching/data_replaceitemoflist":"remplacer l\'élément","block-switching/data_setvariableto":"mettre la variable à","block-switching/data_showlist":"montrer la liste","block-switching/data_showvariable":"montrer la variable","block-switching/debugger_error":"erreur","block-switching/debugger_log":"noter","block-switching/debugger_warn":"avertis","block-switching/event_broadcast":"envoyer","block-switching/event_broadcastandwait":"envoyer et attendre","block-switching/looks_backdropnumbername":"numéro ou nom de l\'arrière-plan","block-switching/looks_changeeffectby":"ajouter à l\'effet","block-switching/looks_changesizeby":"ajouter à la taille","block-switching/looks_costumenumbername":"numéro ou nom du costume","block-switching/looks_hide":"cacher","block-switching/looks_nextbackdrop":"arrière-plan suivant","block-switching/looks_nextcostume":"costume suivant","block-switching/looks_say":"dire","block-switching/looks_sayforsecs":"dire pendant secondes","block-switching/looks_seteffectto":"mettre l\'effet à","block-switching/looks_setsizeto":"mettre la taille à","block-switching/looks_show":"montrer","block-switching/looks_switchbackdropto":"basculer sur l\'arrière-plan","block-switching/looks_switchbackdroptoandwait":"basculer sur l\'arrière-plan et attendre","block-switching/looks_think":"penser à","block-switching/looks_thinkforsecs":"penser à pendant secondes","block-switching/motion_changexby":"ajouter à x","block-switching/motion_changeyby":"ajouter à y","block-switching/motion_setx":"mettre x à","block-switching/motion_sety":"mettre y à","block-switching/motion_turnleft":"tourner gauche","block-switching/motion_turnright":"tourner droite","block-switching/motion_xposition":"position x","block-switching/motion_yposition":"position y","block-switching/music_changeTempo":"ajouter au tempo","block-switching/music_setTempo":"mettre le tempo à","block-switching/operator_and":"et","block-switching/operator_mod":"modulo","block-switching/operator_or":"ou","block-switching/pen_changePenColorParamBy":"ajouter au paramètre","block-switching/pen_changePenHueBy":"ajouter à la couleur","block-switching/pen_changePenShadeBy":"ajouter à la luminosité","block-switching/pen_changePenSizeBy":"ajouter à la taille","block-switching/pen_penDown":"stylo en position d\'écriture","block-switching/pen_penUp":"relever le stylo","block-switching/pen_setPenColorParamTo":"mettre le paramètre à","block-switching/pen_setPenHueToNumber":"mettre la couleur à","block-switching/pen_setPenShadeToNumber":"mettre la luminosité à","block-switching/pen_setPenSizeTo":"mettre la taille à","block-switching/sensing_mousex":"souris x","block-switching/sensing_mousey":"souris y","block-switching/sound_changeeffectby":"ajouter à l\'effet","block-switching/sound_changevolumeby":"ajouter au volume","block-switching/sound_play":"débute","block-switching/sound_playuntildone":"jouer jusqu\'au bout","block-switching/sound_seteffectto":"mettre l\'effet à","block-switching/sound_setvolumeto":"mettre le volume à","blocks2image/error_blocks_not_added":"Ajoute des blocs à l\'espace de travail  !","blocks2image/export_all_to_PNG":"Tout exporter au format PNG","blocks2image/export_all_to_SVG":"Tout exporter au format SVG","blocks2image/export_selected_to_PNG":"Exporter le bloc au format PNG","blocks2image/export_selected_to_SVG":"Exporter le bloc au format SVG","editor-extra-keys/enter-key":"entrée","move-to-top-bottom/bottom":"Déplacé en bas","move-to-top-bottom/top":"Déplacé en haut","rename-broadcasts/RENAME_BROADCAST":"Renommer le message","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"Renommer le message","rename-broadcasts/RENAME_BROADCAST_TITLE":"Renommer tous les messages \\"{name}\\" en :","swap-local-global/cant-convert-cloud":"Les variables cloud ne peuvent pas être converties uniquement dans ce sprite.","swap-local-global/cant-convert-conflict":"Impossible d\'effectuer la conversion car cela entrerait en conflit avec les variables d\'un autre sprite : {sprites}","swap-local-global/cant-convert-stage":"La scène ne peut pas avoir de variables uniquement pour ce sprite.","swap-local-global/cant-convert-to-local":"Impossible d\'effectuer la conversion car plusieurs sprites l\'utilisent : {sprites}","swap-local-global/cant-convert-used-elsewhere":"Impossible d\'effectuer la conversion car un autre sprite l\'utilise : {sprite}","swap-local-global/edit":"Modifier les propriétés","swap-local-global/edit-list-header":"Modifier la liste","swap-local-global/edit-list-option":"Renommer ou modifier la liste","swap-local-global/edit-variable-header":"Modifier la variable","swap-local-global/edit-variable-option":"Renommer ou modifier la variable","swap-local-global/to-global":"Convertir en \\"Pour tous les sprites\\"","swap-local-global/to-local":"Convertir en \\"Pour ce sprite uniquement\\"","hide-stage/hide-stage":"Cacher la scène"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-hu.d150fc80e9e8676263ec.js b/js/addon-l10n-hu.d150fc80e9e8676263ec.js new file mode 100644 index 0000000..ba77975 --- /dev/null +++ b/js/addon-l10n-hu.d150fc80e9e8676263ec.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[60],{1671:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"Rendrakás +","editor-devtools/copy-all":"Minden Másolása","editor-devtools/copy-block":"Blokk Másolása","editor-devtools/cut-block":"Blokk Kivágása","editor-devtools/lists":"listák","editor-devtools/make-space":"Csinálj Helyet","editor-devtools/orphaned":"{count, plural, one {Fejlesztői eszközök: Törölni szeretnél 1 kódon kívüli értékadó blokkot?} other {Fejlesztői eszközök: Törölni szeretnél # kódon kívüli értékadó blokkot?} }","editor-devtools/paste":"Beillesztés","editor-devtools/replace":"Fejlesztői eszközök: Lecserélsz minden {name} változót ebben a szereplőben egy másik változóra, amit úgy hívnak:","editor-devtools/swap":"{var} cserélye a Szereplőben","editor-devtools/unused-list":"{count, plural, one {Fejlesztői eszközök: Törölni szeretnél 1 nem használt helyi listát? Itt van:\\n} other {Fejlesztői eszközök: Törölni szeretnél # nem használt heliy listát? Itt vannak:\\n} }","editor-devtools/unused-var":"{count, plural, one {Fejlesztői eszközök: Törölni szeretnél 1 nem használt helyi változót? Itt van:\\n} other {Fejlesztői eszközök: Törölni szeretnél # nem használt helyi változót? Itt vannak:\\n} }","editor-devtools/var-not-exist":"Ez a változó nem létezik...","editor-devtools/variables":"változók","find-bar/complex-broadcast":"(kifejezés)","find-bar/find-placeholder":"Keresés (Ctrl+F)","middle-click-popup/start-typing":"Kezdjen el gépelni...","editor-searchable-dropdowns/createBroadcast":"\\"{name}\\" üzenet létrehozása","editor-searchable-dropdowns/createGlobalList":"\\"{name}\\" lista létrehozása minden szereplőnek","editor-searchable-dropdowns/createGlobalVariable":"\\"{name}\\" változó létrehozása minden szereplőnek","editor-searchable-dropdowns/createLocalList":"\\"{name}\\" lista létrehozása ennek a szereplőnek","editor-searchable-dropdowns/createLocalVariable":"\\"{name}\\" változó létrehozása ennek a szereplőnek","data-category-tweaks-v2/for-all-sprites":"Minden szereplőé:","data-category-tweaks-v2/for-this-sprite-only":"A kiválasztott szereplőé:","data-category-tweaks-v2/list-category":"Listák","hide-flyout/lock":"Paletta zárolása","hide-flyout/unlock":"Paletta zárolásának visszavonása","mediarecorder/cancel":"Mégsem","mediarecorder/click-flag":"Várakozás...","mediarecorder/click-flag-description":"Kattints a zöld zászlóra a felvételhez. Kattints erre a gombra, hogy leállítsd a felvételt.","mediarecorder/option-title":"Felvétel Opciók","mediarecorder/record":"Felvétel","mediarecorder/record-after-flag":"Ne kezdődjön el a felvétel, amíg a zöld zászlóra rá nem kattintasz","mediarecorder/record-audio":"Projekt hangok felvétele","mediarecorder/record-audio-description":"Ez nem tartalmaz Text-to-Speech-t.","mediarecorder/record-description":"Felveheted a színpadot WebM fájlként. Ezt elmentheted a számítógépedre miután a felvétel véget ért.\\nMegjegyzés: a változó- és listamegjelenítők nem lesznek láthatóak rajta.","mediarecorder/record-duration":"Felvétel Időtartama (másodperc)","mediarecorder/record-mic":"Mikrofon hangjának felvétele","mediarecorder/record-until-stop":"Felvétel leállítása miután a projekt megállt","mediarecorder/record-until-stop-disabled":"Engedélyezned kell a(z) \\"{afterFlagOption}\\" ennek az opciónak a használatához.","mediarecorder/start":"Kezdés","mediarecorder/start-delay":"Kezdési késleltetés (másodperc)","mediarecorder/starting-in":"Kezdés {secs} másodperc múlva...","mediarecorder/stop":"Felvétel Leállítása","debugger/block-breakpoint":"töréspont","debugger/block-error":"hibajelentés %s-vel","debugger/block-log":"naplózd %s-t","debugger/block-warn":"figyelmeztess %s-vel","debugger/cannot-pause-player":"A töréspont blokk csak a szerkeztőben használható","debugger/clear":"Törlés","debugger/clone-of":"{sprite}klónja","debugger/close":"Bezárás","debugger/console":"Napló","debugger/debug":"Hibakeresés","debugger/empty-string":"(üres érték)","debugger/enter-format":"Adja meg az exportálási formátumot:","debugger/export":"Exportálás","debugger/export-desc":"Kattintson Shift lenyomása közben az exportálási formátum módosításához","debugger/icon-error":"Hiba","debugger/icon-warn":"Figyelmeztetés","debugger/log-msg-broadcasted":"A(z) „{broadcast}” üzenet elküldve.","debugger/log-msg-clone-cap":"Nem sikerült „{sprite}”-t lemásolni, 300 klónnál nem lehet többet készíteni.","debugger/log-msg-clone-created":"„{sprite}” lemásolódott.","debugger/log-msg-flag-clicked":"A zöld zászló le volt nyomva.","debugger/no-logs":"Nincs esemény feljegyezve.","debugger/no-threads-running":"Nincsenek éppen futó szálak.","debugger/step":"Továbblépés","debugger/step-desc":"Lefuttat egy blokkot","debugger/tab-logs":"Napló","debugger/tab-threads":"Szálak","debugger/thread":"Szál {id}","debugger/unknown-sprite":"(névtelen szereplő)","debugger/unpause":"Visszatérés","pause/pause":"Megállítás","clones/clones":"másolatok: {cloneCount}","color-picker/hex":"hex szín","remove-sprite-confirm/confirm":"Ki szeretnéd törölni a szereplőt?","block-count/blocks":"{num, plural, one {1 blokk} other {# blokk}}","onion-skinning/behind":"Mögé","onion-skinning/front":"Elé","onion-skinning/layering":"Rétegezés","onion-skinning/merge":"Összeolvasztás","onion-skinning/mode":"Mód","onion-skinning/next":"Következő jelmezek","onion-skinning/opacity":"Átlátszatlanság (%)","onion-skinning/opacityStep":"Átlátszatlanság változás (%)","onion-skinning/previous":"Előző jelmezek","onion-skinning/settings":"Onion Skinning beállítások","onion-skinning/tint":"Árnyalás","onion-skinning/toggle":"Onion Skinning bekapcsolása","paint-snap/boxCenter":"Kijelölés közepe","paint-snap/boxCorners":"Kijelölés közepei","paint-snap/boxEdgeMids":"Kijelölés széleinek felezőpontjai","paint-snap/objectCenters":"Objektumok közepei","paint-snap/objectCorners":"Objektumok sarkai","paint-snap/objectEdges":"Objektumok szélei","paint-snap/objectMidlines":"Objektumok középvonalai","paint-snap/off":"Ki","paint-snap/on":"Be","paint-snap/pageAxes":"Lap x és y tengelyei","paint-snap/pageCenter":"Lap közepe","paint-snap/pageCorners":"Lap sarkai","paint-snap/pageEdges":"Lap szélei","paint-snap/settings":"Illesztés beállításai","paint-snap/snapFrom":"Illesztés innen:","paint-snap/snapTo":"Illessztés ide:","paint-snap/threshold":"Illesztési távolság","paint-snap/toggle":"Illesztés átváltása","2d-color-picker/shade":"Árnyalat","better-img-uploads/upload":"HD feltöltés","variable-manager/for-all-sprites":"Változók minden szereplőnek","variable-manager/for-this-sprite":"Változók ennek a szereplőnek","variable-manager/search":"Keresés","variable-manager/too-big":"Kattints a nagyon hosszú érték megjelenítéséhez.","variable-manager/variables":"Változók","search-sprites/placeholder":"Szereplők keresése...","sprite-properties/close-properties-panel-tooltip":"Tulajdonságok panel összecsukása","sprite-properties/open-properties-panel-tooltip":"Tulajdonságok panel megnyitása","gamepad/axes-a-b":"Tengelyek {a} & {b}","gamepad/axis-arrows":"Nyíl-billentyűk","gamepad/axis-cursor":"Kurzor","gamepad/axis-custom":"Egyedi","gamepad/axis-none":"Egyik sem","gamepad/browser-support":"Ennek a böngészőnek és operációs rendszernek ismert hibái vannak, amik lehet, hogy megnehezítik ennek a kiegészítőnek a használatát. Próbálj ki egy másik böngészőt, ha problémákat észlelsz.","gamepad/button-n":"Gomb {n}","gamepad/clear":"Vezérlők eltávolítása","gamepad/config-header":"Ez a komment gamepad támogatáshoz szükséges konfigurációkat tartalmaz harmadik féltől származó eszközökhöz, vagy weboldalakhoz, mint például: https://turbowarp.org/\\nNe szerkeszd kézileg!","gamepad/key-click":"Kattintás","gamepad/key-down":"Le","gamepad/key-left":"Balra","gamepad/key-none":"(semmi)","gamepad/key-right":"Jobbra","gamepad/key-space":"Szóköz","gamepad/key-up":"Fel","gamepad/keyinput-title":"Kattints, és nyomj meg egy billentyűt, vagy kattints, hogy megváltoztass egy gombot. \\"Escape\\" a kilépéshez. \\"Backspace\\" vagy \\"Delete\\" gombok a törléshez.","gamepad/no-controllers":"Nem található kontroller. Próbálj csatlakoztatni egyet, majd egy gombot megnyomni rajta.","gamepad/reset":"Minden vezérlő visszaállítása a projekt alapértelmezettjére","gamepad/settings":"Gamepad beállítások","gamepad/store-in-project":"Tárold ezeket a beállításokat a projektben, hogy felülírd az alapértelmezett konfigurációkat (Kísérleti segítőeszköz projekt-készítőknek)","folders/add-to-folder":"hozzáadás ehhez a mappához: {folder}","folders/closed-folder":"Mappa","folders/confirm-backpack-folder":"Egész mappa mentése a hátizsákba?","folders/create-folder":"mappa létrehozása","folders/name-not-allowed":"Helytelen mappa név","folders/name-prompt":"Mappa neve:","folders/name-prompt-title":"Mappa létrehozása","folders/open-folder":"Nyitott","folders/remove-folder":"mappa eltávolítása","folders/remove-from-folder":"eltávolítás mappából","folders/rename-folder":"mappa átnevezése","folders/rename-folder-prompt":"Mappa átnevezése erre:","folders/rename-folder-prompt-title":"Mappa átnevezése","block-switching/control_forever":"mindig","block-switching/control_if":"ha","block-switching/control_if_else":"ha... különben","block-switching/control_repeat_until":"ismételd eddig","block-switching/control_wait_until":"várj eddig","block-switching/data_changevariableby":"változó változzon","block-switching/data_hidelist":"lista tűnjön el","block-switching/data_hidevariable":"változó tűnjön el","block-switching/data_insertatlist":"illessz be elemet","block-switching/data_replaceitemoflist":"cseréld ki elemet","block-switching/data_setvariableto":"változó legyen","block-switching/data_showlist":"lista jelenjen meg","block-switching/data_showvariable":"változó jelenjen meg","block-switching/debugger_error":"hiba","block-switching/debugger_log":"naplózd","block-switching/debugger_warn":"figyelmeztess","block-switching/event_broadcast":"üzenet küldése","block-switching/event_broadcastandwait":"küldj üzenetet és várj","block-switching/looks_backdropnumbername":"háttér sorszáma vagy neve","block-switching/looks_changeeffectby":"effekt változzon","block-switching/looks_changesizeby":"méret változzon","block-switching/looks_costumenumbername":"jelmez sorszáma vagy neve","block-switching/looks_hide":"tűnj el","block-switching/looks_nextbackdrop":"következő háttér","block-switching/looks_nextcostume":"következő jelmez","block-switching/looks_say":"mond","block-switching/looks_sayforsecs":"mond másodpercig","block-switching/looks_seteffectto":"effekt legyen","block-switching/looks_setsizeto":"méret legyen","block-switching/looks_show":"jelenj meg","block-switching/looks_switchbackdropto":"háttér legyen","block-switching/looks_switchbackdroptoandwait":"háttér legyen és várj","block-switching/looks_think":"gondold","block-switching/looks_thinkforsecs":"gondold másodpercig","block-switching/motion_changexby":"x változzon","block-switching/motion_changeyby":"y változzon","block-switching/motion_setx":"x legyen","block-switching/motion_sety":"y legyen","block-switching/motion_turnleft":"fordulj balra","block-switching/motion_turnright":"fordulj jobbra","block-switching/motion_xposition":"x pozíció","block-switching/motion_yposition":"y pozíció","block-switching/music_changeTempo":"tempó változzon","block-switching/music_setTempo":"tempó legyen","block-switching/operator_and":"és","block-switching/operator_mod":"maradéka","block-switching/operator_or":"vagy","block-switching/pen_changePenColorParamBy":"paraméter változzon","block-switching/pen_changePenHueBy":"színárnyalat változzon","block-switching/pen_changePenShadeBy":"árnyalat változzon","block-switching/pen_changePenSizeBy":"méret változzon","block-switching/pen_penDown":"tollat le","block-switching/pen_penUp":"tollat fel","block-switching/pen_setPenColorParamTo":"paraméter legyen","block-switching/pen_setPenHueToNumber":"színárnyalat legyen","block-switching/pen_setPenShadeToNumber":"árnyalat legyen","block-switching/pen_setPenSizeTo":"méret legyen","block-switching/sensing_mousex":"egér x","block-switching/sensing_mousey":"egér y","block-switching/sound_changeeffectby":"effekt változzon","block-switching/sound_changevolumeby":"hangerő változzon","block-switching/sound_playuntildone":"játszd végig","block-switching/sound_seteffectto":"effekt legyen","block-switching/sound_setvolumeto":"hangerő legyen","blocks2image/error_blocks_not_added":"Blokk hozzáadása a munkaterülethez!","blocks2image/export_all_to_PNG":"Minden exportálása PNG-ként","blocks2image/export_all_to_SVG":"Minden exportálása SVG-ként","blocks2image/export_selected_to_PNG":"Blokk exportálása SVG-ként","blocks2image/export_selected_to_SVG":"Exportáld a blokkokat SVG-ként","move-to-top-bottom/bottom":"áthelyezés legalulra","move-to-top-bottom/top":"áthelyezés legfelülre","rename-broadcasts/RENAME_BROADCAST":"Üzenet átnevezése","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"Üzenet Átnevezése","rename-broadcasts/RENAME_BROADCAST_TITLE":"Minden „{name}” üzenet átnevezése erre:","swap-local-global/cant-convert-cloud":"Megosztott változókat nem lehet átkonvertálni a kiválasztott szereplőévé.","swap-local-global/cant-convert-conflict":"Nem konvertálható, mert szembeütközne más szereplőben található változókkal: {sprites}","swap-local-global/cant-convert-stage":"A színpadnak nem lehetnek kiválsztott szereplői változói.","swap-local-global/cant-convert-to-local":"Nem lehet konvertálni, mert több szereplő is használja: {sprites}","swap-local-global/cant-convert-used-elsewhere":"Nem konvertálható, mert ezt a nevet már használja egy másik szereplő: {sprite}","swap-local-global/edit":"Tulajdonságok szerkesztése:","swap-local-global/edit-list-header":"Lista szerkesztése","swap-local-global/edit-list-option":"Lista átnevezése vagy szerkesztése","swap-local-global/edit-variable-header":"Változó szerkesztése","swap-local-global/edit-variable-option":"Változó átnevezése vagy szerkesztése","swap-local-global/to-global":"Konvertálás \\"Minden szereplőé\\"-vé","swap-local-global/to-local":"Konvertálás \\"A kiválasztott szereplőé\\"-vé","hide-stage/hide-stage":"Színpad elrejtése"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-it.3d4ffc6a0063a72d0a22.js b/js/addon-l10n-it.3d4ffc6a0063a72d0a22.js new file mode 100644 index 0000000..07eaef8 --- /dev/null +++ b/js/addon-l10n-it.3d4ffc6a0063a72d0a22.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[61],{1672:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"Riordina i Blocchi (+)","editor-devtools/copy-all":"Copia Tutti","editor-devtools/copy-block":"Copia il Blocco","editor-devtools/cut-block":"Taglia il Blocco","editor-devtools/lists":"liste","editor-devtools/make-space":"Fai Spazio","editor-devtools/orphaned":"{count, plural, one {Strumenti per sviluppatori: Rimuovere 1 blocco monitor non collegato agli script?} many {Strumenti per sviluppatori: Rimuovere # blocchi monitor non collegati agli script?} other {Strumenti per sviluppatori: Rimuovere # blocchi monitor non collegati agli script?} }","editor-devtools/paste":"Incolla","editor-devtools/replace":"Strumenti per sviluppatori: Scambia tutti le occorrenze della variabile {name} in questo sprite con la variabile:","editor-devtools/swap":"Scambia {var} nello Sprite","editor-devtools/unused-list":"{count, plural, one {Strumenti per sviluppatori: Rimuovere 1 lista locale inutilizzata? Eccola qui:\\n} many {Strumenti per sviluppatori: Rimuovere # liste locali inutilizzate? Eccole qui:\\n} other {Strumenti per sviluppatori: Rimuovere # liste locali inutilizzate? Eccole qui:\\n} }","editor-devtools/unused-var":"{count, plural, one {Strumenti per sviluppatori: Rimuovere 1 variabile locale inutilizzata? Eccola qui:\\n} many {Strumenti per sviluppatori: Rimuovere # variabili locali inutilizzate? Eccole qui:\\n} other {Strumenti per sviluppatori: Rimuovere # variabili locali inutilizzate? Eccole qui:\\n} }","editor-devtools/var-not-exist":"Questa variabile non esiste...","editor-devtools/variables":"variabili","find-bar/complex-broadcast":"(espressione)","find-bar/find-placeholder":"Cerca (Ctrl+F)","middle-click-popup/start-typing":"Inizia a Scrivere...","editor-searchable-dropdowns/createBroadcast":"Crea il messaggio \\"{name}\\"","editor-searchable-dropdowns/createGlobalList":"Crea la lista \\"{name}\\" per tutti gli sprite","editor-searchable-dropdowns/createGlobalVariable":"Crea la variabile \\"{name}\\" per tutti gli sprite.","editor-searchable-dropdowns/createLocalList":"Crea la lista \\"{name}\\" solo per questo sprite","editor-searchable-dropdowns/createLocalVariable":"Crea la variabile \\"{name}\\" solo per questo sprite","data-category-tweaks-v2/for-all-sprites":"Per tutti gli sprite:","data-category-tweaks-v2/for-this-sprite-only":"Solo per questo sprite:","data-category-tweaks-v2/list-category":"Liste","hide-flyout/lock":"Blocca Elenco Blocchi","hide-flyout/unlock":"Sblocca Elenco Blocchi","mediarecorder/cancel":"Annulla","mediarecorder/click-flag":"In attesa...","mediarecorder/click-flag-description":"Clicca la bandiera verde per avviare la registrazione. Clicca questo tasto per fermarla.","mediarecorder/option-title":"Opzioni Registrazione","mediarecorder/record":"Registra","mediarecorder/record-after-flag":"Non avviare la registrazione finché non viene cliccata la bandiera verde","mediarecorder/record-audio":"Includi suoni del progetto","mediarecorder/record-audio-description":"Questo non include l\'estensione Da Testo A Voce","mediarecorder/record-description":"Registra lo stage come file WebM. Quando la registrazione termina puoi salvarla sul tuo computer.\\nNota: i monitor delle variabili e delle liste non saranno visibili.","mediarecorder/record-duration":"Durata Registrazione (in secondi)","mediarecorder/record-mic":"Includi i suoni del microfono","mediarecorder/record-until-stop":"Arresta la registrazione quando il progetto viene fermato","mediarecorder/record-until-stop-disabled":"Devi abilitare “{afterFlagOption}” per usare questa opzione.","mediarecorder/start":"Avvia","mediarecorder/start-delay":"Ritardo Avvio (in secondi)","mediarecorder/starting-in":"Inizierà tra {secs}...","mediarecorder/stop":"Arresta Registrazione","debugger/block-error":"errore %s","debugger/block-warn":"avviso %s","debugger/cannot-pause-player":"Il blocco breakpoint può essere usato solo nell\'editor.","debugger/clear":"Cancella","debugger/clone-of":"Clone di {sprite}","debugger/close":"Chiudi","debugger/console":"Log","debugger/empty-string":"(stringa vuota)","debugger/enter-format":"Inserisci il formato di esportazione:","debugger/export":"Esporta","debugger/export-desc":"Per personalizzare il formato di esportazione clicca tenendo premuto Shift.","debugger/icon-error":"Errore","debugger/icon-warn":"Avviso","debugger/log-msg-broadcasted":"Inviato \'{broadcast}\'.","debugger/log-msg-clone-cap":"Creazione del clone di \'{sprite}\' fallita, non è possibile creare più di 300 cloni..","debugger/log-msg-clone-created":"Creato clone di \'{sprite}\'.","debugger/log-msg-flag-clicked":"Bandiera verde cliccata.","debugger/no-logs":"Non ci sono log da mostrare.","debugger/no-threads-running":"Nessun thread in esecuzione.","debugger/step":"Passi","debugger/step-desc":"Esegue un blocco.","debugger/tab-logs":"Log","debugger/tab-threads":"Thread","debugger/unknown-sprite":"(sprite sconosciuto)","debugger/unpause":"Riprendi","pause/pause":"Pausa","clones/clones":"cloni: {cloneCount}","color-picker/hex":"colore esadecimale","remove-sprite-confirm/confirm":"Vuoi cancellare lo sprite?","block-count/blocks":"{num, plural, one {1 blocco} many {# blocchi} other {# blocchi}}","onion-skinning/behind":"Secondo piano","onion-skinning/front":"Primo piano","onion-skinning/layering":"Livelli","onion-skinning/merge":"Unisci","onion-skinning/mode":"Modalità","onion-skinning/next":"Costumi seguenti","onion-skinning/opacity":"Opacità (%)","onion-skinning/opacityStep":"Incremento opacità (%)","onion-skinning/previous":"Costumi precedenti","onion-skinning/settings":"Impostazioni Onion Skin","onion-skinning/tint":"Colore","onion-skinning/toggle":"Attiva/Disattiva Onion Skin","paint-snap/boxCenter":"Centro della selezione","paint-snap/boxCorners":"Angoli della selezione","paint-snap/boxEdgeMids":"Punti mediani sui bordi della selezione","paint-snap/objectCenters":"Centri degli oggetti","paint-snap/objectCorners":"Angoli degli oggetti","paint-snap/objectEdges":"Bordi degli oggetti","paint-snap/objectMidlines":"Linea mediana degli oggetti","paint-snap/off":"Disattivato","paint-snap/on":"Attivo","paint-snap/pageAxes":"Assi x e y della pagina","paint-snap/pageCenter":"Centro della pagina","paint-snap/pageCorners":"Angoli della pagina","paint-snap/pageEdges":"Bordi della pagina","paint-snap/settings":"Impostazioni Magnete","paint-snap/snapFrom":"Attiva magnete da:","paint-snap/snapTo":"Attacca a:","paint-snap/threshold":"DIstanza di attivazione del magnete","paint-snap/toggle":"Attiva/Disattiva Magnete","2d-color-picker/shade":"Ombreggiatura","better-img-uploads/upload":"Caricamento HD","variable-manager/for-all-sprites":"Variabili per tutti gli sprite","variable-manager/for-this-sprite":"Variabili di questo sprite","variable-manager/search":"Cerca","variable-manager/too-big":"Clicca per mostrare valori molto grandi.","variable-manager/variables":"Variabili","search-sprites/placeholder":"Cerca sprite...","sprite-properties/close-properties-panel-tooltip":"Nascondi il pannello delle informazioni","sprite-properties/open-properties-panel-tooltip":"Apri il pannello delle informazioni","gamepad/axes-a-b":"Assi {a} & {b}","gamepad/axis-arrows":"Tasti Freccia","gamepad/axis-cursor":"Cursore","gamepad/axis-custom":"Personalizzato","gamepad/axis-none":"Nessuno","gamepad/browser-support":"Questo browser e sistema operativo hanno bug noti che possono rendere questo addon difficile da usare. Prova un diverso browser se riscontri dei problemi.","gamepad/button-n":"Pulsante {n}","gamepad/clear":"Rimuovi tutti i controli","gamepad/config-header":"Questo commento contiene impostazioni di configurazione per il supporto di gamepad support in tool di terze parti o in siti come https://turbowarp.org/\\nNon modificare a mano","gamepad/key-down":"Giù","gamepad/key-enter":"Invio","gamepad/key-left":"Sinistra","gamepad/key-none":"(nessuno)","gamepad/key-right":"Destra","gamepad/key-space":"Spazio","gamepad/key-up":"Su","gamepad/keyinput-title":"Clicca e premi un tasto o clicca per cambiare pulsante. Escape per annullare. Backspace o cancella per ripulire.","gamepad/no-controllers":"Nessun controller rilevato. Prova a collegarne uno e a premere un pulsante del controller.","gamepad/reset":"Riporta i controli a quelli predefiniti","gamepad/settings":"Impostazioni Gamepad","gamepad/store-in-project":"Memorizza queste impostazioni nel progetto per evitare le configurazioni predefinite (Tool sperimentale per i creatori di progetti)","folders/add-to-folder":"inserisci nella cartella: {folder}","folders/closed-folder":"Cartella","folders/confirm-backpack-folder":"Salvare l\'intera cartella nella valigetta?","folders/create-folder":"crea cartella","folders/name-not-allowed":"Nome cartella non valido","folders/name-prompt":"Nome della cartella:","folders/name-prompt-title":"Crea Cartella","folders/open-folder":"Aperto","folders/remove-folder":"rimuovi cartella","folders/remove-from-folder":"rimuovi dalla cartella","folders/rename-folder":"rinomina cartella","folders/rename-folder-prompt":"Rinomina cartella come:","folders/rename-folder-prompt-title":"Rinomina Cartella","block-switching/control_forever":"per sempre","block-switching/control_if":"se allora","block-switching/control_if_else":"se allora... altrimenti","block-switching/control_repeat_until":"ripeti fino a quando","block-switching/control_wait_until":"attendi fino a quando","block-switching/data_changevariableby":"cambia variabile di","block-switching/data_hidelist":"nascondi la lista","block-switching/data_hidevariable":"nascondi la variabile","block-switching/data_insertatlist":"inserisci elemento alla posizione di","block-switching/data_replaceitemoflist":"sostituisci elemento","block-switching/data_setvariableto":"porta variabile a","block-switching/data_showlist":"mostra la lista","block-switching/data_showvariable":"mostra la variabile","block-switching/debugger_error":"errore","block-switching/debugger_warn":"avviso","block-switching/event_broadcast":"Invia a tutti","block-switching/event_broadcastandwait":"Invia a tutti e attendi","block-switching/looks_backdropnumbername":"numero o nome sfondo","block-switching/looks_changeeffectby":"cambia effetto di","block-switching/looks_changesizeby":"cambia dimensione di","block-switching/looks_costumenumbername":"numero o nome costume","block-switching/looks_hide":"nascondi","block-switching/looks_nextbackdrop":"passa allo sfondo seguente","block-switching/looks_nextcostume":"passa al costume seguente","block-switching/looks_say":"dire","block-switching/looks_sayforsecs":"dire per secondi","block-switching/looks_seteffectto":"porta effetto a","block-switching/looks_setsizeto":"porta dimensione a","block-switching/looks_show":"mostra","block-switching/looks_switchbackdropto":"passa allo sfondo","block-switching/looks_switchbackdroptoandwait":"passa allo sfondo e attendi","block-switching/looks_think":"pensa","block-switching/looks_thinkforsecs":"pensa per secondi","block-switching/motion_changexby":"cambia x di","block-switching/motion_changeyby":"cambia y di","block-switching/motion_setx":"vai dove x è","block-switching/motion_sety":"vai dove x è","block-switching/motion_turnleft":"ruota a sinistra","block-switching/motion_turnright":"ruota a destra","block-switching/motion_xposition":"posizione x","block-switching/motion_yposition":"posizione y","block-switching/music_changeTempo":"cambia tempo di","block-switching/music_setTempo":"imposta tempo a bpm","block-switching/operator_and":"e","block-switching/operator_mod":"resto della divisione","block-switching/operator_or":"o","block-switching/pen_changePenColorParamBy":"cambia parametro di","block-switching/pen_changePenHueBy":"cambia colore di","block-switching/pen_changePenShadeBy":"cambia ombreggiatura di","block-switching/pen_changePenSizeBy":"cambia dimensione di","block-switching/pen_penDown":"penna giù","block-switching/pen_penUp":"penna su","block-switching/pen_setPenColorParamTo":"porta parametro a","block-switching/pen_setPenHueToNumber":"porta colore a","block-switching/pen_setPenShadeToNumber":"porta ombreggiatura a","block-switching/pen_setPenSizeTo":"porta dimensione a","block-switching/sensing_mousex":"x del mouse","block-switching/sensing_mousey":"y del mouse","block-switching/sound_changeeffectby":"cambia effetto di","block-switching/sound_changevolumeby":"cambia volume di","block-switching/sound_play":"avvia","block-switching/sound_playuntildone":"riproduci suono e attendi la fine","block-switching/sound_seteffectto":"porta effetto a","block-switching/sound_setvolumeto":"porta volume a","blocks2image/error_blocks_not_added":"Aggiungi i blocchi al tuo workspace!","blocks2image/export_all_to_PNG":"Esporta tutto come PNG","blocks2image/export_all_to_SVG":"Esporta tutto come SVG","blocks2image/export_selected_to_PNG":"Esporta gli script come PNG","blocks2image/export_selected_to_SVG":"Esporta gli script come SVG","editor-extra-keys/enter-key":"invio","move-to-top-bottom/bottom":"porta in fondo","move-to-top-bottom/top":"porta in cima","rename-broadcasts/RENAME_BROADCAST":"Rinomina messaggio","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"Rinomina Messaggio","rename-broadcasts/RENAME_BROADCAST_TITLE":"Rinomina tutti i messaggi \\"{name}\\" come:","swap-local-global/cant-convert-cloud":"Le variabili cloud non possono essere convertite a \\"Solo per questo sprite\\"","swap-local-global/cant-convert-conflict":"Impossibile convertire perché entrerebbe in conflitto con le variabili di un altro sprite: {sprites}","swap-local-global/cant-convert-stage":"Lo stage non può avere variabili \\"Solo per questo sprite\\".","swap-local-global/cant-convert-to-local":"Impossibile fare la conversione perché è usata in più sprite: {sprites}","swap-local-global/cant-convert-used-elsewhere":"Impossibile fare la conversione perché è usata in un altro sprite: {sprite}","swap-local-global/edit":"Modifica le proprietà:","swap-local-global/edit-list-header":"Modifica Lista","swap-local-global/edit-list-option":"Rinomina o modifica una lista","swap-local-global/edit-variable-header":"Modifica Variabile","swap-local-global/edit-variable-option":"Rinomina o modifica una variabile","swap-local-global/to-global":"Converti in \\"Per tutti gli sprite\\"","swap-local-global/to-local":"Converti in \\"Solo per questo sprite\\"","hide-stage/hide-stage":"Nascondi stage"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-ja.f24bce0e9076c05c53f3.js b/js/addon-l10n-ja.f24bce0e9076c05c53f3.js new file mode 100644 index 0000000..c4ae632 --- /dev/null +++ b/js/addon-l10n-ja.f24bce0e9076c05c53f3.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[62],{1673:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"きれいにする +","editor-devtools/copy-all":"すべてコピー","editor-devtools/copy-block":"ブロックをコピー","editor-devtools/cut-block":"ブロックを切り取り","editor-devtools/lists":"リスト","editor-devtools/make-space":"スペースを確保","editor-devtools/orphaned":"{count, plural, other {開発者ツール: 未使用の値ブロックを # 個見つけました。削除しますか?} }","editor-devtools/paste":"貼り付け","editor-devtools/replace":"開発者ツール: このスプライト内の変数{name}をすべて置き換える:","editor-devtools/swap":"スプライト内の{var}を一括切り替え","editor-devtools/unused-list":"{count, plural, other {開発者ツール: 未使用のこのスプライトのみのリストを # 個見つけました。削除しますか? 以下が一覧です:\\n} }","editor-devtools/unused-var":"{count, plural, other {開発者ツール: 未使用のこのスプライトのみの変数を # 個見つけました。削除しますか? 以下が一覧です:\\n} }","editor-devtools/var-not-exist":"その変数は存在しません。","editor-devtools/variables":"変数","find-bar/complex-broadcast":"(式)","find-bar/find-placeholder":"検索 (Ctrl+F)","middle-click-popup/start-typing":"入力する...","editor-searchable-dropdowns/createBroadcast":"メッセージ「{name}」を作成","editor-searchable-dropdowns/createGlobalList":"すべてのスプライト用のリスト「{name}」を作成","editor-searchable-dropdowns/createGlobalVariable":"すべてのスプライト用の変数「{name}」を作成","editor-searchable-dropdowns/createLocalList":"このスプライトのみのリスト「{name}」を作成","editor-searchable-dropdowns/createLocalVariable":"このスプライトのみの変数「{name}」を作成","data-category-tweaks-v2/for-all-sprites":"すべてのスプライト用:","data-category-tweaks-v2/for-this-sprite-only":"このスプライトのみ:","data-category-tweaks-v2/list-category":"リスト","hide-flyout/lock":"パレットをロック","hide-flyout/unlock":"パレットをロック解除","mediarecorder/cancel":"キャンセル","mediarecorder/click-flag":"待機中...","mediarecorder/click-flag-description":"緑の旗を押して録画を開始してください。このボタンを押すと録画を中止できます。","mediarecorder/option-title":"録画のオプション","mediarecorder/record-after-flag":"緑の旗を押して録画を開始する","mediarecorder/record-audio":"プロジェクトを録音する","mediarecorder/record-audio-description":"音声合成は含まれません。","mediarecorder/record-duration":"録画時間 (秒)","mediarecorder/record-mic":"マイクの音を録音する","mediarecorder/record-until-stop":"プロジェクトの停止後に録画も停止する","mediarecorder/record-until-stop-disabled":"このオプションを有効化するには、「{afterFlagOption}」を先に有効化してください。","mediarecorder/start":"録画開始","mediarecorder/start-delay":"待ち時間 (秒)","mediarecorder/starting-in":"{secs}秒後に開始...","mediarecorder/stop":"録画を停止","debugger/block-breakpoint":"ブレークポイント","debugger/block-error":"エラー%sを記録","debugger/block-log":"%sをログに記録","debugger/block-warn":"警告%sを記録","debugger/cannot-pause-player":"ブレークポイントブロックは、エディター内のみで利用できます。","debugger/clear":"消す","debugger/clone-of":"{sprite}のクローン","debugger/close":"閉じる","debugger/console":"ログ","debugger/debug":"デバッグ","debugger/empty-string":"(空文字列)","debugger/enter-format":"出力方式を入力:","debugger/export":"書き出し","debugger/export-desc":"Shiftキーを押しながらクリックして出力方式を指定できます。","debugger/icon-error":"エラー","debugger/icon-warn":"警告","debugger/log-msg-broadcasted":"メッセージ「{broadcast}」を送りました。","debugger/log-msg-clone-cap":"「{sprite}」のクローンに失敗しました: クローンは合計300個までしか作成できません。","debugger/log-msg-clone-created":"「{sprite}」をクローンしました。","debugger/log-msg-flag-clicked":"緑の旗が押されました。","debugger/no-logs":"表示する内容がありません。","debugger/no-threads-running":"実行中のスレッドはありません。","debugger/step":"次に進む","debugger/step-desc":"ブロックを一つずつ実行する。","debugger/tab-logs":"ログ","debugger/tab-threads":"スレッド","debugger/thread":"スレッド {id}","debugger/unknown-sprite":"(不明なスプライト)","debugger/unpause":"再開","pause/pause":"一時停止","clones/clones":"クローン: {cloneCount}","color-picker/hex":"16進数カラーコード","remove-sprite-confirm/confirm":"スプライトを削除したいですか?","block-count/blocks":"{num, plural, other {# ブロック}}","onion-skinning/behind":"後ろ","onion-skinning/front":"前","onion-skinning/layering":"レイヤー","onion-skinning/merge":"マージ","onion-skinning/mode":"モード","onion-skinning/next":"次のコスチューム","onion-skinning/opacity":"透明度 (%)","onion-skinning/opacityStep":"透明度の変化の割合 (%)","onion-skinning/previous":"前のコスチューム","onion-skinning/settings":"半透明エディターの設定","onion-skinning/tint":"色合い","onion-skinning/toggle":"半透明にする","paint-snap/boxCenter":"選択したオブジェクトの中央","paint-snap/boxCorners":"選択したオブジェクトの角","paint-snap/boxEdgeMids":"選択したオブジェクトの中点","paint-snap/objectCenters":"オブジェクトの中央","paint-snap/objectCorners":"オブジェクトの角","paint-snap/objectEdges":"オブジェクトの端","paint-snap/objectMidlines":"オブジェクトの中央線","paint-snap/off":"オフ","paint-snap/on":"オン","paint-snap/pageAxes":"ページの座標軸","paint-snap/pageCenter":"ページの中央","paint-snap/pageCorners":"ページの角","paint-snap/pageEdges":"ページの端","paint-snap/settings":"スナップ設定","paint-snap/snapFrom":"スナップ元:","paint-snap/snapTo":"スナップ先:","paint-snap/threshold":"スナップ距離","paint-snap/toggle":"スナップを有効化","2d-color-picker/shade":"濃さ","better-img-uploads/upload":"HD アップロード","variable-manager/for-all-sprites":"すべてのスプライト用の変数","variable-manager/for-this-sprite":"このスプライトの変数","variable-manager/search":"検索","variable-manager/too-big":"クリックして非常に大きな値を表示","variable-manager/variables":"変数","search-sprites/placeholder":"スプライトを検索...","sprite-properties/close-properties-panel-tooltip":"プロパティ―パネルを閉じる","sprite-properties/open-properties-panel-tooltip":"プロパティ―パネルを開く","gamepad/axes-a-b":"軸 {a} と {b}","gamepad/axis-arrows":"矢印キー","gamepad/axis-cursor":"カーソル","gamepad/axis-custom":"カスタム","gamepad/axis-none":"なし","gamepad/browser-support":"このブラウザーとOSではアドオンは正常に動作しません。他のブラウザーの利用をおすすめします。","gamepad/button-n":"ボタン{n}","gamepad/clear":"コントロールを全解除","gamepad/config-header":"以下のコメントには、https://turbowarp.org/ などの外部のツールやウェブサイトで利用されるゲームパッド設定が保存されています。\\n編集しないこと。","gamepad/key-click":"クリック","gamepad/key-down":"下","gamepad/key-left":"左","gamepad/key-none":"(なし)","gamepad/key-right":"右","gamepad/key-space":"スペース","gamepad/key-up":"上","gamepad/keyinput-title":"キーを押してボタンが変更できます。Escキーでキャンセルできます。BackspaceまたはDeleteキーで削除できます。","gamepad/no-controllers":"コントローラーが接続されていません。接続して、ボタンを押してください。","gamepad/reset":"プロジェクトの既定にリセット","gamepad/settings":"ゲームパッド設定","gamepad/store-in-project":"プロジェクトに初期設定を保存する (プロジェクト作成者のための実験的機能)","folders/add-to-folder":"フォルダー {folder} に追加","folders/closed-folder":"フォルダー","folders/confirm-backpack-folder":"フォルダーをバックパックしますか?","folders/create-folder":"フォルダーを作成","folders/name-not-allowed":"フォルダー名は無効です","folders/name-prompt":"フォルダー名:","folders/name-prompt-title":"フォルダーを作成","folders/open-folder":"表示中","folders/remove-folder":"フォルダーを削除","folders/remove-from-folder":"フォルダーから出す","folders/rename-folder":"フォルダーを改名","folders/rename-folder-prompt":"フォルダーの改名先:","folders/rename-folder-prompt-title":"フォルダーを改名","block-switching/control_forever":"ずっと","block-switching/control_if":"もし","block-switching/control_if_else":"もし... でなければ","block-switching/control_repeat_until":"...回繰り返す","block-switching/control_wait_until":"...まで待つ","block-switching/data_changevariableby":"変数を...ずつ変える","block-switching/data_hidelist":"リスト...を隠す","block-switching/data_hidevariable":"変数...を隠す","block-switching/data_insertatlist":"挿入する","block-switching/data_replaceitemoflist":"置き換える","block-switching/data_setvariableto":"変数を...にする","block-switching/data_showlist":"リスト...を表示する","block-switching/data_showvariable":"変数...を表示する","block-switching/debugger_error":"エラー","block-switching/debugger_log":"ログ","block-switching/debugger_warn":"警告","block-switching/event_broadcast":"...を送る","block-switching/event_broadcastandwait":"...を送って待つ","block-switching/looks_backdropnumbername":"背景の番号・名前","block-switching/looks_changeeffectby":"画像効果を...ずつ変える","block-switching/looks_changesizeby":"大きさを...ずつ変える","block-switching/looks_costumenumbername":"コスチュームの番号・名前","block-switching/looks_hide":"隠す","block-switching/looks_nextbackdrop":"次の背景","block-switching/looks_nextcostume":"次のコスチューム","block-switching/looks_say":"~と言う","block-switching/looks_sayforsecs":"~と~秒言う","block-switching/looks_seteffectto":"画像効果を...にする","block-switching/looks_setsizeto":"大きさを...%にする","block-switching/looks_show":"表示する","block-switching/looks_switchbackdropto":"背景を~にする","block-switching/looks_switchbackdroptoandwait":"背景を~にして待つ","block-switching/looks_think":"~と考える","block-switching/looks_thinkforsecs":"~と~秒考える","block-switching/motion_changexby":"x座標を...ずつ変える","block-switching/motion_changeyby":"y座標を...ずつ変える","block-switching/motion_setx":"x座標を...にする","block-switching/motion_sety":"y座標を...にする","block-switching/motion_turnleft":"左回転","block-switching/motion_turnright":"右回転","block-switching/motion_xposition":"x座標","block-switching/motion_yposition":"y座標","block-switching/music_changeTempo":"テンポを~ずつ変える","block-switching/music_setTempo":"テンポを~にする","block-switching/operator_and":"かつ","block-switching/operator_mod":"余り","block-switching/operator_or":"または","block-switching/pen_changePenColorParamBy":"ペンの...を...ずつ変える","block-switching/pen_changePenHueBy":"ペンの色を...ずつ変える","block-switching/pen_changePenShadeBy":"ペンの濃さを...ずつ変える","block-switching/pen_changePenSizeBy":"ペンの太さを...ずつ変える","block-switching/pen_penDown":"ペンを下ろす","block-switching/pen_penUp":"ペンを上げる","block-switching/pen_setPenColorParamTo":"ペンの...を...にする","block-switching/pen_setPenHueToNumber":"ペンの色を...にする","block-switching/pen_setPenShadeToNumber":"ペンの濃さを...にする","block-switching/pen_setPenSizeTo":"ペンの太さを...にする","block-switching/sensing_mousex":"マウスのx座標","block-switching/sensing_mousey":"マウスのy座標","block-switching/sound_changeeffectby":"音の効果を...ずつ変える","block-switching/sound_changevolumeby":"音量を...ずつ変える","block-switching/sound_play":"...の音を鳴らす","block-switching/sound_playuntildone":"終わるまで...の音を鳴らす","block-switching/sound_seteffectto":"音の効果を...にする","block-switching/sound_setvolumeto":"音量を...%にする","blocks2image/error_blocks_not_added":"ブロックを追加してください。","blocks2image/export_all_to_PNG":"すべてをPNGとして出力","blocks2image/export_all_to_SVG":"すべてをSVGとして出力","blocks2image/export_selected_to_PNG":"ブロックをPNGとして出力","blocks2image/export_selected_to_SVG":"ブロックをSVGとして出力","editor-extra-keys/enter-key":"Enter","move-to-top-bottom/bottom":"一番下に移動","move-to-top-bottom/top":"一番上に移動","rename-broadcasts/RENAME_BROADCAST":"メッセージ名を変更","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"メッセージ名を変更","rename-broadcasts/RENAME_BROADCAST_TITLE":"メッセージ \\"{name}\\" をすべて以下の名前に変える:","swap-local-global/cant-convert-cloud":"クラウド変数を「このスプライトのみ」に設定することはできません。","swap-local-global/cant-convert-conflict":"他のスプライトで名前が衝突するため変更できません: {sprites}","swap-local-global/cant-convert-stage":"ステージは「このスプライトのみ」変数を持つことができません。","swap-local-global/cant-convert-to-local":"複数のスプライトで使われているため変更できません: {sprites}","swap-local-global/cant-convert-used-elsewhere":"他のスプライトで使用されているため変更できません: {sprite}","swap-local-global/edit":"属性を編集:","swap-local-global/edit-list-header":"リストを編集","swap-local-global/edit-list-option":"リストを改名・編集","swap-local-global/edit-variable-header":"変数を編集","swap-local-global/edit-variable-option":"変数を改名・編集","swap-local-global/to-global":"「すべてのスプライト用」にする","swap-local-global/to-local":"「このスプライトのみ」にする","hide-stage/hide-stage":"ステージを隠す"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-ko.7795a741e2ee763a7e3f.js b/js/addon-l10n-ko.7795a741e2ee763a7e3f.js new file mode 100644 index 0000000..ad14bcc --- /dev/null +++ b/js/addon-l10n-ko.7795a741e2ee763a7e3f.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[63],{1674:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"블럭 정리하기 +","editor-devtools/copy-all":"모두 복사하기","editor-devtools/copy-block":"블럭 복사하기","editor-devtools/cut-block":"블럭 잘라내기","editor-devtools/lists":"리스트","editor-devtools/make-space":"여백 만들기","editor-devtools/orphaned":"{count, plural, other {개발자 도구: #개의 사용하지 않는 리포터 블럭을 삭제하시겠습니까?} }","editor-devtools/paste":"붙여넣기","editor-devtools/replace":"개발자 도구: 다음에 나올 이름의 변수에 대해 이 스프라이트의 모든 {name}을(를) 전환합니다:","editor-devtools/swap":"스프라이트에서 {var} 치환하기","editor-devtools/unused-list":"{count, plural, other {개발자 도구: #개의 사용하지 않는 지역 리스트를 제거하시겠습니까? 사용하지 않는 지역 리스트:} }","editor-devtools/unused-var":"{count, plural, other {개발자 도구: #개의 사용하지 않는 지역변수를 삭제하시겠습니까?} }","editor-devtools/var-not-exist":"이 변수는 존재하지 않습니다.","editor-devtools/variables":"변수","find-bar/find-placeholder":"찾기 (Ctrl+F)","middle-click-popup/start-typing":"입력 시작...","editor-searchable-dropdowns/createBroadcast":"메시지 \\"{name}\\"을(를) 생성하기","editor-searchable-dropdowns/createGlobalList":"전역 리스트 \\"{name}\\"을(를) 생성하기","editor-searchable-dropdowns/createGlobalVariable":"전역변수 \\"{name}\\"을(를) 생성하기","editor-searchable-dropdowns/createLocalList":"지역 리스트 \\"{name}\\"을(를) 생성하기","editor-searchable-dropdowns/createLocalVariable":"지역변수 \\"{name}\\"을(를) 생성하기","data-category-tweaks-v2/for-all-sprites":"전역적으로 사용됨:","data-category-tweaks-v2/for-this-sprite-only":"지역적으로 사용됨:","data-category-tweaks-v2/list-category":"리스트","mediarecorder/cancel":"취소","mediarecorder/click-flag":"기다려 주세요...","mediarecorder/click-flag-description":"초록 깃발을 눌러 녹화를 시작합니다. 이 버튼을 눌러 종료하세요.","mediarecorder/option-title":"녹화 설정","mediarecorder/record-after-flag":"초록 깃발을 클릭할 때까지 녹화를 시작하지 않습니다.","mediarecorder/record-audio":"프로젝트 소리 포함","mediarecorder/record-audio-description":"이것은 TTS가 포함되지 않습니다.","mediarecorder/record-duration":"녹화 시간(초)","mediarecorder/record-mic":"마이크를 통한 소리 포함","mediarecorder/record-until-stop":"프로젝트가 멈췄을 때 녹화를 종료합니다.","mediarecorder/record-until-stop-disabled":"당신은 이 설정을 사용하기 위해선 \\"{afterFlagOption}\\"을(를) 켜야 합니다.","mediarecorder/start":"시작","mediarecorder/start-delay":"시작 딜레이 (초 단위)","mediarecorder/starting-in":"{secs} 후에 시작합니다... ","mediarecorder/stop":"녹화 종료","debugger/block-breakpoint":"중단점","debugger/block-error":"오류 %s","debugger/block-log":"기록 %s","debugger/block-warn":"경고 %s","debugger/cannot-pause-player":"중단점 블록은 에디터에 있을 때에만 사용 가능합니다.","debugger/clear":"지우기","debugger/clone-of":"{sprite}의 복제본","debugger/close":"닫기","debugger/console":"기록","debugger/debug":"디버그","debugger/empty-string":"(빈 문자열)","debugger/enter-format":"내보낼 방법을 입력하세요:","debugger/export":"내보내기","debugger/export-desc":"내보낼 방법을 개인 설정하려면 Shift키를 누른 상태로 클릭하세요.","debugger/icon-error":"오류","debugger/icon-warn":"경고","debugger/log-msg-broadcasted":"신호 \'{broadcast}\'가 발송되었습니다.","debugger/log-msg-clone-cap":"\'{sprite}\'의 복제본을 생성하는 데 실패했습니다. 300개가 넘는 복제본을 만들 수 없습니다.","debugger/log-msg-clone-created":"\'{sprite}\'의 복제본이 만들어졌습니다.","debugger/log-msg-flag-clicked":"녹색 깃발이 클릭되었습니다.","debugger/no-logs":"표시할 기록이 없습니다.","debugger/no-threads-running":"실행 중인 작업 없음.","debugger/step":"절차","debugger/step-desc":"한 블록을 실행합니다.","debugger/tab-logs":"기록","debugger/tab-threads":"실행 중인 작업","debugger/thread":"작업 {id}","debugger/unknown-sprite":"(알 수 없는 스프라이트)","debugger/unpause":"재개하기","pause/pause":"일시정지","clones/clones":"복제본 {cloneCount}개","color-picker/hex":"HEX 색상","remove-sprite-confirm/confirm":"이 스프라이트를 정말로 삭제하시겠습니까?","block-count/blocks":"{num, plural, other {블럭 #개}}","onion-skinning/behind":"뒤","onion-skinning/front":"앞","onion-skinning/layering":"레이어화","onion-skinning/merge":"병합","onion-skinning/mode":"모드","onion-skinning/next":"다음 모양","onion-skinning/opacity":"투명도 (%)","onion-skinning/opacityStep":"투명도 스푸마토 (%)","onion-skinning/previous":"전 모양","onion-skinning/settings":"어니언 스키닝 설정","onion-skinning/tint":"단색 표시","onion-skinning/toggle":"어니언 스키닝 켜기","2d-color-picker/shade":"음영","better-img-uploads/upload":"고해상도 사진 업로드","variable-manager/for-all-sprites":"전역변수","variable-manager/for-this-sprite":"지역변수","variable-manager/search":"찾기","variable-manager/variables":"변수","search-sprites/placeholder":"스프라이트 검색...","gamepad/axes-a-b":"축 {a}와 {b}","gamepad/axis-arrows":"방향키","gamepad/axis-cursor":"커서","gamepad/axis-custom":"개인 설정","gamepad/axis-none":"없음","gamepad/browser-support":"이 브라우저와 운영 체제가 가지고 있는 알려진 버그들은 애드온을 사용하기 힘들게 할 수 있습니다. 문제와 마주치는 경우 다른 브라우저를 시도해 보세요.","gamepad/button-n":"버튼 {n}","gamepad/config-header":"이 주석은 https://turbowarp.org/ 와 같은 외부 도구나 웹사이트에서도 게임패드를 지원할 수 있도록 하는 실행 정보를 담고 있습니다.\\n직접 편집하지 마세요.","gamepad/key-click":"클릭","gamepad/key-down":"아래","gamepad/key-enter":"엔터","gamepad/key-left":"좌","gamepad/key-none":"(없음)","gamepad/key-right":"우","gamepad/key-space":"스페이스","gamepad/key-up":"위","gamepad/keyinput-title":"클릭과 키를 누르거나 바꾸기 버튼을 누르세요. Esc로 취소합니다. Backspace나 delete로 지웁니다.","gamepad/no-controllers":"감지된 컨트롤러가 없습니다. 하나를 꽂고 버튼을 눌러 보세요.","gamepad/settings":"게임패드 설정","gamepad/store-in-project":"이 설정을 프로젝트에 저장하여 기본 구성을 덮어씌웁니다.(프로젝트 제작자들을 위한 실험 도구)","folders/add-to-folder":"폴더를 {folder}에 추가하기","folders/closed-folder":"폴더","folders/confirm-backpack-folder":"전체 폴더를 저장소에 담으시겠습니까?","folders/create-folder":"폴더 생성","folders/name-not-allowed":"잘못된 폴더 이름","folders/name-prompt":"폴더 이름:","folders/name-prompt-title":"폴더 만들기","folders/open-folder":"열림","folders/remove-folder":"폴더 삭제하기","folders/remove-from-folder":"폴더에서 삭제하기","folders/rename-folder":"폴더 이름 변경하기","folders/rename-folder-prompt":"폴더 이름 변경:","folders/rename-folder-prompt-title":"폴더의 이름을 다시 정하기","block-switching/control_forever":"무한 반복하기","block-switching/control_if":"만약","block-switching/control_if_else":"만약... 아니라면","block-switching/control_repeat_until":"까지 기다리기","block-switching/control_wait_until":"까지 기다리기","block-switching/data_changevariableby":"변수 변경하기","block-switching/data_hidelist":"리스트 숨기기","block-switching/data_hidevariable":"변수 숨기기","block-switching/data_insertatlist":"항목 넣기","block-switching/data_replaceitemoflist":"항목 바꾸기","block-switching/data_setvariableto":"변수 설정하기","block-switching/data_showlist":"리스트 보이기","block-switching/data_showvariable":"변수 보이기","block-switching/debugger_error":"오류","block-switching/debugger_log":"기록","block-switching/debugger_warn":"경고","block-switching/event_broadcast":"신호 보내기","block-switching/event_broadcastandwait":"신호 보내고 기다리기","block-switching/looks_backdropnumbername":"무대 번호 또는 이름","block-switching/looks_changeeffectby":"효과 바꾸기","block-switching/looks_changesizeby":"크기 변경하기","block-switching/looks_costumenumbername":"모양 번호나 이름","block-switching/looks_hide":"숨기기","block-switching/looks_nextbackdrop":"다음 배경","block-switching/looks_nextcostume":"다음 모양","block-switching/looks_say":"말하기","block-switching/looks_sayforsecs":"초 동안 말하기","block-switching/looks_seteffectto":"효과 설정하기","block-switching/looks_setsizeto":"크기 설정하기","block-switching/looks_show":"보이기","block-switching/looks_switchbackdropto":"배경 바꾸기","block-switching/looks_switchbackdroptoandwait":"배경 바꾸고 기다리기","block-switching/looks_think":"생각하기","block-switching/looks_thinkforsecs":"초 동안 생각하기","block-switching/motion_changexby":"x좌표 바꾸기","block-switching/motion_changeyby":"y좌표 바꾸기","block-switching/motion_setx":"x좌표 설정하기","block-switching/motion_sety":"y좌표 설정하기","block-switching/motion_turnleft":"왼쪽으로 회전하기","block-switching/motion_turnright":"오른쪽으로 회전하기","block-switching/motion_xposition":"x좌표","block-switching/motion_yposition":"y좌표","block-switching/music_changeTempo":"빠르기 변경하기","block-switching/music_setTempo":"빠르기 설정하기","block-switching/operator_and":"그리고","block-switching/operator_mod":"나머지","block-switching/operator_or":"또는","block-switching/pen_changePenColorParamBy":"파라미터 변경하기","block-switching/pen_changePenHueBy":"색상 바꾸기","block-switching/pen_changePenShadeBy":"색상 바꾸기","block-switching/pen_changePenSizeBy":"크기 바꾸기","block-switching/pen_penDown":"펜 내리기","block-switching/pen_penUp":"펜 올리기","block-switching/pen_setPenColorParamTo":"파라미터 설정하기","block-switching/pen_setPenHueToNumber":"색상 설정하기","block-switching/pen_setPenShadeToNumber":"색상 설정하기","block-switching/pen_setPenSizeTo":"크기 설정하기","block-switching/sensing_mousex":"마우스 x좌표","block-switching/sensing_mousey":"마우스 y좌표","block-switching/sound_changeeffectby":"효과 바꾸기","block-switching/sound_changevolumeby":"음량 바꾸기","block-switching/sound_play":"시작","block-switching/sound_playuntildone":"끝날 때까지 플레이하기","block-switching/sound_seteffectto":"효과 설정하기","block-switching/sound_setvolumeto":"음량 설정하기","blocks2image/error_blocks_not_added":"작업 공간에 블록을 추가합니다!","blocks2image/export_all_to_PNG":"모두 PNG로 내보내기","blocks2image/export_all_to_SVG":"모두 SVG로 내보내기","blocks2image/export_selected_to_PNG":"PNG로 블록 내보내기","blocks2image/export_selected_to_SVG":"SVG로 내보내기","editor-extra-keys/enter-key":"엔터","move-to-top-bottom/bottom":"맨 아래로 옮기기","move-to-top-bottom/top":"맨 위로 옮기기","rename-broadcasts/RENAME_BROADCAST":"메시지 이름 변경하기","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"메시지 이름 변경하기","rename-broadcasts/RENAME_BROADCAST_TITLE":"모든 \\"{name}\\" 메시지를 다음으로 변경:","swap-local-global/cant-convert-cloud":"클라우드 변수는 \'이 스프라이트에서만 사용\'으로 변경할 수 없습니다.","swap-local-global/cant-convert-conflict":"다른 스프라이트 {sprites}의 변수와 충돌하기 때문에 변환할 수 없습니다.","swap-local-global/cant-convert-stage":"무대는 \'모든 스프라이트에서 사용\'만 사용할 수 있습니다.","swap-local-global/cant-convert-to-local":"여러 스프라이트({sprites})에서 사용되었기 때문에 변환할 수 없습니다.","swap-local-global/cant-convert-used-elsewhere":"다른 스프라이트 {sprite}에 사용되었기 때문에 변환할 수 없습니다.","swap-local-global/edit":"속성 편집:","swap-local-global/edit-list-header":"리스트 편집하기","swap-local-global/edit-list-option":"이름을 변경하거나 리스트를 편집하기","swap-local-global/edit-variable-header":"변수 편집하기","swap-local-global/edit-variable-option":"이름을 변경하거나 리스트를 편집하기","swap-local-global/to-global":"\\"모든 스프라이트에서 사용\\"으로 바꾸기","swap-local-global/to-local":"\\"이 스프라이트에서만 사용\\"으로 바꾸기","hide-stage/hide-stage":"무대 숨기기"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-nl.6100e045d473da7b3c21.js b/js/addon-l10n-nl.6100e045d473da7b3c21.js new file mode 100644 index 0000000..cd51039 --- /dev/null +++ b/js/addon-l10n-nl.6100e045d473da7b3c21.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[64],{1675:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"Blokken Opruimen +","editor-devtools/copy-all":"Alles Kopiëren","editor-devtools/copy-block":"Blok Kopiëren","editor-devtools/cut-block":"Blok Knippen","editor-devtools/lists":"lijsten","editor-devtools/make-space":"Ruimte Maken","editor-devtools/orphaned":"{count, plural, one {Ontwikkelaarstools: 1 los meldingsblok verwijderen?} other {Ontwikkelaarstools: # losse meldingsblokken verwijderen?} }","editor-devtools/paste":"Plakken","editor-devtools/replace":"Ontwikkelaarstools: Alle {name} in deze sprite wisselen voor de variabele genaamd:","editor-devtools/swap":"Wissel {var} in Sprite","editor-devtools/unused-list":"{count, plural, one {Ontwikkelaarstools: 1 ongebruikte lokale lijst verwijderen? Hier is het:\\n} other {Ontwikkelaarstools: # ongebruikte lokale lijsten verwijderen? Hier zijn ze:\\n} }","editor-devtools/unused-var":"{count, plural, one {Ontwikkelaarstools: 1 ongebruikte lokale variabele verwijderen? Hier is het:\\n} other {Ontwikkelaarstools: # ongebruikte lokale variabelen verwijderen? Hier zijn ze:\\n} }","editor-devtools/var-not-exist":"Die variabele bestaat niet...","editor-devtools/variables":"variabelen","find-bar/complex-broadcast":"(expressie)","find-bar/find-placeholder":"Zoeken (Ctrl+F)","middle-click-popup/start-typing":"Begin met Typen...","editor-searchable-dropdowns/createBroadcast":"Bericht \\"{name}\\" maken","editor-searchable-dropdowns/createGlobalList":"Lijst \\"{name}\\" maken voor alle sprites","editor-searchable-dropdowns/createGlobalVariable":"Variabele \\"{name}\\" maken voor alle sprites","editor-searchable-dropdowns/createLocalList":"Lijst \\"{name}\\" maken voor alleen deze sprite","editor-searchable-dropdowns/createLocalVariable":"Variabele \\"{name}\\" maken voor alleen deze sprite","data-category-tweaks-v2/for-all-sprites":"Voor alle sprites:","data-category-tweaks-v2/for-this-sprite-only":"Alleen voor deze sprite:","data-category-tweaks-v2/list-category":"Lijsten","hide-flyout/lock":"Palet Vergrendelen","hide-flyout/unlock":"Palet Ontgrendelen","mediarecorder/cancel":"Annuleren","mediarecorder/click-flag":"Wachten...","mediarecorder/click-flag-description":"Klik op de groene vlag om te starten met opnemen. Klik op deze knop om te stoppen.","mediarecorder/option-title":"Opneemopties","mediarecorder/record":"Opnemen","mediarecorder/record-after-flag":"Begin niet met opnemen tot de Groene Vlag is geklikt","mediarecorder/record-audio":"Projectgeluiden opnemen","mediarecorder/record-audio-description":"Dit neemt Tekst-naar-Spraak niet op.","mediarecorder/record-description":"Neem het speelveld op als een WebM-bestand. Je kunt het opslaan op je computer nadat de opname klaar is.\\nOpmerking: monitoren van variabelen en lijsten zijn niet zichtbaar.","mediarecorder/record-duration":"Opnamelengte (in seconden)","mediarecorder/record-mic":"Microfoon opnemen","mediarecorder/record-until-stop":"Stop met opnemen nadat het project is gestopt","mediarecorder/record-until-stop-disabled":"Je moet \\"{afterFlagOption}\\" aanzetten om deze optie te gebruiken.","mediarecorder/start-delay":"Startvertraging (in seconden)","mediarecorder/starting-in":"Start in {secs}…","mediarecorder/stop":"Opname Stoppen","debugger/block-breakpoint":"onderbreking","debugger/block-warn":"waarschuw %s","debugger/cannot-pause-player":"Onderbrekingsblokken kunnen alleen gebruikt worden in de editor.","debugger/clear":"Wissen","debugger/clone-of":"Kloon van {sprite}","debugger/close":"Sluiten","debugger/empty-string":"(lege string)","debugger/enter-format":"Voer exporteerformaat in:","debugger/export":"Exporteren","debugger/export-desc":"Shift + klik om exporteerformaat aan te passen.","debugger/icon-warn":"Waarschuwing","debugger/log-msg-broadcasted":"\'{broadcast}\' verzonden.","debugger/log-msg-clone-cap":"Kon geen kloon maken van \'{sprite}\', kan niet meer dan 300 klonen maken.","debugger/log-msg-clone-created":"Kloon gemaakt van \'{sprite}\'.","debugger/log-msg-flag-clicked":"Groene vlag geklikt.","debugger/no-logs":"Er zijn geen logs om weer te geven.","debugger/no-threads-running":"Geen threads aan de gang.","debugger/step":"Stap","debugger/step-desc":"Voert één blok uit.","debugger/unknown-sprite":"(onbekende sprite)","debugger/unpause":"Hervatten","pause/pause":"Pauzeren","clones/clones":"klonen: {cloneCount}","color-picker/hex":"hex-kleur","remove-sprite-confirm/confirm":"Wil je de sprite verwijderen?","block-count/blocks":"{num, plural, one {1 blok} other {# blokken}}","onion-skinning/behind":"Achter","onion-skinning/front":"Voor","onion-skinning/layering":"Lagen","onion-skinning/merge":"Samenvoegen","onion-skinning/mode":"Modus","onion-skinning/next":"Volgende uiterlijken","onion-skinning/opacity":"Doorzichtigheid (%)","onion-skinning/opacityStep":"Doorzichtigheidsstap (%)","onion-skinning/previous":"Vorige uiterlijken","onion-skinning/settings":"\\"Onion Skinning\\"-Instellingen","onion-skinning/toggle":"\\"Onion Skinning\\" aanzetten","paint-snap/boxCenter":"Middelpunt selectie","paint-snap/boxCorners":"Hoeken selectie","paint-snap/boxEdgeMids":"Middelpunten op randen selectie","paint-snap/objectCenters":"Objectmiddelpunt","paint-snap/objectCorners":"Objecthoeken","paint-snap/objectEdges":"Objectranden","paint-snap/objectMidlines":"Objectmiddenlijn","paint-snap/off":"Uit","paint-snap/on":"Aan","paint-snap/pageAxes":"X- en Y-assen van pagina","paint-snap/pageCenter":"Paginamiddelpunt","paint-snap/pageCorners":"Paginahoeken","paint-snap/pageEdges":"Paginaranden","paint-snap/settings":"Instellingen voor Uitlijnen","paint-snap/snapFrom":"Uitlijnen vanaf:","paint-snap/snapTo":"Uitlijnen op:","paint-snap/threshold":"Uitlijnafstand","paint-snap/toggle":"Uitlijnen Inschakelen","2d-color-picker/shade":"Tint","better-img-uploads/upload":"HD-Upload","variable-manager/for-all-sprites":"Variabelen voor alle sprites","variable-manager/for-this-sprite":"Variabelen voor deze sprite","variable-manager/search":"Zoeken","variable-manager/too-big":"Klik om grote waarde weer te geven.","variable-manager/variables":"Variabelen","search-sprites/placeholder":"Sprites zoeken...","sprite-properties/close-properties-panel-tooltip":"Eigenschappenpaneel samenvouwen","sprite-properties/open-properties-panel-tooltip":"Eigenschappenpaneel openvouwen","gamepad/axes-a-b":"Assen {a} & {b}","gamepad/axis-arrows":"Pijltjestoetsen","gamepad/axis-cursor":"Muisaanwijzer","gamepad/axis-custom":"Aangepast","gamepad/axis-none":"Geen","gamepad/browser-support":"Deze browser en besturingssysteem hebben bekende bugs die deze addon mogelijk lastig maken om te gebruiken. Probeer een andere browser als je problemen ervaart.","gamepad/button-n":"Knop {n}","gamepad/clear":"Alle besturingen verwijderen","gamepad/config-header":"Deze opmerking bevat configuratie voor gamepad-ondersteuning in derde-partij hulpmiddelen of websites zoals https://turbowarp.org/\\nNiet met de hand bewerken","gamepad/key-click":"Klik","gamepad/key-down":"Omlaag","gamepad/key-left":"Links","gamepad/key-none":"(geen)","gamepad/key-right":"Rechts","gamepad/key-space":"Spatie","gamepad/key-up":"Omhoog","gamepad/keyinput-title":"Klik en druk een toets in of klik om knop te veranderen. Escape om te annuleren. Backspace of delete om te wissen.","gamepad/no-controllers":"Geen controllers gevonden. Probeer er een in te pluggen en druk een knop in.","gamepad/reset":"Alle besturingen resetten naar standaard van project","gamepad/settings":"Gamepadinstellingen","gamepad/store-in-project":"Sla deze instellingen op in het project om de standaardconfiguratie te overschrijven (Experimentele hulpmiddel voor projectmakers)","folders/add-to-folder":"voeg toe aan map: {folder}","folders/closed-folder":"Map","folders/confirm-backpack-folder":"Hele map in rugzak opslaan?","folders/create-folder":"map aanmaken","folders/name-not-allowed":"Ongeldige mapnaam","folders/name-prompt":"Naam van map:","folders/name-prompt-title":"Map Aanmaken","folders/open-folder":"Geopend","folders/remove-folder":"map verwijderen","folders/remove-from-folder":"verwijder uit map","folders/rename-folder":"map hernoemen","folders/rename-folder-prompt":"Hernoem map naar:","folders/rename-folder-prompt-title":"Map Hernoemen","block-switching/control_forever":"herhaal","block-switching/control_if":"als","block-switching/control_if_else":"als... anders","block-switching/control_repeat_until":"herhaal tot","block-switching/control_wait_until":"wacht tot","block-switching/data_changevariableby":"verander variabele","block-switching/data_hidelist":"verberg lijst","block-switching/data_hidevariable":"verberg variabele","block-switching/data_insertatlist":"voeg item toe","block-switching/data_replaceitemoflist":"vervang item","block-switching/data_setvariableto":"maak variabele","block-switching/data_showlist":"toon lijst","block-switching/data_showvariable":"toon variabele","block-switching/debugger_warn":"waarschuw","block-switching/event_broadcast":"zend signaal","block-switching/event_broadcastandwait":"zend signaal en wacht","block-switching/looks_backdropnumbername":"achtergrondnummer of -naam","block-switching/looks_changeeffectby":"verander effect","block-switching/looks_changesizeby":"verander grootte","block-switching/looks_costumenumbername":"uiterlijknummer of -naam","block-switching/looks_hide":"verdwijn","block-switching/looks_nextbackdrop":"volgende achtergrond","block-switching/looks_nextcostume":"volgend uiterlijk","block-switching/looks_say":"zeg","block-switching/looks_sayforsecs":"zeg voor sec.","block-switching/looks_seteffectto":"maak effect","block-switching/looks_setsizeto":"maak grootte","block-switching/looks_show":"verschijn","block-switching/looks_switchbackdropto":"verander achtergrond","block-switching/looks_switchbackdroptoandwait":"verander achtergrond en wacht","block-switching/looks_think":"denk","block-switching/looks_thinkforsecs":"denk voor sec.","block-switching/motion_changexby":"verander x","block-switching/motion_changeyby":"verander y","block-switching/motion_setx":"maak x","block-switching/motion_sety":"maak y","block-switching/motion_turnleft":"draai links","block-switching/motion_turnright":"draai rechts","block-switching/motion_xposition":"x-positie","block-switching/motion_yposition":"y-positie","block-switching/music_changeTempo":"verander tempo","block-switching/music_setTempo":"maak tempo","block-switching/operator_and":"en","block-switching/operator_mod":"modulo","block-switching/operator_or":"of","block-switching/pen_changePenColorParamBy":"verander penkleur","block-switching/pen_changePenHueBy":"verander kleur","block-switching/pen_changePenShadeBy":"verander helderheid","block-switching/pen_changePenSizeBy":"verander grootte","block-switching/pen_penDown":"pen neer","block-switching/pen_penUp":"pen op","block-switching/pen_setPenColorParamTo":"maak penkleur","block-switching/pen_setPenHueToNumber":"maak kleur","block-switching/pen_setPenShadeToNumber":"maak helderheid","block-switching/pen_setPenSizeTo":"maak grootte","block-switching/sensing_mousex":"muis x","block-switching/sensing_mousey":"muis y","block-switching/sound_changeeffectby":"verander effect","block-switching/sound_changevolumeby":"verander volume","block-switching/sound_playuntildone":"start en wacht","block-switching/sound_seteffectto":"maak effect","block-switching/sound_setvolumeto":"zet volume","blocks2image/error_blocks_not_added":"Voeg blokken toe aan werkplek!","blocks2image/export_all_to_PNG":"Alles exporteren als PNG","blocks2image/export_all_to_SVG":"Alles exporteren als SVG","blocks2image/export_selected_to_PNG":"Blok exporteren als PNG","blocks2image/export_selected_to_SVG":"Blok exporteren als SVG","move-to-top-bottom/bottom":"naar beneden","move-to-top-bottom/top":"naar boven","rename-broadcasts/RENAME_BROADCAST":"Signaal hernoemen","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"Signaal Hernoemen","rename-broadcasts/RENAME_BROADCAST_TITLE":"Alle \\"{name}\\"-signalen hernoemen naar:","swap-local-global/cant-convert-cloud":"Cloudvariabelen kunnen niet alleen voor deze sprite zijn.","swap-local-global/cant-convert-conflict":"Kan niet veranderen omdat variabelen in andere sprites dezelfde naam hebben: {sprites}","swap-local-global/cant-convert-stage":"Het speelveld kan geen variabelen voor alleen deze sprite hebben.","swap-local-global/cant-convert-to-local":"Kan niet veranderen omdat het wordt gebruikt door meerdere sprites: {sprites}","swap-local-global/cant-convert-used-elsewhere":"Kan niet veranderen omdat het wordt gebruikt door een andere sprite: {sprite}","swap-local-global/edit":"Eigenschappen bewerken:","swap-local-global/edit-list-header":"Lijst Bewerken","swap-local-global/edit-list-option":"Lijst hernoemen of bewerken","swap-local-global/edit-variable-header":"Variabele Bewerken","swap-local-global/edit-variable-option":"Variabele hernoemen of bewerken","swap-local-global/to-global":"Veranderen naar \\"Voor alle sprites\\"","swap-local-global/to-local":"Veranderen naar \\"Alleen voor deze sprite\\"","hide-stage/hide-stage":"Speelveld verbergen"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-pl.c2e47fbbc8ca51cea472.js b/js/addon-l10n-pl.c2e47fbbc8ca51cea472.js new file mode 100644 index 0000000..cc1f773 --- /dev/null +++ b/js/addon-l10n-pl.c2e47fbbc8ca51cea472.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[65],{1676:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"Wyczyść bloki +","editor-devtools/copy-all":"Kopiuj wszystko","editor-devtools/copy-block":"Kopiuj Blok","editor-devtools/cut-block":"Wytnij Blok","editor-devtools/lists":"listy","editor-devtools/make-space":"Zrób miejsce","editor-devtools/orphaned":"{count, plural, one {Narzędzia Developerskie: Usunąć 1 odłączony blok?} few {Narzędzia Developerskie: Usunąć # odłączonych bloków?} many {Narzędzia Developerskie: Usunąć # odłączonych bloków?} other {Narzędzia Developerskie: Usunąć # odłączonych bloków?} }","editor-devtools/paste":"Wklej","editor-devtools/replace":"Narzędzia Developerskie: Zmień nazwy wszystkie zmiennych {name} w tym duszku na:","editor-devtools/swap":"Zamień {var} w Duszku","editor-devtools/unused-list":"{count, plural, one {Narzędzia Developerskie: Usunąć 1 nieużywaną listę o nazwie:\\n} few {Narzędzia Developerskie: Usunąć # nieużywanych list? Oto one: \\n} many {Narzędzia Developerskie: Usunąć # nieużywanych list? Oto one: \\n} other {Narzędzia Developerskie: Usunąć # nieużywanych list? Oto one: \\n} }","editor-devtools/unused-var":"{count, plural, one {Narzędzia Developerskie: Usunąć 1 nieużywaną zmienną o nazwie: \\n} few {Narzędzia Developerskie: Usunąć # nieużywanych zmiennych? Oto one: \\n} many {Narzędzia Developerskie: Usunąć # nieużywanych zmiennych? Oto one: \\n} other {Narzędzia Developerskie: Usunąć # nieużywanych zmiennych? Oto one: \\n} }","editor-devtools/var-not-exist":"Ta zmienna nie istnieje...","editor-devtools/variables":"zmienne","find-bar/complex-broadcast":"(działanie)","find-bar/find-placeholder":"Szukaj (Ctr+F)","middle-click-popup/start-typing":"Zacznij pisać...","editor-searchable-dropdowns/createBroadcast":"Stwórz wiadomość \\"{name}\\"","editor-searchable-dropdowns/createGlobalList":"Utwórz listę \\"{name}\\" dla wszystkich duszków","editor-searchable-dropdowns/createGlobalVariable":"Utwórz zmienną \\"{name}\\" dla wszystkich duszków","editor-searchable-dropdowns/createLocalList":"Utwórz listę \\"{name}\\" tylko dla tego duszka","editor-searchable-dropdowns/createLocalVariable":"Utwórz zmienną \\"{name}\\" tylko dla tego duszka","data-category-tweaks-v2/for-all-sprites":"Dla wszystkich duszków:","data-category-tweaks-v2/for-this-sprite-only":"Tylko dla tego duszka:","data-category-tweaks-v2/list-category":"Listy","hide-flyout/lock":"Zablokuj paletę bloków","hide-flyout/unlock":"Odblokuj paletę bloków","mediarecorder/cancel":"Anuluj","mediarecorder/click-flag":"Czekanie...","mediarecorder/click-flag-description":"Kliknij zieloną flagę by zacząć nagrywanie. Kliknij ten przycisk by zatrzymać nagranie.","mediarecorder/option-title":"Opcje nagrywania","mediarecorder/record-after-flag":"Nie włączaj nagrywania dopóki zielona flaga nie jest kliknięta","mediarecorder/record-audio":"Uwzględnij dźwięki projektu","mediarecorder/record-audio-description":"Nie dotyczy to zamiany tekstu na mowę.","mediarecorder/record-duration":"Długość nagrywania (w sekundach)","mediarecorder/record-mic":"Uwzględnij dźwięki z mikrofonu","mediarecorder/record-until-stop":"Zatrzymaj nagrywanie gdy projekt się zatrzymał","mediarecorder/record-until-stop-disabled":"Aby korzystać z tej opcji, musisz włączyć opcję \\"{afterFlagOption}\\".","mediarecorder/start-delay":"Opóźnienie Startu (w sekundach)","mediarecorder/starting-in":"Rozpoczęcie w {secs}...","mediarecorder/stop":"Przestań Nagrywać","debugger/block-breakpoint":"punkt przerwania ","debugger/block-error":"zgłoś błąd %s","debugger/block-log":"loguj %s","debugger/block-warn":"ostrzeż %s","debugger/cannot-pause-player":"Blok \\"punktu przerwania\\" można używać tylko w edytorze. ","debugger/clear":"Wyczyść","debugger/clone-of":"Klon duszka {sprite}","debugger/close":"Zamknij","debugger/console":"Logi","debugger/debug":"Debuguj","debugger/empty-string":"(puste pole tekstowe)","debugger/enter-format":"Podaj format eksportowanego pliku:","debugger/export":"Eksportuj","debugger/export-desc":"Kliknij prawym klawiszem trzymając Shift, aby zmienić typ wyeksportowanego pliku.","debugger/icon-error":"Błąd","debugger/icon-warn":"Ostrzeżenie","debugger/log-msg-broadcasted":"Ogłoszono \'{broadcast}\'","debugger/log-msg-clone-cap":"Nie udało się stworzyć klona z duszka \'{sprite}\', ponieważ osiągnął limit 300 klonów.","debugger/log-msg-clone-created":"Stworzono klona z duszka \'{sprite}\'","debugger/log-msg-flag-clicked":"Zielona Flaga została naciśnięta.","debugger/no-logs":"Na razie nie ma żadnych informacji do wyświetlenia.","debugger/no-threads-running":"Żadne wątki nie działają.","debugger/step":"Krok","debugger/step-desc":"Wywołuje jeden blok.","debugger/tab-logs":"Logi","debugger/tab-threads":"Wątki","debugger/thread":"Wątek {id}","debugger/unknown-sprite":"(nieznany duszek)","debugger/unpause":"Wznów","pause/pause":"Pauza","clones/clones":"klony:{cloneCount}","color-picker/hex":"hex kolor","remove-sprite-confirm/confirm":"Czy chcesz usunąć duszka?","block-count/blocks":"{num, plural, one {1 blok} few {# bloki} many {# bloków} other {# bloków}}","onion-skinning/behind":"Tył","onion-skinning/front":"Przód","onion-skinning/layering":"Warstwowanie","onion-skinning/merge":"Łącz","onion-skinning/mode":"Tryb","onion-skinning/next":"Następne kostiumy","onion-skinning/opacity":"Nieprzezroczystość (%)","onion-skinning/opacityStep":"Nieprzezroczystość kroku (%)","onion-skinning/previous":"Poprzednie kostiumy","onion-skinning/settings":"Ustawienia Onion Skinning","onion-skinning/tint":"Odcień","onion-skinning/toggle":"Przełącz Warstwy Cebuli","paint-snap/boxCenter":"Środka zaznaczonego obiektu","paint-snap/boxCorners":"Rogów zaznaczonego obiektu","paint-snap/boxEdgeMids":"Lini środkowych zaznaczonego obiektu","paint-snap/objectCenters":"Środku obiektów","paint-snap/objectCorners":"Rogów obiektów","paint-snap/objectEdges":"Boków obiektów","paint-snap/objectMidlines":"Lini środkowych obiektów","paint-snap/off":"Wyłącz","paint-snap/on":"Włącz","paint-snap/pageAxes":"Osi X i Y","paint-snap/pageCenter":"Środka strony","paint-snap/pageCorners":"Rogów strony","paint-snap/pageEdges":"Boków strony","paint-snap/settings":"Ustawienia Przyczepiania","paint-snap/snapFrom":"Przyczep od:","paint-snap/snapTo":"Przyczep do:","paint-snap/threshold":"Dystans przyczepiania","paint-snap/toggle":"Włącz Przyczepianie","2d-color-picker/shade":"Cień","better-img-uploads/upload":"Przesyłanie HD","variable-manager/for-all-sprites":"Zmienne dla wszystkich duszków","variable-manager/for-this-sprite":"Zmienne dla tego duszka","variable-manager/search":"Szukaj","variable-manager/too-big":"Kliknij, aby wyświetlić bardzo dużą wartość.","variable-manager/variables":"Zmienne","search-sprites/placeholder":"Szukaj duszków...","sprite-properties/open-properties-panel-tooltip":"Otwórz panel właściwości","gamepad/axes-a-b":"Osie {a} i {b}","gamepad/axis-arrows":"Przyciski Strzałek","gamepad/axis-cursor":"Kursor","gamepad/axis-custom":"Niestandardowy","gamepad/axis-none":"Nic","gamepad/browser-support":"Ta przeglądarka i system operacyjny zawierają znane błędy, które mogą utrudniać korzystanie z tego dodatku. Wypróbuj inną przeglądarkę, jeśli napotkasz problemy. ","gamepad/button-n":"Przycisk {n}","gamepad/clear":"Wyczyść wszystkie ustawione przyciski","gamepad/config-header":"Ten komentarz zawiera konfigurację dla obsług pada do gier w programach jak https://turbowarp.org/\\nNie edytuj ręcznie!","gamepad/key-click":"Kliknięcie","gamepad/key-down":"Dół","gamepad/key-left":"Lewo","gamepad/key-none":"(nic)","gamepad/key-right":"Prawo","gamepad/key-space":"Spacja","gamepad/key-up":"Góra","gamepad/keyinput-title":"Naciśnij i kliknij klawisz, aby zmienić przycisk. Kliknij escape, aby anulować. Aby wyczyścić naciśnij Backspace lub Cancel.","gamepad/no-controllers":"Nie wykryto żadnego kontrolera. Spróbuj podłączyć jeden z nich i nacisnąć przycisk na nim.","gamepad/reset":"Resetuj wszystkie przyciski do ustawień fabrycznych","gamepad/settings":"Ustawienia Gamepada","gamepad/store-in-project":"Zapisz ustawienia w projekcie, aby zastąpić domyślną konfigurację (narzędzie eksperymentalne dla twórców projektów) .","folders/add-to-folder":"dodaj do folderu: {folder}","folders/confirm-backpack-folder":"Czy chcesz zapisać cały folder do plecaka?","folders/create-folder":"stwórz folder","folders/name-not-allowed":"Nieprawidłowa nazwa folderu","folders/name-prompt":"Nazwa folderu:","folders/name-prompt-title":"Stwórz folder","folders/open-folder":"Otwarte","folders/remove-folder":"usuń folder","folders/remove-from-folder":"usuń z folderu","folders/rename-folder":"zmień nazwę folderu","folders/rename-folder-prompt":"Zmień nazwę folderu na:","folders/rename-folder-prompt-title":"Zmień nazwę folderu","block-switching/control_forever":"zawsze","block-switching/control_if":"jeżeli","block-switching/control_if_else":"jeżeli.. w przeciwnym razie","block-switching/control_repeat_until":"powtarzaj aż","block-switching/control_wait_until":"czekaj aż","block-switching/data_changevariableby":"zmień zmienną","block-switching/data_hidelist":"ukryj listę","block-switching/data_hidevariable":"ukryj zmienną","block-switching/data_insertatlist":"wstaw objekt","block-switching/data_replaceitemoflist":"zamień objekt","block-switching/data_setvariableto":"ustaw zmienną","block-switching/data_showlist":"pokaż listę","block-switching/data_showvariable":"pokaż zmienną","block-switching/debugger_error":"błąd","block-switching/debugger_log":"loguj","block-switching/debugger_warn":"ostrzeż","block-switching/event_broadcast":"nadaj","block-switching/event_broadcastandwait":"nadaj i czekaj","block-switching/looks_backdropnumbername":"numer tła lub nazwa","block-switching/looks_changeeffectby":"zmień efekt","block-switching/looks_changesizeby":"zmień rozmiar","block-switching/looks_costumenumbername":"numer kostiumu lub nazwa","block-switching/looks_hide":"ukryj","block-switching/looks_nextbackdrop":"następne tło","block-switching/looks_nextcostume":"następny kostium","block-switching/looks_say":"powiedz","block-switching/looks_sayforsecs":"powiedz przez sekund","block-switching/looks_seteffectto":"ustaw efekt","block-switching/looks_setsizeto":"ustaw rozmiar","block-switching/looks_show":"pokaż","block-switching/looks_switchbackdropto":"zmień tło","block-switching/looks_switchbackdroptoandwait":"zmień tło i czekaj","block-switching/looks_think":"myśl","block-switching/looks_thinkforsecs":"myśl przez sekund","block-switching/motion_changexby":"zmień x","block-switching/motion_changeyby":"zmień y","block-switching/motion_setx":"ustaw x","block-switching/motion_sety":"ustaw y","block-switching/motion_turnleft":"skręć w lewo","block-switching/motion_turnright":"skręć w prawo","block-switching/motion_xposition":"pozycja x","block-switching/motion_yposition":"pozycja y","block-switching/music_changeTempo":"zmień tempo","block-switching/music_setTempo":"ustaw tempo","block-switching/operator_and":"i","block-switching/operator_mod":"modulo","block-switching/operator_or":"lub","block-switching/pen_changePenColorParamBy":"zmień parametr","block-switching/pen_changePenHueBy":"zmień kolor","block-switching/pen_changePenShadeBy":"zmień odcień","block-switching/pen_changePenSizeBy":"zmień rozmiar","block-switching/pen_penDown":"przyłóż pisak","block-switching/pen_penUp":"podnieś pisak","block-switching/pen_setPenColorParamTo":"ustaw parametr","block-switching/pen_setPenHueToNumber":"ustaw kolor","block-switching/pen_setPenShadeToNumber":"ustaw odcień","block-switching/pen_setPenSizeTo":"ustaw rozmiar","block-switching/sensing_mousex":"x myszy","block-switching/sensing_mousey":"y myszy","block-switching/sound_changeeffectby":"zmień efekt","block-switching/sound_changevolumeby":"zmień głośność","block-switching/sound_playuntildone":"graj aż się skończy","block-switching/sound_seteffectto":"ustaw efekt","block-switching/sound_setvolumeto":"ustaw głośność","blocks2image/error_blocks_not_added":"Dodaj bloki do przestrzeni roboczej!","blocks2image/export_all_to_PNG":"Eksportuj wszystko jako PNG","blocks2image/export_all_to_SVG":"Eksportuj wszystko jako SVG","blocks2image/export_selected_to_PNG":"Eksportuj blok jako obraz PNG","blocks2image/export_selected_to_SVG":"Eksportuj blok jako SVG","move-to-top-bottom/bottom":"przenieś na dół","move-to-top-bottom/top":"przenieś na górę","rename-broadcasts/RENAME_BROADCAST":"Zmień wiadomość","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"Zmień Wiadomość","rename-broadcasts/RENAME_BROADCAST_TITLE":"Zmień nazwę wszystkich wiadomości \\"{name}\\" na:","swap-local-global/cant-convert-cloud":"\\"Zmienne w chmurze\\" nie mogą być zamienione na \\"Dla jednego duszka\\"","swap-local-global/cant-convert-conflict":"Nie można zamienić, ponieważ koliduje ze zmiennymi w innym duszku: {sprites}","swap-local-global/cant-convert-stage":"Scena nie może mieć zmiennych \\"Tylko dla tego duszka\\".","swap-local-global/cant-convert-to-local":"Nie można zamienić, ponieważ to jest używane przez wiele duszków: {sprites}","swap-local-global/cant-convert-used-elsewhere":"Nie można zamienić, ponieważ jest używana przez duszka: {sprite}","swap-local-global/edit":"Edytuj właściwości:","swap-local-global/edit-list-header":"Edytuj Listę","swap-local-global/edit-list-option":"Zmień nazwę lub edytuj listę","swap-local-global/edit-variable-header":"Edytuj Zmienną","swap-local-global/edit-variable-option":"Zmień nazwę lub edytuj zmienną","swap-local-global/to-global":"Zamień na \\"Dla wszystkich duszków\\"","swap-local-global/to-local":"Zamień na \\"Tylko dla tego duszka\\"","hide-stage/hide-stage":"Ukryj scenę"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-pt.033fb0ad5ed3ec4cb242.js b/js/addon-l10n-pt.033fb0ad5ed3ec4cb242.js new file mode 100644 index 0000000..cf9ddd9 --- /dev/null +++ b/js/addon-l10n-pt.033fb0ad5ed3ec4cb242.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[66],{1677:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"Limpar Blocos +","editor-devtools/copy-all":"Copiar Pilha","editor-devtools/copy-block":"Copiar Bloco","editor-devtools/cut-block":"Recortar Bloco","editor-devtools/lists":"listas","editor-devtools/make-space":"Abrir Espaço","editor-devtools/orphaned":"{count, plural, one {Ferramentas de desenvolvedor: Deletar 1 bloco redondo órfão?} many {Ferramentas de desenvolvedor: Deletar # blocos redondos órfãos?} other {Ferramentas de desenvolvedor: Deletar # blocos redondos órfãos?} }","editor-devtools/paste":"Colar","editor-devtools/replace":"Ferramentas de desenvolvedor: Trocar {name} nesse ator pela variável chamada:","editor-devtools/swap":"Trocar {var} no Ator","editor-devtools/unused-list":"{count, plural, one {Ferramentas de desenvolvedor: Deletar 1 lista local não utilizada? Aqui estão:\\n} many {Ferramentas de desenvolvedor: Deletar # listas locais não utilizadas? Aqui está:\\n} other {Ferramentas de desenvolvedor: Deletar # listas locais não utilizadas? Aqui está:\\n} }","editor-devtools/unused-var":"{count, plural, one {Ferramentas de desenvolvedor: Deletar 1 variável local não utilizada? Aqui está:\\n} many {Ferramentas de desenvolvedor: Deletar # variáveis locais não utilizadas? Aqui estão:\\n} other {Ferramentas de desenvolvedor: Deletar # variáveis locais não utilizadas? Aqui estão:\\n} }","editor-devtools/var-not-exist":"Essa variável não existe...","editor-devtools/variables":"variáveis","find-bar/find-placeholder":"Localizar (Ctrl+F)","editor-searchable-dropdowns/createBroadcast":"Criar mensagem \\"{name}\\"","editor-searchable-dropdowns/createGlobalList":"Criar lista \\"{name}\\" para todos os atores","editor-searchable-dropdowns/createGlobalVariable":"Criar variável \\"{name}\\" para todos os atores","editor-searchable-dropdowns/createLocalList":"Criar lista \\"{name}\\" somente para este ator","editor-searchable-dropdowns/createLocalVariable":"Criar variável \\"{name}\\" somente para este ator","data-category-tweaks-v2/for-all-sprites":"Para todos os atores:","data-category-tweaks-v2/for-this-sprite-only":"Apenas para este ator:","data-category-tweaks-v2/list-category":"Listas","hide-flyout/lock":"Trancar Paleta","hide-flyout/unlock":"Destrancar Paleta","mediarecorder/cancel":"Cancelar","mediarecorder/click-flag":"Esperando...","mediarecorder/click-flag-description":"Clique na bandeira verde para começar a gravar. Clique nesse botão para parar.","mediarecorder/option-title":"Opções de Gravação","mediarecorder/record-after-flag":"Só começar a gravar quando a bandeira verde for clicada","mediarecorder/record-audio":"Incluir sons do projeto","mediarecorder/record-audio-description":"Isso não inclui Texto-para-Fala","mediarecorder/record-duration":"Tempo de Gravação (em segundos)","mediarecorder/record-mic":"Incluir sons do microfone","mediarecorder/record-until-stop":"Parar de gravar quando o projeto for parado","mediarecorder/record-until-stop-disabled":"Você precisa ativar \\"{afterFlagOption}\\" para usar essa opção.","mediarecorder/start":"Começar","mediarecorder/start-delay":"Delay Inicial (em segundos)","mediarecorder/starting-in":"Começando em {secs}...","mediarecorder/stop":"Parar Gravação","debugger/block-error":"erro %s","debugger/block-warn":"aviso %s","debugger/cannot-pause-player":"O bloco de breakpoint só pode ser usado no editor.","debugger/clear":"Limpar","debugger/clone-of":"Clone de {sprite}","debugger/close":"Fechar","debugger/empty-string":"(nenhum texto)","debugger/enter-format":"Escolha o formato de exportação:","debugger/export":"Exportar","debugger/export-desc":"Clique enquanto segura Shift para customizar o formato de exportação.","debugger/icon-error":"Erro","debugger/icon-warn":"Aviso","debugger/log-msg-broadcasted":"Mensagem \'{broadcast}\' enviada.","debugger/log-msg-clone-cap":"Falha ao criar clone de \'{sprite}\', não é possível criar mais que 300 clones.","debugger/log-msg-clone-created":"Clone de \'{sprite}\' criado.","debugger/log-msg-flag-clicked":"Bandeira verde clicada.","debugger/no-logs":"Não há registros para mostrar.","debugger/no-threads-running":"Nenhuma linha em execução.","debugger/step":"Avançar um passo","debugger/step-desc":"Executa um bloco.","debugger/tab-logs":"Registros","debugger/tab-threads":"Linhas de execução","debugger/thread":"Linha de execução {id}","debugger/unknown-sprite":"(ator desconhecido)","debugger/unpause":"Continuar","pause/pause":"Pausar","color-picker/hex":"cor hex","remove-sprite-confirm/confirm":"Quer deletar esse ator?","block-count/blocks":"{num, plural, one {1 bloco} many {# blocos} other {# blocos}}","onion-skinning/behind":"Atrás","onion-skinning/front":"Na frente","onion-skinning/layering":"Camada","onion-skinning/merge":"Transparente","onion-skinning/mode":"Modo","onion-skinning/next":"Próximas fantasias","onion-skinning/opacity":"Opacidade (%)","onion-skinning/opacityStep":"Aumento de opacidade (%)","onion-skinning/previous":"Fantasias anteriores","onion-skinning/settings":"Configurações de Onion Skinning","onion-skinning/tint":"Colorido","onion-skinning/toggle":"Ligar/Desligar Onion Skinning","2d-color-picker/shade":"Tom","better-img-uploads/upload":"Carregar Fantasia HD","variable-manager/for-all-sprites":"Variáveis para todos os atores","variable-manager/for-this-sprite":"Variáveis desse ator","variable-manager/search":"Buscar","variable-manager/variables":"Variáveis","search-sprites/placeholder":"Buscar atores...","gamepad/axes-a-b":"Direcionais {a} e {b}","gamepad/axis-arrows":"Setinhas","gamepad/axis-custom":"Customizado","gamepad/axis-none":"Nenhum","gamepad/browser-support":"Esse navegador e sistema operacional têm bugs que dificultam o uso desse addon. Tente outro navegador se você encontrar problemas.","gamepad/button-n":"Botão {n}","gamepad/clear":"Limpar todos os controles","gamepad/config-header":"Esse comentário contém configuração de suporte para controle em sites e ferramentas de terceiros como https://turbowarp.org/\\nNão edite manualmente","gamepad/key-click":"Clique","gamepad/key-down":"Baixo","gamepad/key-left":"Esquerda","gamepad/key-none":"(nenhum)","gamepad/key-right":"Direita","gamepad/key-space":"Espaço","gamepad/key-up":"Cima","gamepad/keyinput-title":"Clique e aperte uma tecla ou clique para trocar o botão. Aperte Esc para cancelar. Aperte Backspace ou Delete para apagar.","gamepad/no-controllers":"Nenhum controle detectado. Tente conectar um e apertar um botão nele.","gamepad/reset":"Redefinir todos os controles ao padrão do projeto","gamepad/settings":"Configurações do Controle","gamepad/store-in-project":"Guardar essas configurações no projeto para sobrescrever configuração padrão (Ferramenta experimental para criadores de projeto)","folders/add-to-folder":"adicionar à pasta: {folder}","folders/closed-folder":"Pasta","folders/confirm-backpack-folder":"Salvar pasta inteira na mochila?","folders/create-folder":"criar pasta","folders/name-not-allowed":"Nome de pasta inválido","folders/name-prompt":"Nome da pasta:","folders/name-prompt-title":"Criar Pasta","folders/open-folder":"Aberta","folders/remove-folder":"remover pasta","folders/remove-from-folder":"remover da pasta","folders/rename-folder":"renomear pasta","folders/rename-folder-prompt":"Renomear pasta para:","folders/rename-folder-prompt-title":"Renomear Pasta","block-switching/control_forever":"sempre","block-switching/control_if":"se","block-switching/control_if_else":"se... senão","block-switching/control_repeat_until":"repita até que","block-switching/control_wait_until":"espere até que","block-switching/data_changevariableby":"adicionar à variável","block-switching/data_hidelist":"esconder lista","block-switching/data_hidevariable":"esconder variável","block-switching/data_insertatlist":"insira um item","block-switching/data_replaceitemoflist":"substitua um item","block-switching/data_setvariableto":"mude a variável para","block-switching/data_showlist":"mostrar lista","block-switching/data_showvariable":"mostrar variável","block-switching/debugger_error":"erro","block-switching/debugger_warn":"aviso","block-switching/event_broadcast":"transmita","block-switching/event_broadcastandwait":"transmita e espere","block-switching/looks_backdropnumbername":"número ou nome do cenário","block-switching/looks_changeeffectby":"mude ao efeito","block-switching/looks_changesizeby":"mude no tamanho","block-switching/looks_costumenumbername":"número ou nome da fantasia","block-switching/looks_hide":"esconda","block-switching/looks_nextbackdrop":"próximo cenário","block-switching/looks_nextcostume":"próxima fantasia","block-switching/looks_say":"diga","block-switching/looks_sayforsecs":"diga por segundos","block-switching/looks_seteffectto":"defina o efeito como","block-switching/looks_setsizeto":"defina o tamanho como","block-switching/looks_show":"mostre","block-switching/looks_switchbackdropto":"mude para o cenário","block-switching/looks_switchbackdroptoandwait":"mude para o cenário e espere","block-switching/looks_think":"pense","block-switching/looks_thinkforsecs":"pense por segundos","block-switching/motion_changexby":"adicione a x","block-switching/motion_changeyby":"adicione a y","block-switching/motion_setx":"mude x para","block-switching/motion_sety":"mude y para","block-switching/motion_turnleft":"gire para a esquerda","block-switching/motion_turnright":"gire para a direita","block-switching/motion_xposition":"posição x","block-switching/motion_yposition":"posição y","block-switching/music_changeTempo":"adicionar ao ritmo","block-switching/music_setTempo":"mudar ritmo para","block-switching/operator_and":"e","block-switching/operator_mod":"resto de... por...","block-switching/operator_or":"ou","block-switching/pen_changePenColorParamBy":"adicione ao parâmetro","block-switching/pen_changePenHueBy":"adicione à cor","block-switching/pen_changePenShadeBy":"adicione ao tom","block-switching/pen_changePenSizeBy":"adicione ao tamanho","block-switching/pen_penDown":"use a caneta","block-switching/pen_penUp":"levante a caneta","block-switching/pen_setPenColorParamTo":"mude o parâmetro para","block-switching/pen_setPenHueToNumber":"mude a cor para","block-switching/pen_setPenShadeToNumber":"mude o tom para","block-switching/pen_setPenSizeTo":"mude o tamanho para","block-switching/sensing_mousex":"posição x do mouse","block-switching/sensing_mousey":"posição y do mouse","block-switching/sound_changeeffectby":"adicione ao efeito","block-switching/sound_changevolumeby":"adicione ao volume","block-switching/sound_play":"toque","block-switching/sound_playuntildone":"toque o som até o fim","block-switching/sound_seteffectto":"mude o efeito para","block-switching/sound_setvolumeto":"mude o volume para","blocks2image/error_blocks_not_added":"Adicione blocos à área de trabalho!","blocks2image/export_all_to_PNG":"Exportar tudo como PNG","blocks2image/export_all_to_SVG":"Exportar tudo como SVG","blocks2image/export_selected_to_PNG":"Exportar bloco como PNG","blocks2image/export_selected_to_SVG":"Exportar blocos como SVG","move-to-top-bottom/bottom":"mover ao fundo","move-to-top-bottom/top":"mover ao topo","swap-local-global/cant-convert-cloud":"Variáveis na nuvem não podem ser convertidas para apenas para este ator.","swap-local-global/cant-convert-conflict":"Não foi possível converter porque o nome dessa variável iria causar conflitos com outro ator: {sprites}","swap-local-global/cant-convert-stage":"O palco não pode ter variáveis apenas para este ator.","swap-local-global/cant-convert-to-local":"Não foi possível converter porque essa variável é usada por vários atores: {sprites}","swap-local-global/cant-convert-used-elsewhere":"Não foi possível converter porque essa variável é usada por outro ator: {sprite}","swap-local-global/edit":"Editar propriedades:","swap-local-global/edit-list-header":"Editar Lista","swap-local-global/edit-list-option":"Renomear ou editar lista","swap-local-global/edit-variable-header":"Editar Variável","swap-local-global/edit-variable-option":"Renomear ou editar variável","swap-local-global/to-global":"Converter para \\"Para todos os atores\\"","swap-local-global/to-local":"Converter para \\"Apenas para este ator\\"","hide-stage/hide-stage":"Esconder palco"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-ro.9e0df549b4e4648ec93c.js b/js/addon-l10n-ro.9e0df549b4e4648ec93c.js new file mode 100644 index 0000000..1177109 --- /dev/null +++ b/js/addon-l10n-ro.9e0df549b4e4648ec93c.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[67],{1678:function(e){e.exports=JSON.parse('{"editor-devtools/copy-all":"Copiază Toate","editor-devtools/copy-block":"Copiază Blocul","editor-devtools/cut-block":"Decupează Blocul","editor-devtools/lists":"liste","editor-devtools/make-space":"Fă spațiu","editor-devtools/paste":"Inserează","editor-devtools/var-not-exist":"Acea variabilă nu există...","editor-devtools/variables":"variabile","data-category-tweaks-v2/for-all-sprites":"Pentru toate personajele:","data-category-tweaks-v2/for-this-sprite-only":"Doar pentru acest personaj:","data-category-tweaks-v2/list-category":"Liste","mediarecorder/cancel":"Anulează","mediarecorder/click-flag":"Se așteaptă...","mediarecorder/click-flag-description":"Apasă pe steagul verde pentru a începe să înregistrezi. Apasă acest buton pentru a o opri.","mediarecorder/option-title":"Opțiuni pentru Înregistrare","mediarecorder/record-after-flag":"Nu porni înregistrarea până nu se apasă pe Steagul Verde","mediarecorder/record-audio":"Include sunetele proiectului","mediarecorder/record-audio-description":"Asta nu include Text-în-Vorbire.","mediarecorder/record-duration":"Durata înregistrării (în secunde)","mediarecorder/record-mic":"Include sunete de la microfon","mediarecorder/record-until-stop":"Oprește înregistrarea la oprirea proiectului","mediarecorder/record-until-stop-disabled":"Ai nevoie să activezi „{afterFlagOption}” pentru a folosi această opțiune.","mediarecorder/start":"Pornește","mediarecorder/stop":"Oprește Înregistrarea","pause/pause":"Întrerupe","clones/clones":"clone: {cloneCount}","color-picker/hex":"culoare hex","remove-sprite-confirm/confirm":"Vrei să ștergi acest personaj?","block-count/blocks":"{num, plural, one {1 bloc} few {# blocuri} other {# de blocuri}}","onion-skinning/behind":"În spate","onion-skinning/front":"Deasupra","onion-skinning/layering":"Stratificare","onion-skinning/merge":"Combină","onion-skinning/mode":"Mod","onion-skinning/next":"Costume următoare","onion-skinning/opacity":"Opacitate (%)","onion-skinning/opacityStep":"Creșterea Opacității (%)","onion-skinning/previous":"Costume anterioare","onion-skinning/settings":"Setări pentru modul Costume Suprapuse","onion-skinning/tint":"Nuanțe","onion-skinning/toggle":"Pornește/Oprește modul Costume Suprapuse","2d-color-picker/shade":"Umbră","variable-manager/for-all-sprites":" Variabile pentru toate personaj","variable-manager/for-this-sprite":" Variabile pentru acest personaj","variable-manager/search":"Caută","variable-manager/variables":"Variabile","search-sprites/placeholder":"Caută personaje...","gamepad/axes-a-b":"Axele {a} și {b}","gamepad/axis-arrows":"Taste săgeți","gamepad/axis-none":"Nimic","gamepad/button-n":"Buton {n}","gamepad/key-click":"Clic","gamepad/key-down":"Jos","gamepad/key-left":"Stânga","gamepad/key-none":"(nimic)","gamepad/key-right":"Dreapta","gamepad/key-space":"Spațiu","gamepad/key-up":"Sus","gamepad/no-controllers":"Niciun controller detectat. Încearcă să conectezi unul și să apeși un buton de pe el.","gamepad/settings":"Setări gamepad","folders/add-to-folder":"adaugă în dosar: {folder}","folders/closed-folder":"Dosar","folders/confirm-backpack-folder":"Salvezi întregul folder în Rucsac?","folders/create-folder":"creează dosar","folders/name-not-allowed":"Nume de dosar invalid","folders/name-prompt":"Numele dosarului:","folders/open-folder":"Deschis","folders/remove-folder":"elimină dosar","folders/remove-from-folder":"elimină din dosar","folders/rename-folder":"redenumește dosar","folders/rename-folder-prompt":"Redenumește dosar la:","block-switching/control_forever":"la infinit","block-switching/control_if":"dacă","block-switching/control_if_else":"dacă... altfel","block-switching/control_repeat_until":"repetă până când","block-switching/control_wait_until":"așteaptă până când","block-switching/data_changevariableby":"schimbă variabila","block-switching/data_hidelist":"ascunde lista","block-switching/data_hidevariable":"ascunde variabila","block-switching/data_insertatlist":"inserează element","block-switching/data_replaceitemoflist":"înlocuiește element","block-switching/data_setvariableto":"setează variabila","block-switching/data_showlist":"arată lista","block-switching/data_showvariable":"arată variabila","block-switching/event_broadcast":"difuzează","block-switching/event_broadcastandwait":"difuzează și așteaptă","block-switching/looks_backdropnumbername":"număr sau nume decor","block-switching/looks_changeeffectby":"modifică efect","block-switching/looks_changesizeby":"modifică mărimea","block-switching/looks_costumenumbername":"număr sau nume costum","block-switching/looks_hide":"ascunde","block-switching/looks_nextbackdrop":"decorul următor","block-switching/looks_nextcostume":"costumul următor","block-switching/looks_say":"spune","block-switching/looks_sayforsecs":"spune pentru secunde","block-switching/looks_seteffectto":"setează efectul","block-switching/looks_setsizeto":"setează mărimea","block-switching/looks_show":"arată","block-switching/looks_switchbackdropto":"schimbă decorul","block-switching/looks_switchbackdroptoandwait":"schimbă decorul și așteaptă","block-switching/looks_think":"gândește","block-switching/looks_thinkforsecs":"gândește pentru secunde","block-switching/motion_changexby":"schimbă x","block-switching/motion_changeyby":"schimbă y","block-switching/motion_setx":"setează x","block-switching/motion_sety":"setează y","block-switching/motion_turnleft":"rotește-te la stânga","block-switching/motion_turnright":"rotește-te la dreapta","block-switching/motion_xposition":"poziția x","block-switching/motion_yposition":"poziția y","block-switching/music_changeTempo":"schimbă ritmul","block-switching/music_setTempo":"setează viteza","block-switching/operator_and":"și","block-switching/operator_or":"sau","block-switching/pen_changePenColorParamBy":"modifică parametru","block-switching/pen_changePenHueBy":"modifică nuanța","block-switching/pen_changePenShadeBy":"modifică transparența","block-switching/pen_changePenSizeBy":" modifică mărimea","block-switching/pen_penDown":"stilou jos","block-switching/pen_penUp":"stilou sus","block-switching/pen_setPenColorParamTo":"setează parametru","block-switching/pen_setPenHueToNumber":"setează nuanța","block-switching/pen_setPenShadeToNumber":"setează transparența","block-switching/pen_setPenSizeTo":"setează mărimea","block-switching/sound_changeeffectby":"modifică efectul","block-switching/sound_changevolumeby":"modifică volumul","block-switching/sound_playuntildone":"redă sunetul până la final","block-switching/sound_seteffectto":"setează efectul","block-switching/sound_setvolumeto":"setează volumul","blocks2image/error_blocks_not_added":"Adaugă câteva blocuri în spațiul de lucru!","move-to-top-bottom/bottom":"mută în partea de jos","move-to-top-bottom/top":"mută în vârf","swap-local-global/edit-list-header":"Editează lista","swap-local-global/edit-variable-header":"Editează Variabila"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-ru.82eedbc7a858c6cd113f.js b/js/addon-l10n-ru.82eedbc7a858c6cd113f.js new file mode 100644 index 0000000..f179f75 --- /dev/null +++ b/js/addon-l10n-ru.82eedbc7a858c6cd113f.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[68],{1679:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"Очистить блоки +","editor-devtools/copy-all":"Копировать все","editor-devtools/copy-block":"Копировать блок","editor-devtools/cut-block":"Вырезать блок","editor-devtools/lists":"списки","editor-devtools/make-space":"Сделать пространство","editor-devtools/orphaned":"{count, plural, one {Инструменты разработчика: Удалить неиспользуемый блок сенсора?} few {Инструменты разработчика: Удалить # неиспользуемых блоков сенсора?} many {Инструменты разработчика: Удалить # неиспользуемых блоков сенсора?} other {Инструменты разработчика: Удалить # неиспользуемых блоков сенсора? } }","editor-devtools/paste":"Вставить","editor-devtools/replace":"Инструменты разработчика: Сделать все {name} у этого спрайта переменной названной:","editor-devtools/swap":"Сделать {var} для спрайта","editor-devtools/unused-list":"{count, plural, one {Инструменты разработчика: Удалить неиспользуемый локальный список? Вот он:\\n} few {Инструменты разработчика: удалить # не используемых локальных списков? Вот они:\\n} many {Инструменты разработчика: Удалить # неиспользуемых локальных листов? Вот они:\\n} other {Инструменты разработчика: Удалить # неиспользуемых локальных списков? Вот они:\\n} }","editor-devtools/unused-var":"{count, plural, one {Инструменты разработчика: Удалить неиспользуемую локальную переменную? Вот она:\\n} few {Инструменты разработчика: Удалить # неиспользуемых локальных переменных? Вот они:\\n} many {Инструменты разработчика: Удалить # неиспользуемых локальных переменных? Вот они:\\n} other {Инструменты разработчика: Удалить # неиспользуемых локальных переменных? Вот они:\\n} }","editor-devtools/var-not-exist":"Эта переменная не существует...","editor-devtools/variables":"переменные","find-bar/complex-broadcast":"(выделение)","find-bar/find-placeholder":"Поиск (Ctrl+F)","middle-click-popup/start-typing":"Начните печатать...","editor-searchable-dropdowns/createBroadcast":"Создать сообщение \\"{name}\\"","editor-searchable-dropdowns/createGlobalList":"Создать список \\"{name}\\" для всех спрайтов","editor-searchable-dropdowns/createGlobalVariable":"Создать переменную \\"{name}\\" для всех спрайтов","editor-searchable-dropdowns/createLocalList":"Создать список \\"{name}\\" только для этого спрайта","editor-searchable-dropdowns/createLocalVariable":"Создать переменную \\"{name}\\" только для этого спрайта","data-category-tweaks-v2/for-all-sprites":"Для всех спрайтов:","data-category-tweaks-v2/for-this-sprite-only":"Только для этого спрайта:","data-category-tweaks-v2/list-category":"Списки","hide-flyout/lock":"Заблокировать палитру","hide-flyout/unlock":"Разблокировать палитру","mediarecorder/cancel":"Отмена","mediarecorder/click-flag":"Ожидание...","mediarecorder/click-flag-description":"Нажмите зеленый флаг, чтобы начать запись. Нажмите эту кнопку, чтобы остановить.","mediarecorder/option-title":"Настройки записи","mediarecorder/record-after-flag":"Не начинать запись, пока не нажат зеленый флаг","mediarecorder/record-audio":"Включить звуки проекта","mediarecorder/record-audio-description":"Это не включает Text-to-Speech.","mediarecorder/record-duration":"Продолжительность записи (в секундах)","mediarecorder/record-mic":"Включить звуки из микрофона","mediarecorder/record-until-stop":"Остановить запись после остановки проекта","mediarecorder/record-until-stop-disabled":"Вы должны включить \\"{afterFlagOption}\\", чтобы использовать эту настройку.","mediarecorder/start":"Начать","mediarecorder/start-delay":"Задержка старта (в секундах)","mediarecorder/starting-in":"Старт через {secs}...","mediarecorder/stop":"Остановить запись","debugger/block-breakpoint":"приостановить","debugger/block-error":"ошибка %s","debugger/block-log":"логировать %s","debugger/block-warn":"предупредить %s","debugger/cannot-pause-player":"Блок точки остановки может быть использовать только в редакторе.","debugger/clear":"Очистить","debugger/clone-of":"Клон {sprite}","debugger/close":"Закрыть","debugger/console":"Логи","debugger/debug":"Отладка","debugger/empty-string":"(пустая строка)","debugger/enter-format":"Введите формат экспорта:","debugger/export":"Экспорт","debugger/export-desc":"Щелкните, удерживая Shift, чтобы настроить формат экспорта.","debugger/icon-error":"Ошибка","debugger/icon-warn":"Предупреждение","debugger/log-msg-broadcasted":"Передали «{broadcast}».","debugger/log-msg-clone-cap":"Не удалось создать клон \'{sprite}\', невозможно создать более 300 клонов.","debugger/log-msg-clone-created":"Создан клон \'{sprite}\'.","debugger/log-msg-flag-clicked":"Зелёный флаг нажат.","debugger/no-logs":"Нет логов для показа.","debugger/no-threads-running":"Потоки не выполняются.","debugger/step":"Шаг","debugger/step-desc":"Выполнить один блок.","debugger/tab-logs":"Логи","debugger/tab-threads":"Потоки","debugger/thread":"Поток {id}","debugger/unknown-sprite":"(неизвестный спрайт)","debugger/unpause":"Продолжить","pause/pause":"Пауза","clones/clones":"клонов: {cloneCount}","color-picker/hex":"цвет hex","remove-sprite-confirm/confirm":"Вы хотите удалить спрайт?","block-count/blocks":"{num, plural, one {1 блок} few {# блока} many {# блоков} other {# блоков}}","onion-skinning/behind":"Сзади","onion-skinning/front":"Впереди","onion-skinning/layering":"Наслоение","onion-skinning/merge":"Объединить","onion-skinning/mode":"Режим","onion-skinning/next":"Следующие костюмы","onion-skinning/opacity":"Непрозрачность (%)","onion-skinning/opacityStep":"Шаг непрозрачности (%)","onion-skinning/previous":"Прошлые костюмы","onion-skinning/settings":"Настройки отображения предыдущих костюмов","onion-skinning/tint":"Оттенок","onion-skinning/toggle":"Включить отображение предыдущих костюмов","paint-snap/boxCenter":"Центра выбора","paint-snap/boxCorners":"Углов выбора","paint-snap/boxEdgeMids":"Средних точек выбора","paint-snap/objectCenters":"Центру объектов","paint-snap/objectCorners":"Углам объектов","paint-snap/objectEdges":"Границам объектов","paint-snap/objectMidlines":"средним линиям объектов","paint-snap/off":"Выкл","paint-snap/on":"Вкл","paint-snap/pageAxes":"Осям x и y","paint-snap/pageCenter":"Центру","paint-snap/pageCorners":"Углам","paint-snap/pageEdges":"Границам","paint-snap/settings":"Настройки привязки","paint-snap/snapFrom":"Привязка от:","paint-snap/snapTo":"Привязать к:","paint-snap/threshold":"Дистанция привязки","paint-snap/toggle":"Включить привязку","2d-color-picker/shade":"Оттенок","better-img-uploads/upload":"HD загрузка","variable-manager/for-all-sprites":"Переменные всех спрайтов","variable-manager/for-this-sprite":"Переменные этого спрайта","variable-manager/search":"Поиск","variable-manager/variables":"Переменные","search-sprites/placeholder":"Искать спрайты...","sprite-properties/close-properties-panel-tooltip":"Спрятать панель со свойствами","sprite-properties/open-properties-panel-tooltip":"Открыть панель со свойствами","gamepad/axes-a-b":"Оси {a}и{b}","gamepad/axis-arrows":"Клавиши стрелок","gamepad/axis-cursor":"Курсор","gamepad/axis-custom":"Настраиваемый","gamepad/axis-none":"Ничего","gamepad/browser-support":"Этот браузер и операционная система имеют известные баги, которые могут повлиять на использование этого аддона. Попробуйте др. браузер, если у Вас появятся проблемы.","gamepad/button-n":"Кнопка{n}","gamepad/clear":"Очистить все элементы управления","gamepad/config-header":"Этот комментарий содержит конфигурацию для поддержки геймпада в сторонних инструментах или сайтах по типу https://turbowarp.org/\\nНе редактировать самим","gamepad/key-click":"Нажатие","gamepad/key-down":"Вниз","gamepad/key-enter":"Ввод","gamepad/key-left":"Налево","gamepad/key-none":"(ничего)","gamepad/key-right":"Направо","gamepad/key-space":"Пробел","gamepad/key-up":"Вверх","gamepad/keyinput-title":"Кликните и нажмите клавишу или кликните для смены кнопки. Esc для отмены. Backspace или Delete для очистки.","gamepad/no-controllers":"Не обнаружены контроллеры. Попробуйте подключить какой-нибудь контроллер и нажать на нём кнопку.","gamepad/reset":"Сменить управление на стандартное","gamepad/settings":"Настройки геймпада","gamepad/store-in-project":"Хранить эти настройки в проекте для обхода конфигурации по умолчанию (Экспериментальный инструмент для создателей проектов)","folders/add-to-folder":"добавить к папке: {folder}","folders/closed-folder":"Папка","folders/confirm-backpack-folder":"Сохранить всю папку в рюкзак?","folders/create-folder":"создать папку","folders/name-not-allowed":"Неверное имя папки","folders/name-prompt":"Название папки:","folders/name-prompt-title":"Создание папки","folders/open-folder":"Открыто","folders/remove-folder":"удалить папку","folders/remove-from-folder":"удалить из папки","folders/rename-folder":"переименовать папку","folders/rename-folder-prompt":"Переименовать папку в:","folders/rename-folder-prompt-title":"Переименование папки","block-switching/control_forever":"всегда","block-switching/control_if":"если","block-switching/control_if_else":"если... иначе","block-switching/control_repeat_until":"повторять до","block-switching/control_wait_until":"ждать до","block-switching/data_changevariableby":"изменить переменную","block-switching/data_hidelist":"скрыть список","block-switching/data_hidevariable":"спрятать переменную","block-switching/data_insertatlist":"вставить элемент","block-switching/data_replaceitemoflist":"заменить элемент","block-switching/data_setvariableto":"установить переменную","block-switching/data_showlist":"показать список","block-switching/data_showvariable":"показать переменную","block-switching/debugger_error":"ошибка","block-switching/debugger_log":"лог","block-switching/debugger_warn":"предупредить","block-switching/event_broadcast":"передать","block-switching/event_broadcastandwait":"передать и ждать до конца","block-switching/looks_backdropnumbername":"номер фона или имя фона","block-switching/looks_changeeffectby":"изменить эффект","block-switching/looks_changesizeby":"изменить размер","block-switching/looks_costumenumbername":"номер костюма или имя костюма","block-switching/looks_hide":"спрятаться","block-switching/looks_nextbackdrop":"следующий фон","block-switching/looks_nextcostume":"следующий костюм","block-switching/looks_say":"сказать","block-switching/looks_sayforsecs":"говорить секунд","block-switching/looks_seteffectto":"установить эффект","block-switching/looks_setsizeto":"установить размер","block-switching/looks_show":"показаться","block-switching/looks_switchbackdropto":"переключить фон на","block-switching/looks_switchbackdroptoandwait":"изменить фон и ждать","block-switching/looks_think":"думать","block-switching/looks_thinkforsecs":"думать секунд","block-switching/motion_changexby":"изменить x","block-switching/motion_changeyby":"изменить y","block-switching/motion_setx":"установить x","block-switching/motion_sety":"установить y","block-switching/motion_turnleft":"повернуть налево","block-switching/motion_turnright":"повернуть направо","block-switching/motion_xposition":"позиция x","block-switching/motion_yposition":"позиция y","block-switching/music_changeTempo":"изменить темп","block-switching/music_setTempo":"задать темп","block-switching/operator_and":"и","block-switching/operator_mod":"мод","block-switching/operator_or":"или","block-switching/pen_changePenColorParamBy":"изменить параметр","block-switching/pen_changePenHueBy":"изменить цвет","block-switching/pen_changePenShadeBy":"изменить оттенок","block-switching/pen_changePenSizeBy":"изменить размер","block-switching/pen_penDown":"опустить перо","block-switching/pen_penUp":"поднять перо","block-switching/pen_setPenColorParamTo":"задать параметр","block-switching/pen_setPenHueToNumber":"задать цвет","block-switching/pen_setPenShadeToNumber":"задать оттенок","block-switching/pen_setPenSizeTo":"задать размер","block-switching/sensing_mousex":"x мыши","block-switching/sensing_mousey":"y мыши","block-switching/sound_changeeffectby":"изменить эффект","block-switching/sound_changevolumeby":"изменить громкость","block-switching/sound_play":"включить звук","block-switching/sound_playuntildone":"проигрывать до конца","block-switching/sound_seteffectto":"задать эффект","block-switching/sound_setvolumeto":"задать громкость","blocks2image/error_blocks_not_added":"Добавить блоки на рабочую область!","blocks2image/export_all_to_PNG":"Экспорт всех блоков в формате PNG","blocks2image/export_all_to_SVG":"Экспорт всех блоков в SVG","blocks2image/export_selected_to_PNG":"Экспорт блока как PNG","blocks2image/export_selected_to_SVG":"Экспорт блока в формате SVG","editor-extra-keys/enter-key":"ввод","move-to-top-bottom/bottom":"переместить вниз","move-to-top-bottom/top":"переместить наверх","rename-broadcasts/RENAME_BROADCAST":"Переименовать сообщение","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"Переименовать Сообщение","rename-broadcasts/RENAME_BROADCAST_TITLE":"переименовать \\"{name}\\" сообщений в:","swap-local-global/cant-convert-cloud":"Облачные переменные нельзя преобразовать только в этот спрайт.","swap-local-global/cant-convert-conflict":"Невозможно сконвертировать, так как будет конфликт с переменными в другом спрайте: {sprites}","swap-local-global/cant-convert-stage":"В сцене не может быть переменных только для этого спрайта.","swap-local-global/cant-convert-to-local":"Невозможно преобразовать, потому что используется несколькими спрайтами:{sprites}","swap-local-global/cant-convert-used-elsewhere":"Невозможно сконвертировать, т. к. оно уже используется другим спрайтом: {sprite}","swap-local-global/edit":"Изменить свойства:","swap-local-global/edit-list-header":"Изменить список","swap-local-global/edit-list-option":"Переименовать или изменить список","swap-local-global/edit-variable-header":"Изменить переменную","swap-local-global/edit-variable-option":"Переименовать или изменить переменную","swap-local-global/to-global":"Конвертировать в \\"Для всех спрайтов\\"","swap-local-global/to-local":"Конвертировать в \\"Для всех спрайтов\\"","hide-stage/hide-stage":"Скрыть сцену"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-sl.4cf871f1345a2b7e3f6c.js b/js/addon-l10n-sl.4cf871f1345a2b7e3f6c.js new file mode 100644 index 0000000..43b3f0e --- /dev/null +++ b/js/addon-l10n-sl.4cf871f1345a2b7e3f6c.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[69],{1680:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"Počisti bloke +","editor-devtools/copy-all":"Kopiraj vse","editor-devtools/copy-block":"Kopiraj blok","editor-devtools/cut-block":"Izreži blok","editor-devtools/lists":"seznami","editor-devtools/make-space":"Naredi prostor","editor-devtools/orphaned":"{count, plural, one {Developer tools: Naj izbrišem 1 neuporabljen okrogel blok?} two {Developer tools: Naj izbrišem 2 neuporabljena okrogla bloka?} few {Developer tools: Naj izbrišem # neuporabljene okrogle bloke?} other {Orodje za razvijalce: Naj izbrišem # neuporabljenih okroglih blokov?} }","editor-devtools/paste":"Prilepi","editor-devtools/replace":"Orodje za razvijalce: Zamenjaj vse {name} v tej figuri s spremenljivko z imenom:","editor-devtools/swap":"Zamenjaj {var} v figuri","editor-devtools/unused-list":"{count, plural, one {Developer tools: Naj izbrišem 1 neuporabljen lokalni seznam? Tukaj je:\\n} two {Developer tools: Naj izbrišem 2 neuporabljena lokalna seznama? Tukaj sta:\\n} few {Developer tools: Naj izbrišem # neuporabljene lokalne sezname? Tukaj so:\\n} other {Orodje za razvijalce: Naj izbrišem # neuporabljenih lokalnih seznamov? Tukaj so:\\n} }","editor-devtools/unused-var":"{count, plural, one {Developer tools: Naj izbrišem 1 neuporabljeno lokalno spremenljivko? Tukaj je:\\n} two {Developer tools: Naj izbrišem 2 neuporabljeni lokalni spremenljivki? Tukaj sta:\\n} few {Developer tools: Naj izbrišem # neuporabljene lokalne spremenljivke? Tukaj so:\\n} other {Orodje za razvijalce: Naj izbrišem # neuporabljenih lokalnih spremenljivk? Tukaj so:\\n} }","editor-devtools/var-not-exist":"Ta spremenljivka ne obstaja...","editor-devtools/variables":"spremenljivke","find-bar/complex-broadcast":"(izraz)","find-bar/find-placeholder":"Iskanje (Ctrl+F)","middle-click-popup/start-typing":"Začnite tipkati...","editor-searchable-dropdowns/createBroadcast":"Ustvari sporočilo \\"{name}\\"","editor-searchable-dropdowns/createGlobalList":"Ustvari seznam \\"{name}\\" za vse figure","editor-searchable-dropdowns/createGlobalVariable":"Ustvari spremenljivko \\"{name}\\" za vse figure","editor-searchable-dropdowns/createLocalList":"Ustvari seznam \\"{name}\\" samo za to figuro","editor-searchable-dropdowns/createLocalVariable":"Ustvari spremenljivko \\"{name}\\" samo za to figuro","data-category-tweaks-v2/for-all-sprites":"Za vse figure:","data-category-tweaks-v2/for-this-sprite-only":"Samo za to figuro:","data-category-tweaks-v2/list-category":"Seznami","hide-flyout/lock":"Zakleni paleto","hide-flyout/unlock":"Odkleni paleto","mediarecorder/cancel":"Prekliči","mediarecorder/click-flag":"Čakanje...","mediarecorder/click-flag-description":"Kliknite zeleno zastavico, da začnete snemanje. Kliknite ta gumb, da ga ustavite.","mediarecorder/option-title":"Možnosti snemanja","mediarecorder/record":"Snemaj","mediarecorder/record-after-flag":"Ne začni snemanja, dokler ne kliknem zelene zastavice","mediarecorder/record-audio":"Vključi zvoke projekta","mediarecorder/record-audio-description":"To ne vključuje razširitve Besedilo v govor.","mediarecorder/record-description":"Posnemite oder kot datoteko WebM. Lahko jo shranite na računalnik, ko je snemanje končano.\\nSpremenljivke in seznami ne bodo vidni na posnetku.","mediarecorder/record-duration":"Trajanje snemanja (v sekundah)","mediarecorder/record-mic":"Vključi zvok mikrofona","mediarecorder/record-until-stop":"Končaj snemanje, ko se projekt ustavi","mediarecorder/record-until-stop-disabled":"Vključite \\"{afterFlagOption}\\", da uporabite to možnost.","mediarecorder/start":"Začni","mediarecorder/start-delay":"Začni čez (v sekundah)","mediarecorder/starting-in":"Začenjam čez {secs}...","mediarecorder/stop":"Ustavi snemanje","debugger/block-error":"napaka %s","debugger/block-log":"zapiši %s","debugger/block-warn":"opozorilo %s","debugger/cannot-pause-player":"Blok breakpoint deluje samo v urejevalniku.","debugger/clear":"Počisti","debugger/clone-of":"Dvojnik figure {sprite}","debugger/close":"Zapri","debugger/console":"Razhroščevanje","debugger/debug":"Razhroščevanje","debugger/empty-string":"(prazen niz)","debugger/enter-format":"Oblika datoteke za izvoz:","debugger/export":"Izvozi","debugger/export-desc":"Kliknite, medtem ko držite tipko Shift, da izberete obliko datoteke za izvoz.","debugger/icon-error":"Napaka","debugger/icon-warn":"Opozorilo","debugger/log-msg-broadcasted":"Sporočilo \'{broadcast}\' objavljeno.","debugger/log-msg-clone-cap":"Podvajanje figure \'{sprite}\' ni uspelo, število dvojnikov je omejeno na 300.","debugger/log-msg-clone-created":"Dvojnik figure \'{sprite}\' narejen.","debugger/log-msg-flag-clicked":"Zelena zastavica kliknjena.","debugger/no-logs":"Ni zapiskov za prikaz.","debugger/no-threads-running":"Nobena nit ne deluje.","debugger/step":"Korak","debugger/step-desc":"Izvede en blok.","debugger/tab-logs":"Zapiski","debugger/tab-threads":"Niti","debugger/thread":"Nit {id}","debugger/unknown-sprite":"(neznana figura)","debugger/unpause":"Nadaljuj","pause/pause":"Premor","clones/clones":"dvojniki: {cloneCount}","color-picker/hex":"barva","remove-sprite-confirm/confirm":"Želite izbrisati figuro?","block-count/blocks":"{num, plural, one {1 blok} two {2 bloka} few {# bloki} other {# blokov}}","onion-skinning/behind":"Zadaj","onion-skinning/front":"Spredaj","onion-skinning/layering":"Plast","onion-skinning/merge":"Združi","onion-skinning/mode":"Način","onion-skinning/next":"Naslednji videzi","onion-skinning/opacity":"Neprosojnost (%)","onion-skinning/opacityStep":"Sprememba neprosojnosti (%)","onion-skinning/previous":"Prejšnji videzi","onion-skinning/settings":"Nastavitve za onion skinning","onion-skinning/tint":"Barva","onion-skinning/toggle":"Vključi ali izključi onion skinning","paint-snap/boxCenter":"Središče izbire","paint-snap/boxCorners":"Oglišča izbire","paint-snap/boxEdgeMids":"Razpolovišča robov izbire","paint-snap/objectCenters":"Središča predmetov","paint-snap/objectCorners":"Oglišča predmetov","paint-snap/objectEdges":"Robovi predmetov","paint-snap/objectMidlines":"Osi predmetov","paint-snap/pageAxes":"Osi x in y strani","paint-snap/pageCenter":"Središče strani","paint-snap/pageCorners":"Oglišča strani","paint-snap/pageEdges":"Robovi strani","2d-color-picker/shade":"Odtenek","better-img-uploads/upload":"Naloži HD","variable-manager/for-all-sprites":"Spremenljivke za vse figure","variable-manager/for-this-sprite":"Spremenljivke za to figuro","variable-manager/search":"Iskanje","variable-manager/too-big":"Kliknite za prikaz zelo velike vrednosti.","variable-manager/variables":"Spremenljivke","search-sprites/placeholder":"Iskanje figur...","sprite-properties/close-properties-panel-tooltip":"Skrči lastnosti","sprite-properties/open-properties-panel-tooltip":"Odpri lastnosti","gamepad/axes-a-b":"Osi {a} in {b}","gamepad/axis-arrows":"Tipke s puščicami","gamepad/axis-cursor":"Kazalec miške","gamepad/axis-custom":"Po meri","gamepad/axis-none":"Brez","gamepad/browser-support":"Ta brskalnik in operacijski sistem imata znane napake, ki lahko naredijo uporabo tega dodatka težjo. Če pride do težav, preizkusite drug brskalnik.","gamepad/button-n":"Gumb {n}","gamepad/clear":"Izbriši vse","gamepad/config-header":"Ta komentar vsebuje nastavitve za podporo igralnih ploščkov v orodju ali spletnih straneh, kot je https://turbowarp.org/\\nNe spreminjajte ročno","gamepad/key-click":"Klik miške","gamepad/key-down":"Dol","gamepad/key-left":"Levo","gamepad/key-none":"(brez)","gamepad/key-right":"Desno","gamepad/key-space":"Presledek","gamepad/key-up":"Gor","gamepad/keyinput-title":"Kliknite in pritisnite tipko ali kliknite z miško, da izberete gumb. Pritisnite tipko Escape za preklic ali Backspace/Delete, da izbrišete vnos.","gamepad/no-controllers":"Noben igralni plošček ni bil zaznan. Poskusite ga priključiti in pritisniti gumb na njem.","gamepad/reset":"Povrni privzete nastavitve","gamepad/settings":"Nastavitve igralnih ploščkov","gamepad/store-in-project":"Shrani te nastavitve v projektu, da nadomestijo privzete nastavitve (Preizkusna možnost za ustvarjalce projektov)","folders/add-to-folder":"dodaj v mapo: {folder}","folders/closed-folder":"Mapa","folders/confirm-backpack-folder":"Naj shranim celotno mapo v shrambo?","folders/create-folder":"ustvari mapo","folders/name-not-allowed":"Neveljavno ime mape","folders/name-prompt":"Ime mape:","folders/name-prompt-title":"Ustvari mapo","folders/open-folder":"Odprta","folders/remove-folder":"odstrani mapo","folders/remove-from-folder":"odstrani iz mape","folders/rename-folder":"preimenuj mapo","folders/rename-folder-prompt":"Preimenuj mapo v:","folders/rename-folder-prompt-title":"Preimenuj mapo","block-switching/control_forever":"ponavljaj","block-switching/control_if":"če","block-switching/control_if_else":"če ... sicer","block-switching/control_repeat_until":"ponavljaj dokler ni","block-switching/control_wait_until":"počakaj dokler ni","block-switching/data_changevariableby":"spremeni spremenljivko","block-switching/data_hidelist":"skrij seznam","block-switching/data_hidevariable":"skrij spremenljivko","block-switching/data_insertatlist":"vstavi predmet","block-switching/data_replaceitemoflist":"zamenjaj predmet","block-switching/data_setvariableto":"nastavi spremenljivko","block-switching/data_showlist":"pokaži seznam","block-switching/data_showvariable":"pokaži spremenljivko","block-switching/debugger_error":"napaka","block-switching/debugger_log":"zapiši","block-switching/debugger_warn":"opozorilo","block-switching/event_broadcast":"objavi","block-switching/event_broadcastandwait":"objavi in čakaj","block-switching/looks_backdropnumbername":"število ali ime ozadja","block-switching/looks_changeeffectby":"spremeni učinek","block-switching/looks_changesizeby":"spremeni velikost","block-switching/looks_costumenumbername":"število ali ime videza","block-switching/looks_hide":"skrij","block-switching/looks_nextbackdrop":"naslednje ozadje","block-switching/looks_nextcostume":"naslednji videz","block-switching/looks_say":"reci","block-switching/looks_sayforsecs":"reci za ... sekund","block-switching/looks_seteffectto":"nastavi učinek","block-switching/looks_setsizeto":"nastavi velikost","block-switching/looks_show":"pokaži","block-switching/looks_switchbackdropto":"zamenjaj ozadje","block-switching/looks_switchbackdroptoandwait":"zamenjaj ozadje in počakaj","block-switching/looks_think":"pomisli","block-switching/looks_thinkforsecs":"pomisli za ... sekund","block-switching/motion_changexby":"spremeni x","block-switching/motion_changeyby":"spremeni y","block-switching/motion_setx":"nastavi x","block-switching/motion_sety":"nastavi y","block-switching/motion_turnleft":"obrni se levo","block-switching/motion_turnright":"obrni se desno","block-switching/motion_xposition":"položaj x","block-switching/motion_yposition":"položaj y","block-switching/music_changeTempo":"spremeni tempo","block-switching/music_setTempo":"nastavi tempo","block-switching/operator_and":"in","block-switching/operator_or":"ali","block-switching/pen_changePenColorParamBy":"spremeni parameter","block-switching/pen_changePenHueBy":"spremeni barvo","block-switching/pen_changePenShadeBy":"spremeni svetlost","block-switching/pen_changePenSizeBy":"spremeni velikost","block-switching/pen_penDown":"spusti pero","block-switching/pen_penUp":"dvigni pero","block-switching/pen_setPenColorParamTo":"nastavi parameter","block-switching/pen_setPenHueToNumber":"nastavi barvo","block-switching/pen_setPenShadeToNumber":"nastavi svetlost","block-switching/pen_setPenSizeTo":"nastavi velikost","block-switching/sensing_mousex":"miškin x","block-switching/sensing_mousey":"miškin y","block-switching/sound_changeeffectby":"spremeni učinek","block-switching/sound_changevolumeby":"spremeni glasnost","block-switching/sound_play":"predvajaj","block-switching/sound_playuntildone":"predvajaj do konca","block-switching/sound_seteffectto":"nastavi učinek","block-switching/sound_setvolumeto":"nastavi glasnost","blocks2image/error_blocks_not_added":"Dodajte bloke v delovni prostor!","blocks2image/export_all_to_PNG":"Izvozi vse kot PNG","blocks2image/export_all_to_SVG":"Izvozi vse kot SVG","blocks2image/export_selected_to_PNG":"Izvozi blok kot PNG","blocks2image/export_selected_to_SVG":"Izvozi blok kot SVG","move-to-top-bottom/bottom":"na dno","move-to-top-bottom/top":"na vrh","rename-broadcasts/RENAME_BROADCAST":"Preimenuj sporočilo","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"Preimenuj sporočilo","rename-broadcasts/RENAME_BROADCAST_TITLE":"Preimenuj vsa sporočila \\"{name}\\" v:","swap-local-global/cant-convert-cloud":"Spremenljivke v oblaku ne morejo biti samo za to figuro.","swap-local-global/cant-convert-conflict":"Spremenljivke ni mogoče spremeniti, ker ima enako ime kot spremenljivka v drugi figuri: {sprites}","swap-local-global/cant-convert-stage":"Oder ne more imeti spremenljivk samo za to figuro.","swap-local-global/cant-convert-to-local":"Spremenljivke ni mogoče spremeniti, ker jo uporablja več figur: {sprites}","swap-local-global/cant-convert-used-elsewhere":"Spremenljivke ni mogoče spremeniti, ker jo uporablja še ena figura: {sprite}","swap-local-global/edit":"Uredi lastnosti:","swap-local-global/edit-list-header":"Uredi seznam","swap-local-global/edit-list-option":"Preimenuj ali uredi seznam","swap-local-global/edit-variable-header":"Uredi spremenljivko","swap-local-global/edit-variable-option":"Preimenuj ali uredi spremenljivko","swap-local-global/to-global":"Spremeni v \\"Za vse figure\\"","swap-local-global/to-local":"Spremeni v \\"Samo za to figuro\\"","hide-stage/hide-stage":"Skrij oder"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-tr.ef255ae4183681f710f3.js b/js/addon-l10n-tr.ef255ae4183681f710f3.js new file mode 100644 index 0000000..e986acb --- /dev/null +++ b/js/addon-l10n-tr.ef255ae4183681f710f3.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[70],{1681:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"Blokları temizle +","editor-devtools/copy-all":"Hepsini Kopyala","editor-devtools/copy-block":"Bloğu Kopyala","editor-devtools/cut-block":"Bloğu Kes","editor-devtools/lists":"listeler","editor-devtools/make-space":"Boşluk Yap","editor-devtools/orphaned":"{count, plural, one {Geliştirici araçları: Tanımsız 1 haberci bloğu silinsin mi?} other {Geliştirici araçları: Tanımsız # haberci bloğu silinsin mi?} }","editor-devtools/paste":"Yapıştır","editor-devtools/replace":"Geliştirici araçları: {name} değişkeni için bu kuklanın tümünü değiştirin:","editor-devtools/swap":"Kuklada {var}\'i değiştir","editor-devtools/unused-list":"{count, plural, one {Geliştirici araçları: Kullanılmayan 1 yerel liste silinsin mi? İşte buradalar:\\n} other {Geliştirici araçları: Kullanılmayan # yerel liste silinsin mi? İşte buradalar:\\n} }","editor-devtools/unused-var":"{count, plural, one {Geliştirici araçları: Kullanılmayan 1 yerel değişken silinsin mi? İşte buradalar:\\n} other {Geliştirici araçları: Kullanılmayan # yerel değişken silinsin mi? İşte buradalar:\\n} }","editor-devtools/var-not-exist":"Bu değişken mevcut değil...","editor-devtools/variables":"değişkenler","find-bar/complex-broadcast":"(ifade)","find-bar/find-placeholder":"Ara (Ctrl+F)","middle-click-popup/start-typing":"Yazmaya Başla...","editor-searchable-dropdowns/createBroadcast":"\\"{name}\\" mesajını oluştur","editor-searchable-dropdowns/createGlobalList":"Tüm kuklalar için \\"{name}\\" listesini oluştur","editor-searchable-dropdowns/createGlobalVariable":"Tüm kuklalar için \\"{name}\\" değişkenini oluştur","editor-searchable-dropdowns/createLocalList":"Sadece bu kukla için \\"{name}\\" listesini oluştur","editor-searchable-dropdowns/createLocalVariable":"Sadece bu kukla için \\"{name}\\" değişkenini oluştur","data-category-tweaks-v2/for-all-sprites":"Tüm kuklalar için:","data-category-tweaks-v2/for-this-sprite-only":"Sadece bu kukla için:","data-category-tweaks-v2/list-category":"Listeler","hide-flyout/lock":"Paleti Kilitle","hide-flyout/unlock":"Paletin Kilidini Aç","mediarecorder/cancel":"İptal","mediarecorder/click-flag":"Bekleniyor...","mediarecorder/click-flag-description":"Kayda başlamak için yeşil bayrağa tıkla. Durdurmak için bu butona tıkla.","mediarecorder/option-title":"Kayıt Seçenekleri","mediarecorder/record":"Kayıt","mediarecorder/record-after-flag":"Yeşil Bayrağa tıklanana kadar kayda başlama","mediarecorder/record-audio":"Proje seslerini de kaydet","mediarecorder/record-audio-description":"Bu, Metinden Sese tekniğini desteklemez.","mediarecorder/record-description":"Sahneyi bir WebM dosyası olarak kaydedin. Kayıt bittikten sonra bilgisayarınıza kaydedebilirsiniz.\\nNot: değişken ve liste ekranları görünmeyecek.","mediarecorder/record-duration":"Kayıt Süresi (saniye ile)","mediarecorder/record-mic":"Mikrofondaki sesleri de kaydet","mediarecorder/record-until-stop":"Proje durduğunda kaydı durdur","mediarecorder/record-until-stop-disabled":"Bunu kullanmak için \\"{afterFlagOption}\\" seçeneğini etkinleştirmeniz gerekiyor.","mediarecorder/start":"Başla","mediarecorder/start-delay":"Gecikmeyi Başlat (saniye ile)","mediarecorder/starting-in":"{secs} saniyede başlıyor...","mediarecorder/stop":"Kaydı Durdur","debugger/block-breakpoint":"durdurucu","debugger/block-error":"hata %s","debugger/block-log":"günlük %s","debugger/block-warn":"uyarı %s","debugger/cannot-pause-player":"Durdurucu bloğu yalnızca düzenleyicideyken kullanılabilir.","debugger/clear":"Temizle","debugger/clone-of":"{sprite} kuklasının ikizi","debugger/close":"Kapat","debugger/console":"Günlükler","debugger/debug":"Hata Ayıklama","debugger/empty-string":"(boş dize)","debugger/enter-format":"Dışa aktarma formatını girin:","debugger/export":"Dışa Aktar","debugger/export-desc":"Dışa aktarma formatını özelleştirmek için Shift tuşunu basılı tutarken tıklayın.","debugger/icon-error":"Hata","debugger/icon-warn":"Uyarı","debugger/log-msg-broadcasted":"\'{broadcast}\' haberi salındı.","debugger/log-msg-clone-cap":"\'{sprite}\' kuklasının ikizi oluşturulamadı, bir projede 300\'den fazla ikiz oluşturulamaz.","debugger/log-msg-clone-created":"\'{sprite}\' kuklasının ikizi oluşturuldu.","debugger/log-msg-flag-clicked":"Yeşil bayrağa tıklandı.","debugger/no-logs":"Görüntülenecek günlük yok.","debugger/no-threads-running":"Çalışan blok dizesi yok.","debugger/step":"Adım","debugger/step-desc":"Bir bloğu çalıştırır.","debugger/tab-logs":"Günlükler","debugger/tab-threads":"Blok Dizeleri","debugger/thread":"{id} numaralı blok dizesi","debugger/unknown-sprite":"(bilinmeyen kukla)","debugger/unpause":"Devam Et","pause/pause":"Duraklat","clones/clones":"ikiz sayısı: {cloneCount}","color-picker/hex":"hex rengi","remove-sprite-confirm/confirm":"Kuklayı silmek istediğinizden emin misiniz?","block-count/blocks":"{num, plural, one {1 blok} other {# blok}}","onion-skinning/behind":"Arka","onion-skinning/front":"Ön","onion-skinning/layering":"Katmanla","onion-skinning/merge":"Birleştir","onion-skinning/mode":"Mod","onion-skinning/next":"Sonraki kostümler","onion-skinning/opacity":"Saydamlık (%)","onion-skinning/opacityStep":"Saydamlık derecesi (%)","onion-skinning/previous":"Önceki kostümler","onion-skinning/settings":"Önceki Kostümün İzi Ayarları","onion-skinning/tint":"Ton","onion-skinning/toggle":"Önceki Kostümün İzini Oluşturmayı Aç/Kapat","paint-snap/boxCenter":"Seçimin merkezinden","paint-snap/boxCorners":"Seçimin köşelerinden","paint-snap/boxEdgeMids":"Seçimin orta kenar noktalarından","paint-snap/objectCenters":"Nesnelerin merkezlerine","paint-snap/objectCorners":"Nesnelerin köşelerine","paint-snap/objectEdges":"Nesnelerin kenarlarına","paint-snap/objectMidlines":"Nesnelerin orta hatlarına","paint-snap/off":"Kapalı","paint-snap/on":"Açık","paint-snap/pageAxes":"Sayfanın x ve y eksenlerine","paint-snap/pageCenter":"Sayfanın merkezine","paint-snap/pageCorners":"Sayfanın köşelerine","paint-snap/pageEdges":"Sayfanın kenarlarına","paint-snap/settings":"Tutturma Ayarları","paint-snap/snapFrom":"Şuradan tuttur:","paint-snap/snapTo":"Şuraya tuttur:","paint-snap/threshold":"Tutturma mesafesi","paint-snap/toggle":"Tutturmayı Değiştir","2d-color-picker/shade":"Ton","better-img-uploads/upload":"HD Yükle","variable-manager/for-all-sprites":"Tüm kuklaların değişkenleri","variable-manager/for-this-sprite":"Bu kuklanın değişkenleri","variable-manager/search":"Ara","variable-manager/too-big":"Çok büyük değeri görmek için tıkla.","variable-manager/variables":"Değişkenler","search-sprites/placeholder":"Kuklalarda ara...","sprite-properties/close-properties-panel-tooltip":"Özellikler panelini daralt","sprite-properties/open-properties-panel-tooltip":"Özellikler panelini aç","gamepad/axes-a-b":"{a} ve {b} eksenleri","gamepad/axis-arrows":"Ok Tuşları","gamepad/axis-cursor":"İmleç","gamepad/axis-custom":"Özel","gamepad/axis-none":"Yok","gamepad/browser-support":"Bu tarayıcı ve işletim sistemi, bu eklentinin kullanımını zorlaştırabilecek bilinen hatalara sahip. Herhangi bir sorunla karşılaşırsanız başka bir tarayıcı deneyin.","gamepad/button-n":"Buton {n}","gamepad/clear":"Tüm kontrolleri temizle","gamepad/config-header":"Bu yorum, https://turbowarp.org/ gibi üçüncü taraf araçlarda veya sitelerde oyun kumandası desteği için yapılandırma içerir\\nEl ile düzenleme yapmayın","gamepad/key-click":"Tıkla","gamepad/key-down":"Aşağı","gamepad/key-left":"Sol","gamepad/key-none":"(yok)","gamepad/key-right":"Sağ","gamepad/key-space":"Boşluk","gamepad/key-up":"Yukarı","gamepad/keyinput-title":"Tıkla ve herhangi bir tuşa bas veya değiştirme butonuna tıkla. İptal etmek için escape tuşunu, temizlemek için backspace veya delete tuşunu kullan.","gamepad/no-controllers":"Hiçbir denetleyici algılanmadı. Cihazı bir girişe takıp üzerindeki bir düğmeye basmayı deneyin.","gamepad/reset":"Tüm kontrolleri projenin varsayılan ayarlarına sıfırla","gamepad/settings":"Oyun Kumandası Ayarları","gamepad/store-in-project":"Varsayılan yapılandırmayı geçersiz kılmak için bu ayarları projede saklayın (Proje yaratıcıları için deneysel araç)","folders/add-to-folder":"{folder} klasörüne ekle","folders/closed-folder":"Klasör","folders/confirm-backpack-folder":"Tüm klasör sırt çantasına kaydedilsin mi?","folders/create-folder":"klasör oluştur","folders/name-not-allowed":"Geçersiz klasör adı","folders/name-prompt":"Klasörün adı:","folders/name-prompt-title":"Klasör Oluştur","folders/open-folder":"Açıldı","folders/remove-folder":"klasörü sil","folders/remove-from-folder":"klasörden sil","folders/rename-folder":"klasörü yeniden adlandır","folders/rename-folder-prompt":"Klasörün adını şununla değiştir: ","folders/rename-folder-prompt-title":"Klasörü Yeniden Adlandır","block-switching/control_forever":"sürekli","block-switching/control_if":"eğer ise","block-switching/control_if_else":"eğer ise... değilse","block-switching/control_repeat_until":"olana kadar tekrarla","block-switching/control_wait_until":"olana kadar bekle","block-switching/data_changevariableby":"değişkeni değiştir","block-switching/data_hidelist":"listeyi gizle","block-switching/data_hidevariable":"değişkeni gizle","block-switching/data_insertatlist":"öge ekle","block-switching/data_replaceitemoflist":"ögeyi değiştir","block-switching/data_setvariableto":"değişkeni ayarla","block-switching/data_showlist":"listeyi göster","block-switching/data_showvariable":"değişkeni göster","block-switching/debugger_error":"hata","block-switching/debugger_log":"günlük","block-switching/debugger_warn":"uyarı","block-switching/event_broadcast":"haberi sal","block-switching/event_broadcastandwait":"haberi sal ve bekle","block-switching/looks_backdropnumbername":"zemin numarası veya adı","block-switching/looks_changeeffectby":"efekti değiştir","block-switching/looks_changesizeby":"boyutu değiştir","block-switching/looks_costumenumbername":"kostüm numarası veya adı","block-switching/looks_hide":"gizle","block-switching/looks_nextbackdrop":"sonraki dekor","block-switching/looks_nextcostume":"sonraki kostüm","block-switching/looks_say":"de","block-switching/looks_sayforsecs":"saniyeler için söyle","block-switching/looks_seteffectto":"efekti ayarla","block-switching/looks_setsizeto":"boyutu ayarla","block-switching/looks_show":"göster","block-switching/looks_switchbackdropto":"zemini değiştir","block-switching/looks_switchbackdroptoandwait":"zemini değiştir ve bekle","block-switching/looks_think":"düşün","block-switching/looks_thinkforsecs":"saniyeler için düşün","block-switching/motion_changexby":"x\'i değiştir","block-switching/motion_changeyby":"y\'yi değiştir","block-switching/motion_setx":"x\'i yap","block-switching/motion_sety":"y\'yi yap","block-switching/motion_turnleft":"sola dön","block-switching/motion_turnright":"sağa dön","block-switching/motion_xposition":"x konumu","block-switching/motion_yposition":"y konumu","block-switching/music_changeTempo":"tempoyu değiştir","block-switching/music_setTempo":"tempoyu ayarla","block-switching/operator_and":"ve","block-switching/operator_or":"veya","block-switching/pen_changePenColorParamBy":"parametreyi değiştir","block-switching/pen_changePenHueBy":"rengi değiştir","block-switching/pen_changePenShadeBy":"gölgeyi değiştir","block-switching/pen_changePenSizeBy":"boyutu değiştir","block-switching/pen_penDown":"kalemi bastır","block-switching/pen_penUp":"kalemi kaldır","block-switching/pen_setPenColorParamTo":"parametreyi ayarla","block-switching/pen_setPenHueToNumber":"rengi ayarla","block-switching/pen_setPenShadeToNumber":"gölgeyi ayarla","block-switching/pen_setPenSizeTo":"boyutu ayarla","block-switching/sensing_mousex":"farenin x\'i","block-switching/sensing_mousey":"farenin y\'si","block-switching/sound_changeeffectby":"efekti değiştir","block-switching/sound_changevolumeby":"sesi değiştir","block-switching/sound_play":"başlat","block-switching/sound_playuntildone":"bitene kadar çal","block-switching/sound_seteffectto":"efekti ayarla","block-switching/sound_setvolumeto":"sesi ayarla","blocks2image/error_blocks_not_added":"Çalışma alanına blok ekleyin!","blocks2image/export_all_to_PNG":"Her şeyi PNG olarak dışa aktar","blocks2image/export_all_to_SVG":"Her şeyi SVG olarak dışa aktar","blocks2image/export_selected_to_PNG":"Bloğu PNG olarak dışa aktar","blocks2image/export_selected_to_SVG":"Bloğu SVG olarak dışa aktar","move-to-top-bottom/bottom":"en alta taşı","move-to-top-bottom/top":"en üste taşı","rename-broadcasts/RENAME_BROADCAST":"Mesajı yeniden adlandır","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"Mesajı Yeniden Adlandır","rename-broadcasts/RENAME_BROADCAST_TITLE":"Tüm \\"{name}\\" mesajlarını şu şekilde yeniden adlandır:","swap-local-global/cant-convert-cloud":"Bulut değişkenleri, yalnızca bu kukla için ayarına dönüştürülemez.","swap-local-global/cant-convert-conflict":"{sprites}, başka bir kukladaki değişkenlerle çakışacağı için dönüştürülemiyor.","swap-local-global/cant-convert-stage":"Dekor alanı, yalnızca bu kukla için değişkenine sahip olamaz.","swap-local-global/cant-convert-to-local":"{sprites}, birden fazla kukla tarafından kullanılmakta oldupu için dönüştürülemiyor.","swap-local-global/cant-convert-used-elsewhere":"Başka bir kukla tarafından kullanıldığı için dönüştürülemiyor: {sprite}","swap-local-global/edit":"Özellikleri düzenle:","swap-local-global/edit-list-header":"Listeyi düzenle","swap-local-global/edit-list-option":"Listeyi yeniden adlandır veya düzenle","swap-local-global/edit-variable-header":"Değişkeni düzenle","swap-local-global/edit-variable-option":"Değişkeni yeniden adlandır veya düzenle","swap-local-global/to-global":"\\"Tüm kuklalar için\\" ayarına dönüştür","swap-local-global/to-local":"\\"Yalnızca bu kukla için” ayarına dönüştür","hide-stage/hide-stage":"Sahneyi gizle"}')}}]); \ No newline at end of file diff --git a/js/addon-l10n-zh-tw.30cafacb69bec09dd0a1.js b/js/addon-l10n-zh-tw.30cafacb69bec09dd0a1.js new file mode 100644 index 0000000..1faf47e --- /dev/null +++ b/js/addon-l10n-zh-tw.30cafacb69bec09dd0a1.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[71],{1682:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"整理積木 +","editor-devtools/copy-all":"複製全部","editor-devtools/copy-block":"複製積木","editor-devtools/cut-block":"剪下積木","editor-devtools/lists":"清單","editor-devtools/make-space":"騰出空間","editor-devtools/orphaned":"{count, plural, other {要刪除 # 個單獨存在的積木嗎?} }","editor-devtools/paste":"貼上","editor-devtools/replace":"將這個角色上的變數 {name} 全部替換成:","editor-devtools/swap":"替換角色中的所有{var}","editor-devtools/unused-list":"{count, plural, other {要刪除 # 個沒有用到的清單嗎?這些清單包含:\\n} }","editor-devtools/unused-var":"{count, plural, other {要刪除 # 個沒有用到的變數嗎?這些變數包含:\\n} }","editor-devtools/var-not-exist":"這個變數不存在…","editor-devtools/variables":"變數","find-bar/find-placeholder":"查找 (Ctrl+F)","middle-click-popup/start-typing":"開始打字...","editor-searchable-dropdowns/createBroadcast":"建立廣播訊息 {name}","editor-searchable-dropdowns/createGlobalList":"建立全域清單 {name}","editor-searchable-dropdowns/createGlobalVariable":"建立全域變數 {name} ","editor-searchable-dropdowns/createLocalList":"建立區域清單 {name}","editor-searchable-dropdowns/createLocalVariable":"建立區域變數 {name}","data-category-tweaks-v2/for-all-sprites":"適用於所有角色:","data-category-tweaks-v2/for-this-sprite-only":"僅適用於當前角色:","data-category-tweaks-v2/list-category":"清單","hide-flyout/lock":"固定工具箱","hide-flyout/unlock":"取消固定工具箱","mediarecorder/cancel":"取消","mediarecorder/click-flag":"正在等待…","mediarecorder/click-flag-description":"點擊綠旗就會開始錄製,點擊這個按鈕可以停止。","mediarecorder/option-title":"錄製設定","mediarecorder/record-after-flag":"在綠旗被點擊時才開始錄製","mediarecorder/record-audio":"包含專案的聲音","mediarecorder/record-audio-description":"這不包括文字轉語音的聲音。","mediarecorder/record-duration":"錄製時長(秒)","mediarecorder/record-mic":"包含來自麥克風的聲音","mediarecorder/record-until-stop":"在停止專案運行時也停止錄製","mediarecorder/record-until-stop-disabled":"你必須啟用「{afterFlagOption}」才可以設定這個項目。","mediarecorder/start":"開始","mediarecorder/start-delay":"開始時延遲(秒)","mediarecorder/starting-in":"錄影倒數 {secs}...","mediarecorder/stop":"停止錄影","debugger/block-breakpoint":"中斷點","debugger/block-error":"錯誤 %s","debugger/block-log":"記錄 %s","debugger/block-warn":"警告 %s","debugger/cannot-pause-player":"中斷點積木只能在編輯器中使用。","debugger/clear":"清除","debugger/clone-of":"{sprite}的分身","debugger/close":"關閉","debugger/console":"紀錄","debugger/debug":"偵錯","debugger/empty-string":"(空字串)","debugger/enter-format":"輸入匯出格式:","debugger/export":"匯出","debugger/export-desc":"按住 Shift 鍵並點擊以自訂匯出格式","debugger/icon-error":"錯誤","debugger/icon-warn":"警告","debugger/log-msg-broadcasted":"廣播了訊息{broadcast}","debugger/log-msg-clone-cap":"創建{sprite}的分身時失敗,分身的創建不能超過 300 個。","debugger/log-msg-clone-created":"建立了{sprite}的分身。","debugger/log-msg-flag-clicked":"綠旗被點擊。","debugger/no-logs":"沒有可顯示的紀錄。","debugger/no-threads-running":"沒有運行中的執行緒。","debugger/step":"步進","debugger/step-desc":"執行一個積木","debugger/tab-logs":"紀錄","debugger/tab-threads":"執行緒","debugger/thread":"執行緒 {id}","debugger/unknown-sprite":"(未知角色)","debugger/unpause":"繼續","pause/pause":"暫停","clones/clones":"分身數:{cloneCount}","color-picker/hex":"hex 色碼","remove-sprite-confirm/confirm":"確定要刪除這個角色?","block-count/blocks":"{num, plural, other {# 個程式積木}}","onion-skinning/behind":"在後面","onion-skinning/front":"在前面","onion-skinning/layering":"圖層排列","onion-skinning/merge":"合併","onion-skinning/mode":"顯示模式","onion-skinning/next":"下一個造型","onion-skinning/opacity":"透明度(%)","onion-skinning/opacityStep":"透明漸進(%)","onion-skinning/previous":"上一個造型","onion-skinning/settings":"描圖紙設定","onion-skinning/tint":"染色","onion-skinning/toggle":"描圖紙顯示切換","paint-snap/off":"關","paint-snap/on":"開","2d-color-picker/shade":"陰影","better-img-uploads/upload":"高清圖片上傳","variable-manager/for-all-sprites":"所有角色使用的變數","variable-manager/for-this-sprite":"僅這個角色使用的變數","variable-manager/search":"搜尋","variable-manager/variables":"變數","search-sprites/placeholder":"搜尋角色…","gamepad/axes-a-b":"軸 {a} 與 {b}","gamepad/axis-arrows":"方向鍵","gamepad/axis-cursor":"滑鼠游標","gamepad/axis-custom":"自訂","gamepad/axis-none":"無","gamepad/browser-support":"這個瀏覽器和操作系統有些已知錯誤,可能使這個插件難以使用,如果你碰到了一些問題,請試試其它的瀏覽器。","gamepad/button-n":"按鈕 {n}","gamepad/clear":"清空所有控制設置","gamepad/config-header":"這個註解包含第三方工具或網站(如 https://turbowarp.org/)中的遊戲手柄配置。\\n請勿手動修改","gamepad/key-click":"點擊","gamepad/key-down":"向下鍵","gamepad/key-enter":"Enter 鍵","gamepad/key-left":"向左鍵","gamepad/key-none":"(無)","gamepad/key-right":"向右鍵","gamepad/key-space":"空白鍵","gamepad/key-up":"向上鍵","gamepad/keyinput-title":"點擊並按下一個鍵或單擊更改按鈕。ESC 鍵可取消。返回鍵或 Delete 鍵可刪除。","gamepad/no-controllers":"未檢測到遊戲手柄,請在連接後再按一次按鈕。","gamepad/reset":"重設所有控制設置到專案預設值","gamepad/settings":"遊戲手柄設置","gamepad/store-in-project":"將這些設置儲存在專案裡以覆寫原來的設定(項目創建者的實驗工具)","folders/add-to-folder":"放進資料夾:{folder}","folders/closed-folder":"資料夾","folders/confirm-backpack-folder":"將整個資料夾放進背包?","folders/create-folder":"創建資料夾","folders/name-not-allowed":"無效的資料夾名稱","folders/name-prompt":"資料夾名稱:","folders/name-prompt-title":"創建資料夾","folders/open-folder":"已開啟","folders/remove-folder":"移除資料夾","folders/remove-from-folder":"移出資料夾","folders/rename-folder":"更名資料夾","folders/rename-folder-prompt":"將資料夾重新命名為:","folders/rename-folder-prompt-title":"重新命名資料夾","block-switching/control_forever":"重複無限次","block-switching/control_if":"如果","block-switching/control_if_else":"如果…否則","block-switching/control_repeat_until":"等待直到","block-switching/control_wait_until":"等待直到","block-switching/data_changevariableby":"變數改變","block-switching/data_hidelist":"清單隱藏","block-switching/data_hidevariable":"變數隱藏","block-switching/data_insertatlist":"插入項目","block-switching/data_replaceitemoflist":"替換項目","block-switching/data_setvariableto":"變數設為","block-switching/data_showlist":"清單顯示","block-switching/data_showvariable":"變數顯示","block-switching/debugger_error":"錯誤","block-switching/debugger_log":"紀錄","block-switching/debugger_warn":"警告","block-switching/event_broadcast":"廣播訊息","block-switching/event_broadcastandwait":"廣播訊息並等待","block-switching/looks_backdropnumbername":"背景編號或名稱","block-switching/looks_changeeffectby":"圖像效果改變","block-switching/looks_changesizeby":"尺寸改變","block-switching/looks_costumenumbername":"造型編號或名稱","block-switching/looks_hide":"隱藏","block-switching/looks_nextbackdrop":"背景換成下一個","block-switching/looks_nextcostume":"造型換成下一個","block-switching/looks_say":"說出","block-switching/looks_sayforsecs":"說出持續","block-switching/looks_seteffectto":"圖像效果設為","block-switching/looks_setsizeto":"尺寸設為","block-switching/looks_show":"顯示","block-switching/looks_switchbackdropto":"背景換成","block-switching/looks_switchbackdroptoandwait":"背景換成並等待","block-switching/looks_think":"想著","block-switching/looks_thinkforsecs":"想著持續","block-switching/motion_changexby":"x 改變","block-switching/motion_changeyby":"y 改變","block-switching/motion_setx":"x 設為","block-switching/motion_sety":"y 設為","block-switching/motion_turnleft":"左轉","block-switching/motion_turnright":"右轉","block-switching/motion_xposition":"x 座標","block-switching/motion_yposition":"y 座標","block-switching/music_changeTempo":"演奏速度改變","block-switching/music_setTempo":"演奏速度設為","block-switching/operator_and":"且","block-switching/operator_mod":"取餘數","block-switching/operator_or":"或","block-switching/pen_changePenColorParamBy":"參數改變","block-switching/pen_changePenHueBy":"顏色改變","block-switching/pen_changePenShadeBy":"陰影改變","block-switching/pen_changePenSizeBy":"筆跡寬度改變","block-switching/pen_penDown":"下筆","block-switching/pen_penUp":"停筆","block-switching/pen_setPenColorParamTo":"參數設為","block-switching/pen_setPenHueToNumber":"顏色設為","block-switching/pen_setPenShadeToNumber":"陰影設為","block-switching/pen_setPenSizeTo":"筆跡寬度設為","block-switching/sensing_mousex":"鼠標的 x","block-switching/sensing_mousey":"鼠標的 y","block-switching/sound_changeeffectby":"聲音效果改變","block-switching/sound_changevolumeby":"音量改變","block-switching/sound_play":"播放音效","block-switching/sound_playuntildone":"播放音效直到結束","block-switching/sound_seteffectto":"聲音效果設為","block-switching/sound_setvolumeto":"音量設為","blocks2image/error_blocks_not_added":"添加積木到編輯區!","blocks2image/export_all_to_PNG":"匯出全部積木成 PNG 圖像","blocks2image/export_all_to_SVG":"匯出全部積木成 SVG 圖像","blocks2image/export_selected_to_PNG":"匯出積木成 PNG 圖像","blocks2image/export_selected_to_SVG":"匯出積木成 SVG 圖像","editor-extra-keys/enter-key":"Enter","move-to-top-bottom/bottom":"移至最下面","move-to-top-bottom/top":"移至最上面","rename-broadcasts/RENAME_BROADCAST":"重新命名訊息","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"重新命名訊息","rename-broadcasts/RENAME_BROADCAST_TITLE":"將所有“{name}”消息重命名為:","swap-local-global/cant-convert-cloud":"無法轉換,雲端變數不能被轉換成「僅適用當前角色」。","swap-local-global/cant-convert-conflict":"無法轉換,因為會和其它角色中相同名稱的變數衝突:{sprites}","swap-local-global/cant-convert-stage":"舞台不能有「僅適用當前角色」的變數。","swap-local-global/cant-convert-to-local":"無法轉換,因為有其它角色也在使用這個變數:{sprites}","swap-local-global/cant-convert-used-elsewhere":"無法轉換,因為有另一個角色也在使用這個變數:{sprite}","swap-local-global/edit":"編輯屬性:","swap-local-global/edit-list-header":"編輯清單","swap-local-global/edit-list-option":"編輯清單","swap-local-global/edit-variable-header":"編輯變數","swap-local-global/edit-variable-option":"編輯變數","swap-local-global/to-global":"轉換成「適用於所有角色」","swap-local-global/to-local":"轉換成「僅適用當前角色」","hide-stage/hide-stage":"隱藏舞台"}')}}]); \ No newline at end of file diff --git a/js/addon-settings.97df712938ad681d1e10.js b/js/addon-settings.97df712938ad681d1e10.js new file mode 100644 index 0000000..8b38b05 --- /dev/null +++ b/js/addon-settings.97df712938ad681d1e10.js @@ -0,0 +1,6 @@ +var GUI=function(e){function t(t){for(var i,s,r=t[0],l=t[1],d=t[2],m=0,p=[];m.\n */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\nbody {\n background-color: white;\n color: black;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n margin: 0;\n}\n\nbody[theme="dark"] {\n background-color: #222222;\n color: white;\n color-scheme: dark;\n}\n\na[href] {\n color: #2a67eb;\n text-decoration: underline;\n}\n\n[theme="dark"] a[href] {\n color: #6d9bff;\n}\n\na:active, a:focus {\n outline: none;\n box-shadow: 0 0 0 3px hsla(0, 100%, 65%, 0.35);\n}\n\n.settings_container_1qNQ3 {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.settings_section_31t4Q {\n max-width: 1280px;\n margin: auto;\n}\n\n.settings_header_Y9USz {\n position: relative;\n padding: 8px 20px;\n background-color: #fcfcfc;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n}\n\n[theme="dark"] .settings_header_Y9USz {\n background-color: #222222;\n}\n\n@media (max-width: 700px) {\n .settings_header_Y9USz {\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n.settings_header_Y9USz .settings_section_31t4Q {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.settings_button_2ovv0 {\n color: #000;\n background: #efefef;\n border: 1px solid #acacac;\n padding: 8px 12px;\n border-radius: 4px;\n outline: none;\n height: 32px;\n font-family: inherit;\n font-size: 14px;\n transition: 0.25s ease;\n transition-property: background;\n display: flex;\n align-items: center;\n}\n\n[theme="dark"] .settings_button_2ovv0 {\n color: #fff;\n background: #222222;\n border-color: #000;\n}\n\n.settings_button_2ovv0:hover {\n background: #aaaaaa;\n}\n\n[theme="dark"] .settings_button_2ovv0:hover {\n background: #151515;\n}\n\n.settings_button_2ovv0:active, .settings_button_2ovv0:focus-within {\n box-shadow: 0 0 0 3px hsla(0, 100%, 65%, 0.35);\n}\n\n.settings_search-container_24OhB {\n display: flex;\n background-color: #f0f0f0;\n color: #222;\n border: 1px solid #cecece;\n border-radius: 4px;\n}\n\n.settings_search-container_24OhB:focus-within {\n box-shadow: 0 0 0 3px hsla(0, 100%, 65%, 0.35);\n}\n\n.settings_search-input_9LNCl {\n color: inherit;\n width: 150px;\n height: 16px;\n padding: 10px 0 10px 15px;\n border: none;\n outline: none;\n background-color: transparent;\n font-size: 14px;\n}\n\n/* legacy edge */\n\n.settings_search-input_9LNCl::-ms-clear {\n display: none;\n}\n\n.settings_search-button_LceHy {\n height: 36px;\n width: 36px;\n border: none;\n outline: none;\n cursor: pointer;\n background-color: transparent;\n background-image: url('+i(n(1621))+');\n background-repeat: no-repeat;\n background-position: center;\n}\n\n[theme="dark"] .settings_search-container_24OhB {\n color: white;\n background-color: #111111;\n border-color: #222222;\n}\n\n.settings_search-input_9LNCl:not([value=""]) ~ .settings_search-button_LceHy {\n background-image: url('+i(n(1622))+') !important;\n}\n\n.settings_feedback-button-outer_3RXeq {\n background: #f0f0f0;\n border: 1px solid #cecece;\n color: #333 !important;\n height: 36px;\n box-sizing: border-box;\n border-radius: 4px;\n padding: 0 12px;\n margin-left: 10px;\n font-size: 12px;\n outline: none;\n display: flex;\n align-items: center;\n text-decoration: none !important;\n}\n\n[theme="dark"] .settings_feedback-button-outer_3RXeq {\n background-color: white;\n border-color: white;\n}\n\n.settings_feedback-button-outer_3RXeq:active, .settings_feedback-button-outer_3RXeq:focus-within {\n box-shadow: 0 0 0 3px hsla(0, 100%, 65%, 0.35);\n}\n\n.settings_feedback-button-inner_2h_ch {\n text-decoration: none;\n font-weight: bold;\n text-align: center;\n}\n\n[theme="dark"] .settings_search-button_LceHy,\n[theme="dark"] .settings_addon-group-expand_1G6_X,\n[theme="dark"] .settings_extension-image_1HlEn,\n[theme="dark"] .settings_reset-button_1onc- img,\n[theme="dark"] .settings_reset-setting-button_-WLwd img {\n filter: invert(100%);\n}\n\n.settings_addons_2LLFF {\n overflow-y: auto;\n overflow-x: hidden;\n padding: 10px 20px;\n height: 100%;\n}\n\n@media (max-width: 700px) {\n .settings_addons_2LLFF {\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n.settings_addon-group_3d-ZB {\n margin: 0 0 10px 0;\n}\n\n.settings_addon-group-name_1h56B {\n background: none;\n border: none;\n width: 100%;\n display: flex;\n align-items: center;\n}\n\n.settings_addon-group-name_1h56B::after {\n margin-left: 16px;\n content: \'\';\n border-top: 1px solid #cfcfcf;\n width: 100px;\n flex: 1;\n}\n\n[theme="dark"] .settings_addon-group-name_1h56B::after {\n border-color: #333;\n}\n\n.settings_addon-group-expand_1G6_X {\n width: 24px;\n height: 24px;\n margin-right: 8px;\n border-radius: 5px;\n}\n\n.settings_addon-group-expand_1G6_X[data-open="true"] {\n transform: scaleY(-1);\n}\n\n.settings_addon-group-name_1h56B:hover .settings_addon-group-expand_1G6_X {\n background: #ccc;\n}\n\n.settings_addon_3Oi_z {\n background: #f7f7f7;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n border: 1px solid #cfcfcf;\n border-radius: 5px;\n margin: 10px 0 10px 0;\n font-size: 14px;\n}\n\n.settings_addon-dirty_2o20T {\n background: #ffeedf;\n}\n\n[theme="dark"] .settings_addon_3Oi_z {\n background-color: #2a2a2a;\n border-color: #333;\n}\n\n[theme="dark"] .settings_addon-dirty_2o20T {\n background: rgb(39, 50, 53);\n}\n\n.settings_addon-header_271wJ {\n padding: 0 10px;\n height: 50px;\n display: flex;\n align-items: center;\n}\n\n.settings_extension-image_1HlEn {\n height: 16px;\n width: 16px;\n margin-right: 8px;\n}\n\n.settings_addon-title_6MhRl {\n cursor: pointer;\n display: flex;\n align-items: center;\n white-space: nowrap;\n}\n\n.settings_addon-switch_2bf3g {\n margin-right: 8px;\n}\n\n.settings_addon-title-text_3QjlP {\n\n}\n\n.settings_addon-id_2EeZw {\n margin-left: 10px;\n}\n\n.settings_inline-description_SovV9 {\n margin-left: 10px;\n color: gray;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.settings_addon-operations_28nBd {\n margin-left: auto;\n padding-left: 4px;\n display: flex;\n align-items: center;\n}\n\n.settings_reset-button_1onc- {\n display: flex;\n border-radius: 4px;\n cursor: pointer;\n border: none;\n background-color: transparent;\n}\n\n.settings_reset-button_1onc-:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.settings_reset-button_1onc-:active, .settings_reset-button_1onc-:focus-within {\n outline: none;\n box-shadow: 0 0 0 3px hsla(0, 100%, 65%, 0.35);\n}\n\n.settings_reset-button-image_2Tgqe {\n padding: 1px 0;\n height: 16px;\n width: 16px;\n}\n\n[theme="dark"] .settings_reset-button_1onc-:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.settings_switch_2V1f5 {\n display: block;\n background: #111;\n width: 40px;\n height: 20px;\n border: none;\n border-radius: 10px;\n position: relative;\n cursor: pointer;\n transition: 0.25s ease;\n transition-property: background;\n}\n\n.settings_switch_2V1f5[state="on"] {\n background: hsla(0, 100%, 65%, 1);\n}\n\n.settings_switch_2V1f5::before {\n content: "";\n position: absolute;\n display: block;\n width: 10px;\n height: 10px;\n background: #fff;\n border-radius: 5px;\n top: 5px;\n left: 5px;\n transition: 0.25s ease;\n transition-property: background, left;\n}\n\n[theme="dark"] .settings_switch_2V1f5::before {\n background: #aaa;\n}\n\n.settings_switch_2V1f5[state="on"]::before {\n background: #fff;\n left: 25px;\n}\n\n.settings_switch_2V1f5:active, .settings_switch_2V1f5:focus-within {\n outline: none;\n box-shadow: 0 0 0 3px hsla(0, 100%, 65%, 0.35);\n}\n\n.settings_tag-container_3yFc4 {\n display: flex;\n align-items: center;\n}\n\n.settings_tag_1c-GO {\n border-radius: 4px;\n padding: 2px 5px;\n margin-left: 10px;\n border-bottom: 2px solid #111;\n white-space: nowrap;\n}\n\n.settings_tag-recommended_2k7Kt {\n color: white;\n background-color: #175ef8;\n border-color: #0e44b8;\n}\n\n.settings_tag-theme_PbNiB {\n color: black;\n background-color: #9ad4cf;\n border-color: #628f8c;\n}\n\n.settings_tag-beta_26ywj {\n color: white;\n background-color: #fd662b;\n border-color: #d84a12;\n}\n\n.settings_tag-easter-egg_2M8qE {\n color: black;\n background-color: #b9f38d;\n border-color: #8fce5e;\n}\n\n.settings_tag-new_1g9ff {\n color: white;\n background: #b117f8;\n border-color: #6f0073;\n}\n\n.settings_tag-danger_2g6El {\n color: white;\n background: #fd2b2b;\n border-color: #d81212;\n}\n\n@media (max-width: 550px) {\n .settings_tag_1c-GO:not(.settings_tag-beta_26ywj) {\n display: none;\n }\n}\n\n.settings_addon-details_2CKwd {\n padding: 0 20px;\n margin-bottom: 10px;\n color: #111;\n}\n\n[theme="dark"] .settings_addon-details_2CKwd {\n color: #ddd;\n}\n\n.settings_credit-container_2mHq7 {\n\n}\n\n.settings_credit-title_3f-yX {\n padding-right: 5px;\n}\n\n.settings_credit_3grR6 {\n\n}\n\n.settings_description_2MbZo {\n\n}\n\n.settings_notice_2q6Z2 {\n color: black;\n padding: 10px;\n border-radius: 5px;\n font-weight: bold;\n margin: 10px 0;\n display: flex;\n align-items: center;\n background: rgba(154, 212, 207, 0.7);\n}\n\n.settings_notice-icon_2lAT7 {\n height: 16px;\n width: 16px;\n margin-right: 10px;\n}\n\n.settings_setting-container_2BA7o {\n margin-top: 10px;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n}\n\n.settings_setting_2i2j- {\n margin: 10px;\n margin-right: 30px;\n min-height: 35px;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.settings_setting-label_2w3mJ {\n font-weight: bold;\n text-transform: uppercase;\n color: #555;\n font-size: 12px;\n margin-right: 10px;\n}\n\n[theme="dark"] .settings_setting-label_2w3mJ {\n color: #aaa;\n}\n\n.settings_setting_2i2j- input {\n color: #000;\n background: #efefef;\n border: 1px solid #acacac;\n padding: 8px 12px;\n border-radius: 4px;\n transition: 0.25s ease;\n transition-property: background;\n}\n\n[theme="dark"] .settings_setting_2i2j- input {\n color: #fff;\n background: #222222;\n border: 1px solid #000;\n}\n\n.settings_setting_2i2j- input:focus, .settings_setting_2i2j- input:active {\n outline: none;\n border-color: hsla(0, 100%, 65%, 1);\n box-shadow: 0 0 0 3px hsla(0, 100%, 65%, 0.35);\n}\n\n.settings_setting_2i2j- input[type="checkbox"] {\n height: 20px;\n width: 20px;\n padding: 0;\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n background-color: white;\n background-size: 20px 20px;\n background-position: center center;\n}\n\n.settings_setting_2i2j- input[type="checkbox"]:checked {\n border-color: hsla(0, 100%, 65%, 1);\n background-color: hsla(0, 100%, 65%, 1);\n background-image: url('+i(n(1623))+');\n}\n\n.settings_setting_2i2j- input[type="checkbox"]:hover:not(:focus) {\n border-color: hsla(0, 60%, 50%, 1);\n}\n\n.settings_setting_2i2j- input[type="checkbox"]:checked:hover {\n border-color: hsla(0, 60%, 50%, 1);\n}\n\n.settings_setting_2i2j- input[type="number"] {\n border-radius: 20px 0 0 20px;\n font-size: 14px;\n width: 75px;\n height: 35px;\n box-sizing: border-box;\n}\n\n.settings_setting_2i2j- input[type="color"] {\n height: 30px;\n width: 100px;\n box-sizing: border-box;\n padding: 0;\n margin: 0;\n outline: none;\n border: 1px solid transparent;\n border-radius: 4px 0px 0px 4px;\n}\n\n.settings_reset-setting-button_-WLwd {\n border-radius: 0 4px 4px 0px;\n box-sizing: border-box;\n height: 30px;\n}\n\n.settings_reset-setting-button_-WLwd img {\n width: 20px;\n height: 20px;\n}\n\n.settings_reset-setting-button_-WLwd[data-for-text-input="true"] {\n height: 35px;\n border-radius: 0 20px 20px 0;\n}\n\n.settings_select_sIZno {\n display: flex;\n}\n\n.settings_select-option_32Zqa {\n cursor: pointer;\n padding: 10px;\n margin: 0;\n background: transparent;\n border: none;\n background: #f0f0f0;\n color: #000;\n border: 1px solid #aaa;\n border-right-width: 0;\n transition: 0.25s ease;\n transition-property: color, background, border;\n}\n\n[theme="dark"] .settings_select-option_32Zqa {\n color: #fff;\n background: #222222;\n border-color: #000000;\n}\n\n.settings_select-option_32Zqa:first-child {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n\n.settings_select-option_32Zqa:last-child {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n border-right-width: 1px;\n}\n\n.settings_select-option_32Zqa.settings_selected_38WtW {\n color: white;\n background: hsla(0, 100%, 65%, 1);\n}\n\n.settings_select-option_32Zqa:active, .settings_select-option_32Zqa:focus-within {\n outline: none;\n box-shadow: 0 0 0 3px hsla(0, 100%, 65%, 0.35);\n z-index: 10;\n}\n\n.settings_presets_3zawV {\n width: 100%;\n}\n\n.settings_preset-button_3zYV3 {\n margin-right: 10px;\n}\n\n.settings_footer_jjys0 {\n color: #444;\n}\n\n[theme="dark"] .settings_footer_jjys0 {\n color: #aaa;\n}\n\n.settings_unsupported-container_2vhiH {\n margin-bottom: 10px;\n}\n\n.settings_unsupported-addon_1p57c {\n padding-left: 5px;\n}\n\n.settings_version_2_cDA {\n margin-bottom: 10px;\n cursor: pointer;\n}\n\n.settings_footer-buttons_xTSXH {\n margin-bottom: 10px;\n display: flex;\n}\n\n.settings_footer-buttons_xTSXH > .settings_button_2ovv0 {\n margin-right: 10px;\n}\n\n.settings_reset-all-button_2Q-Zi {\n\n}\n\n.settings_export-button_2PWOM {\n\n}\n\n.settings_import-button_1NMJN {\n\n}\n\n.settings_no-results_3bDSs {\n text-align: center;\n font-style: italic;\n}\n\n.settings_dirty-outer_WmNYy {\n display: flex;\n position: absolute;\n top: calc(100% - 8px);\n left: 0;\n width: calc(100% - 20px);\n margin-left: 10px;\n z-index: 10;\n justify-content: center;\n animation: settings_dirty-appear_2Rcif 0.2s ease;\n pointer-events: none;\n}\n\n.settings_dirty-inner_2tglM {\n padding: 8px;\n background: #ffeedf;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n border: 1px solid #cfcfcf;\n border-radius: 4px;\n pointer-events: auto;\n display: flex;\n align-items: center;\n text-align: center;\n}\n\n[theme="dark"] .settings_dirty-inner_2tglM {\n background: rgb(39, 50, 53);\n border-color: #222;\n}\n\n.settings_dirty-button_2adjE {\n margin-left: 6px;\n}\n\n@keyframes settings_dirty-appear_2Rcif {\n from {\n transform: translateY(-100%);\n }\n to {\n transform: translateY(0);\n }\n}\n',""]),t.locals={container:"settings_container_1qNQ3",section:"settings_section_31t4Q",header:"settings_header_Y9USz",button:"settings_button_2ovv0","search-container":"settings_search-container_24OhB",searchContainer:"settings_search-container_24OhB","search-input":"settings_search-input_9LNCl",searchInput:"settings_search-input_9LNCl","search-button":"settings_search-button_LceHy",searchButton:"settings_search-button_LceHy","feedback-button-outer":"settings_feedback-button-outer_3RXeq",feedbackButtonOuter:"settings_feedback-button-outer_3RXeq","feedback-button-inner":"settings_feedback-button-inner_2h_ch",feedbackButtonInner:"settings_feedback-button-inner_2h_ch","addon-group-expand":"settings_addon-group-expand_1G6_X",addonGroupExpand:"settings_addon-group-expand_1G6_X","extension-image":"settings_extension-image_1HlEn",extensionImage:"settings_extension-image_1HlEn","reset-button":"settings_reset-button_1onc-",resetButton:"settings_reset-button_1onc-","reset-setting-button":"settings_reset-setting-button_-WLwd",resetSettingButton:"settings_reset-setting-button_-WLwd",addons:"settings_addons_2LLFF","addon-group":"settings_addon-group_3d-ZB",addonGroup:"settings_addon-group_3d-ZB","addon-group-name":"settings_addon-group-name_1h56B",addonGroupName:"settings_addon-group-name_1h56B",addon:"settings_addon_3Oi_z","addon-dirty":"settings_addon-dirty_2o20T",addonDirty:"settings_addon-dirty_2o20T","addon-header":"settings_addon-header_271wJ",addonHeader:"settings_addon-header_271wJ","addon-title":"settings_addon-title_6MhRl",addonTitle:"settings_addon-title_6MhRl","addon-switch":"settings_addon-switch_2bf3g",addonSwitch:"settings_addon-switch_2bf3g","addon-title-text":"settings_addon-title-text_3QjlP",addonTitleText:"settings_addon-title-text_3QjlP","addon-id":"settings_addon-id_2EeZw",addonId:"settings_addon-id_2EeZw","inline-description":"settings_inline-description_SovV9",inlineDescription:"settings_inline-description_SovV9","addon-operations":"settings_addon-operations_28nBd",addonOperations:"settings_addon-operations_28nBd","reset-button-image":"settings_reset-button-image_2Tgqe",resetButtonImage:"settings_reset-button-image_2Tgqe",switch:"settings_switch_2V1f5","tag-container":"settings_tag-container_3yFc4",tagContainer:"settings_tag-container_3yFc4",tag:"settings_tag_1c-GO","tag-recommended":"settings_tag-recommended_2k7Kt",tagRecommended:"settings_tag-recommended_2k7Kt","tag-theme":"settings_tag-theme_PbNiB",tagTheme:"settings_tag-theme_PbNiB","tag-beta":"settings_tag-beta_26ywj",tagBeta:"settings_tag-beta_26ywj","tag-easter-egg":"settings_tag-easter-egg_2M8qE",tagEasterEgg:"settings_tag-easter-egg_2M8qE","tag-new":"settings_tag-new_1g9ff",tagNew:"settings_tag-new_1g9ff","tag-danger":"settings_tag-danger_2g6El",tagDanger:"settings_tag-danger_2g6El","addon-details":"settings_addon-details_2CKwd",addonDetails:"settings_addon-details_2CKwd","credit-container":"settings_credit-container_2mHq7",creditContainer:"settings_credit-container_2mHq7","credit-title":"settings_credit-title_3f-yX",creditTitle:"settings_credit-title_3f-yX",credit:"settings_credit_3grR6",description:"settings_description_2MbZo",notice:"settings_notice_2q6Z2","notice-icon":"settings_notice-icon_2lAT7",noticeIcon:"settings_notice-icon_2lAT7","setting-container":"settings_setting-container_2BA7o",settingContainer:"settings_setting-container_2BA7o",setting:"settings_setting_2i2j-","setting-label":"settings_setting-label_2w3mJ",settingLabel:"settings_setting-label_2w3mJ",select:"settings_select_sIZno","select-option":"settings_select-option_32Zqa",selectOption:"settings_select-option_32Zqa",selected:"settings_selected_38WtW",presets:"settings_presets_3zawV","preset-button":"settings_preset-button_3zYV3",presetButton:"settings_preset-button_3zYV3",footer:"settings_footer_jjys0","unsupported-container":"settings_unsupported-container_2vhiH",unsupportedContainer:"settings_unsupported-container_2vhiH","unsupported-addon":"settings_unsupported-addon_1p57c",unsupportedAddon:"settings_unsupported-addon_1p57c",version:"settings_version_2_cDA","footer-buttons":"settings_footer-buttons_xTSXH",footerButtons:"settings_footer-buttons_xTSXH","reset-all-button":"settings_reset-all-button_2Q-Zi",resetAllButton:"settings_reset-all-button_2Q-Zi","export-button":"settings_export-button_2PWOM",exportButton:"settings_export-button_2PWOM","import-button":"settings_import-button_1NMJN",importButton:"settings_import-button_1NMJN","no-results":"settings_no-results_3bDSs",noResults:"settings_no-results_3bDSs","dirty-outer":"settings_dirty-outer_WmNYy",dirtyOuter:"settings_dirty-outer_WmNYy","dirty-appear":"settings_dirty-appear_2Rcif",dirtyAppear:"settings_dirty-appear_2Rcif","dirty-inner":"settings_dirty-inner_2tglM",dirtyInner:"settings_dirty-inner_2tglM","dirty-button":"settings_dirty-button_2adjE",dirtyButton:"settings_dirty-button_2adjE"}},1621:function(e,t,n){e.exports=n.p+"static/assets/6fb602003b4d9e845e84f77129346396.svg"},1622:function(e,t,n){e.exports=n.p+"static/assets/e997e36ade408c75ef4424b928e10846.svg"},1623:function(e,t,n){e.exports=n.p+"static/assets/70f8bee49a78f131d8dc87658809a684.svg"},1627:function(e,t,n){"use strict";n.r(t);var i=n(1),a=n.n(i),o=n(48),s=n.n(o),r=n(88),l=n(0),d=n.n(l),c=n(4),m=n.n(c);const p=e=>(e=>e.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/['"()\-+,./[\]]/g," ").trim())(e).split(" ").filter(e=>e),u=e=>{const t=[];for(const{score:n,text:i}of e)t.push({score:n,words:p(i)});return t};var g=class{constructor(e){this.items=e.map(u)}search(e){const t=p(e),n=[],i=e=>{let n=0;for(const i of t){let t=0;for(const n of e)for(const e of n.words){const a=e.indexOf(i);if(-1!==a){let e;e=0===a?1.5:1;const i=n.score*e;i>t&&(t=i)}}if(0===t)return;n+=t}return n};for(let e=0;e0&&n.push({index:e,score:t})}return n.sort((e,t)=>t.score-e.score),n}},k=n(128),b={de:()=>n(1605),es:()=>n(1606),fr:()=>n(1607),hu:()=>n(1608),it:()=>n(1609),ja:()=>n(1610),ko:()=>n(1611),nl:()=>n(1612),pl:()=>n(1613),pt:()=>n(1614),ro:()=>n(1615),ru:()=>n(1616),sl:()=>n(1617),tr:()=>n(1618),"zh-tw":()=>n(1619)},h=n(880),f=n(466),v=n(198),z=n(193),y=n(96),w=n(53),j=n(52),x=n(881),S=n.n(x),C=n(882),A=n.n(C),_=n(467),B=n.n(_),D=n(883),E=n.n(D),P=n(884),T=n.n(P),O=n(14),N=n.n(O);n(886),n(374);const q=["onChange","value"];function M(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function K(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}const L=Object(z.b)(Object.keys(b));document.documentElement.lang=L;const I=b[L]?b[L]():{},Z=h;if("en"!==L){const e=f[L]||f[L.split("-")[0]];e&&Object.assign(Z,e)}document.title="".concat(Z.title," - TurboWarp");const H=Object(y.b)()?"dark":"light";let U;document.body.setAttribute("theme",H);const{supported:G,unsupported:W}=(()=>{const e={},t={};for(const[n,i]of Object.entries(k.a))i.unsupported?t[n]=i:e[n]=i;return{supported:e,unsupported:t}})(),Y=(()=>{const e={new:{label:Z.groupNew,open:!0,addons:[]},others:{label:Z.groupOthers,open:!0,addons:[]},danger:{label:Z.groupDanger,open:!1,addons:[]}},t=Object.values(G);for(let n=0;ne.map((t,n)=>{const i=n===e.length-1;return a.a.createElement("span",{className:N.a.credit,key:n},t.link?a.a.createElement("a",{href:t.link,target:"_blank",rel:"noreferrer"},t.name):a.a.createElement("span",null,t.name),i?null:", ")});J.propTypes={credits:d.a.arrayOf(d.a.shape({name:d.a.string,link:d.a.string}))};const X=e=>{let{onChange:t,value:n}=e,i=F(e,q);return a.a.createElement("button",R({className:N.a.switch,state:n?"on":"off",role:"checkbox","aria-checked":n?"true":"false",tabIndex:"0",onClick:()=>t(!n)},i))};X.propTypes={onChange:d.a.func,value:d.a.bool};const Q=({onChange:e,value:t,values:n})=>a.a.createElement("div",{className:N.a.select},n.map(n=>{const i=n.id,o=i===t;return a.a.createElement("button",{key:i,onClick:()=>e(i),className:m()(N.a.selectOption,{[N.a.selected]:o})},n.name)}));Q.propTypes={onChange:d.a.func,value:d.a.string,values:d.a.arrayOf(d.a.shape({id:d.a.string,name:d.a.string}))};const $=({manifest:e})=>a.a.createElement("span",{className:N.a.tagContainer},e.tags.includes("recommended")&&a.a.createElement("span",{className:m()(N.a.tag,N.a.tagRecommended)},Z.tagRecommended),e.tags.includes("theme")&&a.a.createElement("span",{className:m()(N.a.tag,N.a.tagTheme)},Z.tagTheme),e.tags.includes("beta")&&a.a.createElement("span",{className:m()(N.a.tag,N.a.tagBeta)},Z.tagBeta),e.tags.includes("new")&&a.a.createElement("span",{className:m()(N.a.tag,N.a.tagNew)},Z.tagNew),e.tags.includes("danger")&&a.a.createElement("span",{className:m()(N.a.tag,N.a.tagDanger)},Z.tagDanger));$.propTypes={manifest:d.a.shape({tags:d.a.arrayOf(d.a.string.isRequired).isRequired}).isRequired};class ee extends a.a.Component{constructor(e){super(e),this.handleKeyPress=this.handleKeyPress.bind(this),this.handleFocus=this.handleFocus.bind(this),this.handleFlush=this.handleFlush.bind(this),this.handleChange=this.handleChange.bind(this),this.state={value:null,focused:!1}}handleKeyPress(e){"Enter"===e.key&&(this.handleFlush(e),e.target.blur())}handleFocus(){this.setState({focused:!0})}handleFlush(e){if(this.setState({focused:!1}),null!==this.state.value){if("number"===this.props.type){let t=+this.state.value;const n=e.target.min,i=e.target.max,a=e.target.step;""!==n&&(t=Math.max(n,t)),""!==i&&(t=Math.min(i,t)),"1"===a&&(t=Math.round(t)),this.props.onChange(t)}else this.props.onChange(this.state.value);this.setState({value:null})}}handleChange(e){e.persist(),this.setState({value:e.target.value},()=>{this.state.focused||this.handleFlush(e)})}render(){return a.a.createElement("input",R({},this.props,{value:null===this.state.value?this.props.value:this.state.value,onFocus:this.handleFocus,onBlur:this.handleFlush,onChange:this.handleChange,onKeyPress:this.handleKeyPress}))}}ee.propTypes={onChange:d.a.func.isRequired,type:d.a.string,value:d.a.oneOfType([d.a.string,d.a.number])};const te=e=>a.a.createElement("input",{type:"color",id:e.id,value:e.value,onChange:e.onChange});te.propTypes={id:d.a.string.isRequired,onChange:d.a.func.isRequired,value:d.a.string.isRequired};const ne=({addonId:e,settingId:t,forTextInput:n})=>a.a.createElement("button",{className:m()(N.a.button,N.a.resetSettingButton),onClick:()=>w.a.setAddonSetting(e,t,null),title:Z.reset,"data-for-text-input":n},a.a.createElement("img",{src:B.a,alt:Z.reset}));ne.propTypes={addonId:d.a.string,settingId:d.a.string,forTextInput:d.a.bool};const ie=({addonId:e,setting:t,value:n})=>{if(!w.a.evaluateCondition(e,t.if))return null;const i=t.id,o=I["".concat(e,"/@settings-name-").concat(i)]||t.name,s="setting/".concat(e,"/").concat(i),r=a.a.createElement("label",{htmlFor:s,className:N.a.settingLabel},o);return a.a.createElement("div",{className:N.a.setting},"boolean"===t.type&&a.a.createElement(a.a.Fragment,null,r,a.a.createElement("input",{id:s,type:"checkbox",checked:n,onChange:t=>w.a.setAddonSetting(e,i,t.target.checked)})),"integer"===t.type&&a.a.createElement(a.a.Fragment,null,r,a.a.createElement(ee,{id:s,type:"number",min:t.min,max:t.max,step:"1",value:n,onChange:t=>w.a.setAddonSetting(e,i,t)}),a.a.createElement(ne,{addonId:e,settingId:i,forTextInput:!0})),"color"===t.type&&a.a.createElement(a.a.Fragment,null,r,a.a.createElement(te,{id:s,value:n,onChange:t=>w.a.setAddonSetting(e,i,t.target.value)}),a.a.createElement(ne,{addonId:e,settingId:i})),"select"===t.type&&a.a.createElement(a.a.Fragment,null,r,a.a.createElement(Q,{value:n,values:t.potentialValues.map(({id:t,name:n})=>({id:t,name:I["".concat(e,"/@settings-select-").concat(i,"-").concat(t)]||n})),onChange:t=>w.a.setAddonSetting(e,i,t),setting:t})))};ie.propTypes={addonId:d.a.string,setting:d.a.shape({type:d.a.string,id:d.a.string,name:d.a.string,min:d.a.number,max:d.a.number,default:d.a.oneOfType([d.a.string,d.a.number,d.a.bool]),potentialValues:d.a.arrayOf(d.a.shape({id:d.a.string,name:d.a.string})),if:d.a.shape({addonEnabled:d.a.oneOfType([d.a.string,d.a.arrayOf(d.a.string)]),settings:d.a.object})}),value:d.a.oneOfType([d.a.string,d.a.bool,d.a.number])};const ae=({type:e,text:t})=>a.a.createElement("div",{className:N.a.notice,type:e},a.a.createElement("div",null,a.a.createElement("img",{className:N.a.noticeIcon,src:T.a,alt:"",draggable:!1})),a.a.createElement("div",null,t));ae.propTypes={type:d.a.string,text:d.a.string};const oe=({addonId:e,presets:t})=>a.a.createElement("div",{className:m()(N.a.setting,N.a.presets)},a.a.createElement("div",{className:N.a.settingLabel},Z.presets),t.map(t=>{const n=t.id,i=I["".concat(e,"/@preset-name-").concat(n)]||t.name,o=I["".concat(e,"/@preset-description-").concat(n)]||t.description;return a.a.createElement("button",{key:n,title:o,className:m()(N.a.button,N.a.presetButton),onClick:()=>w.a.applyAddonPreset(e,n)},i)}));oe.propTypes={addonId:d.a.string,presets:d.a.arrayOf(d.a.shape({name:d.a.string,id:d.a.string,description:d.a.string,values:d.a.shape({})}))};const se=({id:e,settings:t,manifest:n,extended:i})=>a.a.createElement("div",{className:m()(N.a.addon,{[N.a.addonDirty]:t.dirty})},a.a.createElement("div",{className:N.a.addonHeader},a.a.createElement("label",{className:N.a.addonTitle},a.a.createElement("div",{className:N.a.addonSwitch},a.a.createElement(X,{value:t.enabled,onChange:t=>{t&&n.tags.includes("danger")&&!confirm(Z.enableDangerous)||w.a.setAddonEnabled(e,t)}})),n.tags.includes("theme")?a.a.createElement("img",{className:N.a.extensionImage,src:A.a,draggable:!1,alt:""}):a.a.createElement("img",{className:N.a.extensionImage,src:S.a,draggable:!1,alt:""}),a.a.createElement("div",{className:N.a.addonTitleText},I["".concat(e,"/@name")]||n.name),i&&a.a.createElement("div",{className:N.a.addonId},"(".concat(e,")"))),a.a.createElement($,{manifest:n}),!t.enabled&&a.a.createElement("div",{className:N.a.inlineDescription},I["".concat(e,"/@description")]||n.description),a.a.createElement("div",{className:N.a.addonOperations},t.enabled&&n.settings&&a.a.createElement("button",{className:N.a.resetButton,onClick:()=>w.a.resetAddon(e),title:Z.reset},a.a.createElement("img",{src:B.a,className:N.a.resetButtonImage,alt:Z.reset,draggable:!1})))),t.enabled&&a.a.createElement("div",{className:N.a.addonDetails},a.a.createElement("div",{className:N.a.description},I["".concat(e,"/@description")]||n.description),n.credits&&a.a.createElement("div",{className:N.a.creditContainer},a.a.createElement("span",{className:N.a.creditTitle},Z.credits),a.a.createElement(J,{credits:n.credits})),n.info&&n.info.map(t=>a.a.createElement(ae,{key:t.id,type:t.type,text:I["".concat(e,"/@info-").concat(t.id)]||t.text})),n.noCompiler&&a.a.createElement(ae,{type:"warning",text:Z.noCompiler}),n.settings&&a.a.createElement("div",{className:N.a.settingContainer},n.settings.map(n=>a.a.createElement(ie,{key:n.id,addonId:e,setting:n,value:t[n.id]})),n.presets&&a.a.createElement(oe,{addonId:e,presets:n.presets}))));se.propTypes={id:d.a.string,settings:d.a.shape({enabled:d.a.bool,dirty:d.a.bool}),manifest:d.a.shape({name:d.a.string,description:d.a.string,credits:d.a.arrayOf(d.a.shape({})),info:d.a.arrayOf(d.a.shape({id:d.a.string})),settings:d.a.arrayOf(d.a.shape({id:d.a.string})),presets:d.a.arrayOf(d.a.shape({})),tags:d.a.arrayOf(d.a.string),noCompiler:d.a.bool}),extended:d.a.bool};const re=e=>a.a.createElement("div",{className:N.a.dirtyOuter},a.a.createElement("div",{className:N.a.dirtyInner},Z.dirty,e.onReloadNow&&a.a.createElement("button",{className:m()(N.a.button,N.a.dirtyButton),onClick:e.onReloadNow},Z.dirtyButton)));re.propTypes={onReloadNow:d.a.func};const le=({addons:e})=>a.a.createElement("div",{className:N.a.unsupportedContainer},a.a.createElement("span",{className:N.a.unsupportedText},Z.unsupported),e.map(({id:t,manifest:n},i)=>a.a.createElement("span",{key:t,className:N.a.unsupportedAddon},I["".concat(t,"/@name")]||n.name,i!==e.length-1&&", ")));le.propTypes={addons:d.a.arrayOf(d.a.shape({id:d.a.string,manifest:d.a.shape({name:d.a.string})}))};const de=({addons:e,extended:t})=>e.map(({id:e,manifest:n,state:i})=>a.a.createElement(se,{key:e,id:e,settings:i,manifest:n,extended:t}));class ce extends a.a.Component{constructor(e){super(e),this.state={open:e.open}}render(){return 0===this.props.addons.length?null:a.a.createElement("div",{className:N.a.addonGroup},a.a.createElement("button",{className:N.a.addonGroupName,onClick:()=>{this.setState({open:!this.state.open})}},a.a.createElement("img",{className:N.a.addonGroupExpand,src:E.a,"data-open":this.state.open,alt:""}),this.props.label.replace("{number}",this.props.addons.length)),this.state.open&&a.a.createElement(de,{addons:this.props.addons,extended:this.props.extended}))}}ce.propTypes={label:d.a.string,open:d.a.bool,addons:d.a.arrayOf(d.a.shape({id:d.a.string.isRequired,state:d.a.shape({}).isRequired,manifest:d.a.shape({}).isRequired})).isRequired,extended:d.a.bool.isRequired};const me=({id:e,manifest:t})=>{const n=new Set,i=(e,t)=>{t&&n.add({score:e,text:t})};if(i(1,e),i(1,t.name),i(1,I["".concat(e,"/@name")]),i(.5,t.description),i(.5,I["".concat(e,"/@description")]),t.settings)for(const n of t.settings)i(.25,n.name),i(.25,I["".concat(e,"/@settings-name-").concat(n.id)]);if(t.presets)for(const n of t.presets)i(.1,n.name),i(.1,I["".concat(e,"/@preset-name-").concat(n.id)]),i(.1,n.description),i(.1,I["".concat(e,"/@preset-description-").concat(n.id)]);for(const e of t.tags){const t="tags.".concat(e);Z[t]&&i(.25,Z[t])}if(t.info)for(const n of t.info)i(.25,n.text),i(.25,I["".concat(e,"/@info-").concat(n.id)]);return n};class pe extends a.a.Component{constructor(e){super(e),this.search=new g(this.props.addons.map(me)),this.groups=[]}render(){if(this.props.search){const e=this.search.search(this.props.search).slice(0,20).map(({index:e})=>this.props.addons[e]);return 0===e.length?a.a.createElement("div",{className:N.a.noResults},Z.noResults):a.a.createElement("div",null,a.a.createElement(de,{addons:e,extended:this.props.extended}))}return a.a.createElement("div",null,Object.entries(Y).map(([e,{label:t,addons:n,open:i}])=>a.a.createElement(ce,{key:e,label:t,open:i,addons:n.map(e=>this.props.addons[e]),extended:this.props.extended})))}}pe.propTypes={addons:d.a.arrayOf(d.a.shape({id:d.a.string.isRequired,state:d.a.shape({}).isRequired,manifest:d.a.shape({}).isRequired})).isRequired,search:d.a.string.isRequired,extended:d.a.bool.isRequired};class ue extends a.a.Component{constructor(e){super(e),this.handleSettingStoreChanged=this.handleSettingStoreChanged.bind(this),this.handleReloadNow=this.handleReloadNow.bind(this),this.handleResetAll=this.handleResetAll.bind(this),this.handleExport=this.handleExport.bind(this),this.handleImport=this.handleImport.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleSearch=this.handleSearch.bind(this),this.handleClickSearchButton=this.handleClickSearchButton.bind(this),this.handleClickVersion=this.handleClickVersion.bind(this),this.searchRef=this.searchRef.bind(this),this.searchBar=null,this.state=K({loading:!1,dirty:!1,search:location.hash?location.hash.substr(1):"",extended:!1},this.readFullAddonState()),j.a.changeChannel&&j.a.changeChannel.addEventListener("message",()=>{w.a.readLocalStorage(),this.setState(this.readFullAddonState())})}componentDidMount(){w.a.addEventListener("setting-changed",this.handleSettingStoreChanged),document.body.addEventListener("keydown",this.handleKeyDown)}componentWillUnmount(){w.a.removeEventListener("setting-changed",this.handleSettingStoreChanged),document.body.removeEventListener("keydown",this.handleKeyDown)}readFullAddonState(){const e={};for(const[t,n]of Object.entries(G)){const i={enabled:w.a.getAddonEnabled(t),dirty:!1};if(n.settings)for(const e of n.settings)i[e.id]=w.a.getAddonSetting(t,e.id);e[t]=i}return e}handleSettingStoreChanged(e){const{addonId:t,settingId:n,value:i}=e.detail,a=e.detail.reloadRequired||!j.a.changeChannel;var o;this.setState(e=>{const o={[t]:K(K({},e[t]),{},{[n]:i,dirty:!0})};return a&&(o.dirty=!0),o}),a||(o=w.a.store,U&&clearTimeout(U),U=setTimeout(()=>{j.a.changeChannel.postMessage({version:v.commit,store:o})},100))}handleReloadNow(){j.a.reloadChannel.postMessage(0),this.setState({dirty:!1});for(const e of Object.keys(G))this.state[e].dirty&&this.setState(t=>({[e]:K(K({},t[e]),{},{dirty:!1})}))}handleResetAll(){confirm(Z.confirmResetAll)&&(w.a.resetAllAddons(),this.setState({search:""}))}handleExport(){const e=w.a.export({theme:H});this.props.onExportSettings(e)}handleImport(){const e=document.createElement("input");e.type="file",e.accept=".json",document.body.appendChild(e),e.click(),document.body.removeChild(e),e.addEventListener("change",async()=>{const t=e.files[0];if(t)try{const e=await t.text(),n=JSON.parse(e);w.a.import(n),this.setState({search:""})}catch(e){console.error(e),alert(e)}})}handleSearch(e){const t=e.target.value;this.setState({search:t})}handleClickSearchButton(){this.setState({search:""}),this.searchBar.focus()}handleClickVersion(){this.setState({extended:!this.state.extended})}searchRef(e){this.searchBar=e}handleKeyDown(e){const t=e.key;1!==t.length||" "===t||e.target!==document.body||e.ctrlKey||e.metaKey||e.altKey||this.searchBar.focus(),"f"===t&&(e.ctrlKey||e.metaKey)&&document.activeElement!==this.searchBar&&(this.searchBar.focus(),e.preventDefault())}render(){const e=Object.entries(G).map(([e,t])=>({id:e,manifest:t,state:this.state[e]})),t=Object.entries(W).map(([e,t])=>({id:e,manifest:t}));return a.a.createElement("div",{className:N.a.container},a.a.createElement("div",{className:N.a.header},a.a.createElement("div",{className:N.a.section},a.a.createElement("div",{className:N.a.searchContainer},a.a.createElement("input",{className:N.a.searchInput,value:this.state.search,onChange:this.handleSearch,placeholder:Z.search,"aria-label":Z.search,ref:this.searchRef,spellCheck:"false",autoFocus:!0}),a.a.createElement("div",{className:N.a.searchButton,onClick:this.handleClickSearchButton})),a.a.createElement("a",{href:"https://scratch.mit.edu/users/GarboMuffin/#comments",target:"_blank",rel:"noreferrer",className:N.a.feedbackButtonOuter},a.a.createElement("span",{className:N.a.feedbackButtonInner},Z.addonFeedback))),this.state.dirty&&a.a.createElement(re,{onReloadNow:j.a.reloadChannel?this.handleReloadNow:null})),a.a.createElement("div",{className:N.a.addons},!this.state.loading&&a.a.createElement("div",{className:N.a.section},a.a.createElement(pe,{addons:e,search:this.state.search,extended:this.state.extended}),a.a.createElement("div",{className:N.a.footerButtons},a.a.createElement("button",{className:m()(N.a.button,N.a.resetAllButton),onClick:this.handleResetAll},Z.resetAll),a.a.createElement("button",{className:m()(N.a.button,N.a.exportButton),onClick:this.handleExport},Z.export),a.a.createElement("button",{className:m()(N.a.button,N.a.importButton),onClick:this.handleImport},Z.import)),a.a.createElement("footer",{className:N.a.footer},t.length?a.a.createElement(le,{addons:t}):null,a.a.createElement("span",{className:N.a.version,onClick:this.handleClickVersion},this.state.extended?"You have enabled debug mode. (Addons version ".concat(v.commit,")"):"Addons version ".concat(v.commit))))))}}ue.propTypes={onExportSettings:d.a.func};var ge=ue,ke=n(73);s.a.render(a.a.createElement(ge,{onExportSettings:e=>{const t=new Blob([JSON.stringify(e)]);Object(r.a)("turbowarp-addon-settings.json",t)}}),ke.a)},193:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return s}));var i=n(142),a=n.n(i);const o="tw:language",s=e=>{try{const t=localStorage.getItem(o);if(t&&e.includes(t))return t}catch(e){}let t="en",n=window.navigator.userLanguage||window.navigator.language;n=n.toLowerCase(),e.includes(n)?t=n:(n=n.split("-")[0],e.includes(n)&&(t=n));const i=a.a.parse(location.search),s=[].concat(i.locale,i.lang).filter(e=>e);if(!s.length)return t;const r=s[0].toLowerCase();return e.includes(r)?r:t}},209:function(e,t){e.exports=function(e){return"string"!=typeof e?e:(/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),/["'() \t\n]/.test(e)?'"'+e.replace(/"/g,'\\"').replace(/\n/g,"\\n")+'"':e)}},374:function(e,t,n){var i=n(375);"string"==typeof i&&(i=[[e.i,i,""]]);var a={hmr:!0,transform:void 0,insertInto:void 0};n(10)(i,a);i.locals&&(e.exports=i.locals)},375:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,'/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}\nbody{margin:0}\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}\naudio,canvas,progress,video{display:inline-block;vertical-align:baseline}\naudio:not([controls]){display:none;height:0}\n[hidden],template{display:none}\na{background-color:transparent}\na:active,a:hover{outline:0}\nabbr[title]{border-bottom:1px dotted}\nb,strong{font-weight:bold}\ndfn{font-style:italic}\nh1{font-size:2em;margin:.67em 0}\nmark{background:#ff0;color:#000}\nsmall{font-size:80%}\nsub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}\nsup{top:-0.5em}\nsub{bottom:-0.25em}\nimg{border:0}\nsvg:not(:root){overflow:hidden}\nfigure{margin:1em 40px}\nhr{box-sizing:content-box;height:0}\npre{overflow:auto}\ncode,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}\nbutton,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}\nbutton{overflow:visible}\nbutton,select{text-transform:none}\nbutton,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}\nbutton[disabled],html input[disabled]{cursor:default}\nbutton::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}\ninput{line-height:normal}\ninput[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}\ninput[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}\ninput[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}\ninput[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}\nfieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}\nlegend{border:0;padding:0}\ntextarea{overflow:auto}\noptgroup{font-weight:bold}\ntable{border-collapse:collapse;border-spacing:0}\ntd,th{padding:0}\n',""])},378:function(e,t,n){"use strict";e.exports=function(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}},379:function(e,t,n){"use strict";var i=new RegExp("%[a-f0-9]{2}","gi"),a=new RegExp("(%[a-f0-9]{2})+","gi");function o(e,t){try{return decodeURIComponent(e.join(""))}catch(e){}if(1===e.length)return e;t=t||1;var n=e.slice(0,t),i=e.slice(t);return Array.prototype.concat.call([],o(n),o(i))}function s(e){try{return decodeURIComponent(e)}catch(a){for(var t=e.match(i),n=1;n Desactiva el compilador o utilitzant el addon \\"Desactiva el compilador a l\'editor\\".","noResults":"Cap resultat.","reset":"Restableix","resetAll":"Restableix","search":"Cerca","tagDanger":"Perillos","tagNew":"Nou!","tagRecommended":"Recomanat","tagTheme":"Tema","title":"Configuració del addon","unsupported":"Alguns addons no hi són disponibles en aquest navegador:"},"cs":{"addonFeedback":"Zpětná vazba doplňků","confirmResetAll":"Jste si jisti, že chcete obnovit všechna nastavení doplňků na jejich výchozí hodnoty?","credits":"Příspěvky:","dirty":"Pro uložení nastavení obnovte stránku.","dirtyButton":"Obnovte nyní","enableDangerous":"Tento doplněk je nebezpečný a může úmyslně ZAKÁZAT funkce. Mnoho uživatelů by NEMĚLO tento doplněk povolovat. Jste si jisti, že to chcete povolit?","export":"Exportovat nastavení","groupDanger":"Nebezpečné ({number})","groupNew":"Nové ({number})","groupOthers":"Ostatní ({number})","import":"Importovat nastavení","noCompiler":"Tento doplněk funguje jen, když je kompilátor zakázán přes menu Pokročilé > Deaktivovat kompilátor nebo pomocí doplňku \\"Zakázat kompilátor v editoru\\".","noResults":"Žádné výsledky.","presets":"Šablony","reset":"Obnovit","resetAll":"Obnovit vše","search":"Hledat","tagDanger":"Nebezpečné","tagNew":"Nové!","tagRecommended":"Doporučeno","tagTheme":"Téma","title":"Nastavení doplňků","unsupported":"Některé doplňky nejsou dostupné v tomto prohlížeči:"},"de":{"addonFeedback":"Feedback für Addons","confirmResetAll":"Bist du sicher, dass du alle Addoneinstellungen auf ihre Standardwerte zurücksetzen willst?","credits":"Danksagungen:","dirty":"Lade die Tabs neu, um die Einstellungen anzuwenden.","dirtyButton":"Jetzt neu laden","enableDangerous":"Dieses Addon ist gefährlich und könnte gezielt Funktionen DEAKTIVIEREN. Die meisten Nutzer SOLLTEN NICHT dieses Addon aktivieren. Bist du sicher, dass du es willst?","export":"Einstellungen Exportieren","groupDanger":"Gefährlich ({number})","groupNew":"Neu ({number})","groupOthers":"Andere ({number})","import":"Einstellungen Importieren","noCompiler":"Dieses Addon funktioniert nur, wenn der Compiler über das \\"Erweitert > Compiler ausschlten\\"-Menü deaktiviert ist oder wenn das \\"Disable compiler in editor\\"-Addon aktiviert ist.","noResults":"Keine Suchergebnisse.","presets":"Voreinstellungen","reset":"Zurücksetzen","resetAll":"Alle zurücksetzen","search":"Suchen","tagDanger":"Gefährlich","tagNew":"Neu!","tagRecommended":"Empfohlen","tagTheme":"Design","title":"Addon-Einstellungen","unsupported":"Manche Addons sind in diesem Browser nicht verfügbar:"},"es":{"addonFeedback":"Enviar comentarios sobre addons","confirmResetAll":"¿Está seguro de que quiere reiniciar todos los addons a sus valores predeterminados?","credits":"Créditos:","dirty":"Recargue las pestañas para aplicar la configuración.","dirtyButton":"Recargar ahora","enableDangerous":"Este addon es peligroso y podría intencionalmente DESACTIVAR funciones. La mayoría de los usuarios NO DEBERÍAN activar este addon. ¿Está seguro de que lo quiere activar?","export":"Exportar ajustes","groupDanger":"Peligrosos ({number})","groupNew":"Nuevos ({number})","groupOthers":"Otros ({number})","import":"Importar ajustes","noCompiler":"Este addon solo funciona cuando el compilador está desactivado en el menú Avanzado > Desactivar compilador o usando el addon «Deshabilitar compilador en editor».","noResults":"Sin resultados.","reset":"Reiniciar","resetAll":"Reiniciar todos","search":"Buscar","tagDanger":"Peligroso","tagNew":"¡Nuevo!","tagRecommended":"Recomendado","tagTheme":"Tema","title":"Ajustes de Addons","unsupported":"Algunos addons no están disponibles en este navegador:"},"fr":{"addonFeedback":"Commentaires sur les addons","credits":"Crédits:","dirtyButton":"Recharger maintenant","enableDangerous":"Cet addon est dangereux et va intentionnellement DÉSACTIVER certaines fonctionnalitées. La plupart des utilisateurs NE DOIVENT PAS activer cet addon. Êtes-vous sûr de vouloir l\'activer ?","export":"Exporter les paramètres","groupDanger":"Dangereux ({number})","groupOthers":"Autres ({number})","import":"Importer les paramètres","noResults":"Aucun résultat.","presets":"Préconfigurations","reset":"Réinitialiser","resetAll":"Tout réinitialiser","search":"Rechercher","tagBeta":"Bêta","tagDanger":"Dangereux","tagNew":"Nouveau!","tagRecommended":"Recommandé","tagTheme":"Thème","title":"Paramètres des addons","unsupported":"Les addons suivants ne sont pas pris en charge par votre navigateur:"},"he":{"addonFeedback":"משוב עבור הרחבות","confirmResetAll":"האם אתה בטוח שברצונך לאפס את כל הגדרות ההרחבה לערכי ברירת המחדל שלהן?","credits":"נקודות זכות:","dirty":"טען מחדש את כל הכרטיסיות הפתוחות כדי שההגדרות ייכנסו לתוקף.","dirtyButton":"טען מחדש את הכרטיסיות כעת","enableDangerous":"תוסף זה עשוי להשבית תכונות בכוונה. רוב המשתמשים לא צריכים להפעיל זאת. האם ברצונך להפעיל אותו?","export":"הגדרות ייצוא","groupDanger":"לא בטיחותי({number})","groupNew":"חָדָשׁ!({number})","groupOthers":"שונות({number})","import":"הגדרות ייבוא.","noCompiler":"תוסף זה יעבוד רק כאשר אתה משבית את המהדר דרך התפריט מתקדם > השבת מהדר או באמצעות התוסף \\"השבת את המהדר בעורך\\".","noResults":"לא נמצאו תוצאות.","presets":"ערכים מוגדרים מראש","reset":"אִתחוּל","resetAll":"לאפס הכל","search":"לחפש","tagBeta":"בטא","tagDanger":"לא בטיחותי","tagNew":"חָדָשׁ!","tagRecommended":"הציע","tagTheme":"ערכת נושא","title":"הגדרות תוסף","unsupported":"חלק מהתוספות אינן נגישות בדפדפן שלך:"},"it":{"addonFeedback":"Feedback sull\'Addon","confirmResetAll":"Sei sicuro di voler riportare tutte le impostazioni dell\'addon al loro stato iniziale?","credits":"Autore/i:","dirty":"Ricarica le schede del browser per applicare le nuove impostazioni.","dirtyButton":"Ricarica ora","enableDangerous":"Questo addon è pericoloso e può intenzionalmente DISABILITARE delle funzionalità. La maggior parte degli utenti NON DOVREBBE abilitare questo addon. Sei sicuro di volerlo abilitare?","export":"Esporta le impostazioni","groupDanger":"Pericolosi ({number})","groupNew":"Nuovi ({number})","groupOthers":"Altri ({number})","import":"Importa le impostazioni","noCompiler":"Questo addon funziona soltanto quando il compilatore è disabilitato usando il menu Impostazioni Avanzate > Disabilita Compilatore o l\'addon \\"Disabilita il compilatore nell\'editor\\".","noResults":"Nessun risultato.","presets":"Valori predefiniti","reset":"Resetta","resetAll":"Resetta tutto","search":"Cerca","tagDanger":"Pericoloso","tagNew":"Nuovo!","tagRecommended":"Raccomandato","tagTheme":"Tema","title":"Impostazioni Addon","unsupported":"Alcuni addon non sono disponibili in questo browser:"},"ja":{"addonFeedback":"アドオンのフィードバック","confirmResetAll":"アドオンの設定を削除し、デフォルトに戻します。よろしいですか?","credits":"クレジット:","dirty":"タブを再読み込みして設定を適用します","dirtyButton":"すぐに再読み込みする","enableDangerous":"このアドオンは危険で、意図的に機能を無効にする可能性があります。多くのユーザーは、このアドオンを有効にすべきではありません。本当に有効にしていいですか?","export":"設定を保存する","groupDanger":"危険({number})","groupNew":"新機能({number})","groupOthers":"その他({number})","import":"設定を読み込む","noCompiler":"このアドオンは、「高度な設定」→「コンパイラを無効にする」、またはアドオンの「エディタでコンパイラを無効にする」を使用してコンパイラを無効にしたときのみ機能します。","noResults":"検索条件に一致する結果はありません。","presets":"プリセット","reset":"リセット","resetAll":"全てリセットする","search":"検索","tagBeta":"ベータ版","tagDanger":"危険","tagNew":"新機能!","tagRecommended":"おすすめ","tagTheme":"テーマ","title":"アドオン設定","unsupported":"いくつかのアドオンがお使いのブラウザに対応していません:"},"ja-hira":{"addonFeedback":"アドオンのフィードバック","confirmResetAll":"アドオンのせっていをさくじょして、もとにもどします。よろしいですか?","credits":"クレジット:","dirty":"タブをもういちどよみこんでせっていをてきおうします","dirtyButton":"すぐにもういちどよみこむ","export":"せっていをほぞんする","groupDanger":"きけん({number})","groupNew":"しんきのう({number})","groupOthers":"そのほか({number})","import":"せっていをよみこむ","noResults":"検索条件(けんさくじょうけん)に一致(いっち)する結果(けっか)はありません。","presets":"プリセット","reset":"リセット","resetAll":"すべてリセットする","search":"けんさく","tagBeta":"ベータばん","tagDanger":"きけん","tagNew":"しんきのう!","tagRecommended":"おすすめ","tagTheme":"テーマ","title":"アドオンせってい","unsupported":"いくつかのアドオンがおつかいのブラウザにたいおうしていません:"},"ko":{"addonFeedback":"애드온 피드백하기","confirmResetAll":"정말로 애드온 설정을 기본값으로 초기화하시겠습니까?","credits":"도움을 준 사람들 :","dirty":"설정을 적용하려면 탭을 새로고침해야 합니다.","dirtyButton":"즉시 재시작","enableDangerous":"이 애드온은 위험하며 의도적으로 몇몇 기능을 비활성화할 수도 있습니다. 대부분의 사용자들은 이 애드온을 활성화 해서는 안됩니다. 정말로 활성화 하시겠습니까?","export":"설정 내보내기","groupDanger":"위험한 기능 ({number})","groupNew":"새 기능 ({number})","groupOthers":"기타 ({number})","import":"설정 가져오기","noCompiler":"이 애드온은 메뉴에서 고급 설정 > 컴파일러 비활성화 또는 \\"에디터에서 컴파일러 비활성화\\" 애드온을 통해서 컴파일러가 비활성화 되었을 때에만 작동합니다.","noResults":"결과가 없습니다.","presets":"프리셋","reset":"초기화","resetAll":"모두 초기화","search":"검색","tagBeta":"베타","tagDanger":"위험한 기능","tagNew":"새 기능!","tagRecommended":"추천","tagTheme":"테마","title":"애드온 설정","unsupported":"몇몇 애드온은 다음 브라우저에서 사용할 수 없습니다 :"},"lt":{"addonFeedback":"Įskiepių atsiliepimas","confirmResetAll":"Ar jūs tikras kad norite nustatyti visus įskiepių nustatymus į jų numatytąsias vertes?","credits":"Padėkos:","dirty":"Perkrauk skirtukus nustatymų pritaikymui.","dirtyButton":"Perkrauti dabar","enableDangerous":"Šis įskiepis yra pavojingas ir gali tyčia IŠJUNGTI funkcijas. Dauguma naudotojų NETURĖTŲ įjungti šio priedo. Ar tikrai norite jį įjungti?","export":"Eksportuoti nustatymus","groupDanger":"Pavojingi ({number})","groupNew":"Nauji ({number})","groupOthers":"Kiti ({number})","import":"Importuoti nustatymus","noCompiler":"Šis priedas veikia tik tada, kai kompiliatorius išjungtas per meniu Išplėstinė > Išjungti kompiliatorių arba naudojant įskiepį \\"Išjungti kompiliatorių redaktoriuje\\".","noResults":"Jokių rezultatų.","presets":"Iš anksto nustatyti","reset":"nustatyti iš naujo","resetAll":"nustatyti viską iš naujo","search":"Ieškoti","tagDanger":"Pavojingas","tagNew":"Naujiena!","tagRecommended":"Rekomenduotas","tagTheme":"Fonas","title":"Įskiepių nustatymai","unsupported":"Keletas įskiepių yra nepalaikomi šioje naršyklėje:"},"nl":{"addonFeedback":"Addonfeedback","confirmResetAll":"Weet je zeker dat je alle addonsinstellingen wilt resetten naar hun standaardinstellingen?","credits":"Dank aan:","dirty":"Ververs tabbladen om instellingen toe te passen.","dirtyButton":"Nu verversen","enableDangerous":"Deze addon is gevaarlijk en kan opzettelijk functies UITSCHAKELEN. De meeste gebruikers moeten deze addon NIET gebruiken. Weet je zeker dat je het wilt inschakelen?","export":"Instellingen exporteren","groupDanger":"Gevaarlijk ({number})","groupNew":"Nieuw ({number})","groupOthers":"Anderen ({number})","import":"Instellingen importeren","noCompiler":"Deze addon werkt alleen als de compiler is uitgeschakeld, dit kun je doen in Geavanceerd > Compiler Uitschakelen of door de \\"Compiler uitschakelen in editor\\"-addon.","noResults":"Geen resultaten.","presets":"Voorinstellingen","reset":"Resetten","resetAll":"Alles resetten","search":"Zoeken","tagBeta":"Bèta","tagDanger":"Gevaarlijk","tagNew":"Nieuw!","tagRecommended":"Aanbevolen","tagTheme":"Thema","title":"Addonsinstellingen","unsupported":"Sommige addons zijn niet beschikbaar in deze browser:"},"pl":{"addonFeedback":"Opinia o dodatkach","confirmResetAll":"Jesteś pewien, że chcesz zresetować wszystkie dodatki do ich domyślnych wartości?","credits":"Podziękowania:","dirty":"Odśwież karty, aby załączyć ustawienia.","dirtyButton":"Odśwież teraz","enableDangerous":"Ten dodatek jest niebezpieczny i może intencjonalnie WYŁĄCZYĆ funkcje. Większość użytkowników NIE POWINNA włączać tego dodatku. Czy jesteś pewien, że chcesz go włączyć?","export":"Eksportuj ustawienia","groupDanger":"Niebezpieczne ({number})","groupNew":"Nowe ({number})","groupOthers":"Inne ({number})","import":"Importuj ustawienia","noCompiler":"Ten dodatek działa tylko kiedy kompiler jest wyłączony poprzez Zaawansowane Ustawienia > Wyłącz Kompiler albo używając dodatku \\"Wyłącz kompiler w edytorze\\".","noResults":"Brak wyników.","presets":"Ustawienia wstępne","reset":"Resetuj","resetAll":"Resetuj wszystko","search":"Szukaj","tagDanger":"Niebezpieczne","tagNew":"Nowość!","tagRecommended":"Polecane","tagTheme":"Motyw","title":"Ustawienia Dodatków","unsupported":"Niektóre dodatki nie są dostępne w tej przeglądarce:"},"pt":{"addonFeedback":"Dar Feedback sobre Addons","confirmResetAll":"Tem certeza que quer restaurar todas as configurações de addons aos seus valores originais?","credits":"Créditos:","dirtyButton":"Recarregar agora","enableDangerous":"Este addon é perigoso e pode intencionalmente DESATIVAR funcionalidades. A maioria dos usuários NÃO DEVEM ativar este addon. Tem certeza que quer ativá-lo?","export":"Exportar configurações","groupDanger":"Perigosos ({number})","groupNew":"Novos ({number})","groupOthers":"Outros ({number})","import":"Importar configurações","noCompiler":"Esse addon apenas funciona com o compilador desligado, o que pode ser feito através do menu Avançado > Desligar Compilador ou usando o addon \\"Desabilitar compilador no editor\\".","noResults":"Nenhum resultado.","presets":"Predefinições","reset":"Redefinir","resetAll":"Redefinir todos","search":"Buscar","tagDanger":"Perigoso","tagNew":"Novo!","tagRecommended":"Recomendado","tagTheme":"Tema","title":"Configurações de Addon","unsupported":"Alguns addons não estão disponíveis neste navegador:"},"pt-br":{"addonFeedback":"Dar Feedback sobre Addons","confirmResetAll":"Tem certeza que quer restaurar todas as configurações de addons aos seus valores originais?","credits":"Créditos:","dirty":"Recarregue a página para aplicar as opções.","dirtyButton":"Recarregar agora","enableDangerous":"Este addon é perigoso e pode intencionalmente DESATIVAR funcionalidades. A maioria dos usuários NÃO DEVEM ativar este addon. Tem certeza que quer ativá-lo?","export":"Exportar configurações","groupDanger":"Perigosos ({number})","groupNew":"Novos ({number})","groupOthers":"Outros ({number})","import":"Importar configurações","noCompiler":"Esse addon apenas funciona com o compilador desligado, o que pode ser feito através do menu Avançado > Desligar Compilador ou usando o addon \\"Desabilitar compilador no editor\\".","noResults":"Nenhum resultado.","presets":"Predefinições","reset":"Redefinir","resetAll":"Redefinir todos","search":"Buscar","tagDanger":"Perigoso","tagNew":"Novo!","tagRecommended":"Recomendado","tagTheme":"Tema","title":"Configurações de Addon","unsupported":"Alguns addons não estão disponíveis neste navegador:"},"ru":{"addonFeedback":"Отзывы о дополнениях","confirmResetAll":"Вы уверены, что хотите сбросить настройки всех дополнений до значений по умолчанию?","credits":"Благодарности:","dirty":"Перезагрузите вкладки, чтобы применить настройки.","dirtyButton":"Перезагрузить сейчас","enableDangerous":"Этот аддон опасен и может намеренно ОТКЛЮЧИТЬ функции. Большинству пользователей НЕ СЛЕДУЕТ включать этот аддон. Вы уверены, что хотите его включить?","export":"Экспорт настроек","groupDanger":"Опасное ({number})","groupNew":"Новое ({number})","groupOthers":"Прочее ({number})","import":"Импорт настроек","noCompiler":"Этот аддон работает только когда компилятор отключен через меню Дополнительно > Отключить Компилятор или при помощи аддона \\"Отключение компилятора в редакторе\\"","noResults":"Нет результатов.","presets":"Предустановки","reset":"Сбросить","resetAll":"Сбросить всё","search":"Поиск","tagBeta":"Бета","tagDanger":"Опасное","tagNew":"Новое!","tagRecommended":"Рекомендованно","tagTheme":"Тема","title":"Настройки аддонов","unsupported":"Некоторые дополнения не доступны в данном браузере:"},"sl":{"addonFeedback":"Povratne informacije o dodatkih","confirmResetAll":"Ste prepričani, da želite ponastaviti vse nastavitve dodatkov?","credits":"Hvala:","dirty":"Znova naložite zavihke, da uporabite spremenjene nastavitve.","dirtyButton":"Znova naloži zdaj","enableDangerous":"Ta dodatek je nevaren in morda namenoma ODSTRANI funkcije. Večina uporabnikov tega dodatka NE POTREBUJE. Ste prepričani, da ga želite vključiti?","export":"Izvozi nastavitve","groupDanger":"Nevarno ({number})","groupNew":"Novo ({number})","groupOthers":"Drugo ({number})","import":"Uvozi nastavitve","noCompiler":"Ta dodatek deluje samo, če je prevajalnik izključen v meniju Napredno > Onemogoči prevajalnik ali z dodatkom \\"Disable compiler in editor\\".","noResults":"Ni rezultatov.","presets":"Prednastavitve","reset":"Ponastavi","resetAll":"Ponastavi vse","search":"Iskanje","tagDanger":"Nevarno","tagNew":"Novo!","tagRecommended":"Priporočeno","tagTheme":"Tema","title":"Nastavitve dodatkov","unsupported":"Nekateri dodatki v tem brskalniku niso na voljo:"},"sr":{"addonFeedback":"Повратне информације о додацима","confirmResetAll":"Да ли сте сигурни да желите да ресетујете сва подешавања додатака?","credits":"Заслуге:","dirtyButton":"Понов учитај","enableDangerous":"Овај додатак је опасан и може намерно ОНЕМОГУЋИТИ функције. Већина корисника НЕ ТРЕБА користити овај додатак. Да ли сте сигурни да га желите укључити?","export":"Извези подешавања","groupDanger":"Опасно ({number})","groupNew":"Ново ({number})","groupOthers":"Остало ({number})","import":"Увези подешавања","noCompiler":"Овај додатак ради само кад је преводилац кода онемогућен кроз мени Напредно > Онемогући преводилац кода или користећи додатак \\"Онемогући преводилац кода у едитору\\".","noResults":"Нема резултата.","presets":"Унапред подешена подешавања","reset":"Ресетуј","resetAll":"Ресетуј све","search":"Претражи","tagBeta":"Бета","tagDanger":"Опасно","tagNew":"Ново!","tagRecommended":"Препоручено","tagTheme":"Тема","title":"Подешавања додатака","unsupported":"Неки додаци нису доступни у овом прегледачу:"},"sv":{"addonFeedback":"Tilläggsrespons","confirmResetAll":"Är du säker på att du vill återställa alla tilläggsinställningar till standardvärdena?","credits":"kreditera:","dirty":"Ladda om flikarna för att tillämpa ändringar","dirtyButton":"Ladda om nu","enableDangerous":"Detta tillägget är farligt och kommer att STÄNGA AV funktioner. De flesta användarna ska INTE aktivera detta tillägg. Är du säker att aktivera det?","export":"Exportera inställningar","groupDanger":"Farliga ({number})","groupNew":"Nytt ({number})","groupOthers":"Andra ({number})","import":"Importera inställningar","noCompiler":"Detta tillägg funkar bara om kompilatorn är av genom att gå till Avancerat > Stäng av kompilator eller att använda \\"Stäng av kompilatorn i editorn\\" tillägget","noResults":"Inga resutat","presets":"Förinställningar","reset":"Starta om","resetAll":"Starta om allt","search":"Sök","tagDanger":"Farliga","tagNew":"Nytt!","tagRecommended":"Rekomenderat","tagTheme":"Tema","title":"Tilläggsinställningar","unsupported":"Vissa tillägg är inte tillgängliga i den här webbläsaren:"},"tr":{"addonFeedback":"Eklenti geribildirim","confirmResetAll":"Bütün eklenti ayarlarını varsayılan değerlerine sıfırlamak istediğinizden emin misiniz?","credits":"Krediler:","dirty":"Ayarı uygulamak için sekmeleri yeniden yükleyin.","dirtyButton":"Şimdi yeniden yükle","enableDangerous":"Bu eklenti tehlikelidir ve bilerek özellikleri DEVRE DIŞI BIRAKABİLİR. Çoğu kullanıcı bu eklentiyi ETKİNLEŞTİRMEMELİDİR. Etkinleştirmek istediğinizden emin misiniz?","export":"Dışarıya aktarmak ayarları","groupDanger":"Tehlikeli ({number})","groupNew":"Yeni ({number})","groupOthers":"Diğerler ({number})","import":"İçeri aktarmak ayarları","noCompiler":"Bu eklenti sadece derleyiciyi Gelişmiş > Derlemeyi Kapat yada Derlemeyi editörde kapat eklenti ile kapatırsan","noResults":"Sonuçlar yok.","presets":"Varsayılan ayarları","reset":"Sıfırla","resetAll":"Her şeyi sıfırla","search":"Arama","tagDanger":"Tehlikeli","tagNew":"Yeni!","tagRecommended":"Önerildi","tagTheme":"Tema","title":"Eklenti Ayarları","unsupported":"Bazı eklentiler bu tarayıcıda kullanılamıyor:"},"uk":{"addonFeedback":"Відгук про доповнення","confirmResetAll":"Ви впевнені, що хочете скинути усі налаштування доповненнь до їхніх значеннь за замовчуванням?","credits":"Подяка:","dirty":"Перезавантажте вкладки щоб застосувати налаштування.","dirtyButton":"Перезавантажити зараз","enableDangerous":"Це доповнення небезпечне та може навмисно ВИМИКАТИ деякі функції. Деяким користувачам НЕ СЛІД вмикати цю функцію. Ви дійсно хочите увімкнути це?","export":"Експортувати налаштування","groupDanger":"Небезпечні ({number})","groupNew":"Нове ({number})","groupOthers":"Інші ({number})","import":"Імпортувати налаштування","noCompiler":"Це доповнення працює тільки тоді, коли компілятор вимкнено, вимкніть компілятор в меню \\"Додатково\\" або використовуйте доповнення \\"Вимкнути компілятор в редакторі\\".","noResults":"Немає результатів.","presets":"Попередні налаштування","reset":"Скинути","resetAll":"Скинути все","search":"Пошук","tagBeta":"Бета","tagDanger":"Небезпечно","tagNew":"Нове!","tagRecommended":"Рекомендовано","tagTheme":"Тема","title":"Налаштування доповненнь","unsupported":"Деякі доповнення не доступні у цьому браузері:"},"vi":{"addonFeedback":"Phản hồi","confirmResetAll":"Bạn có chắc khi chỉnh lại tất cả các cài đặt addon về giá trị mặc định không?","credits":"Tác giả:","dirtyButton":"Tải lại ngay bây giờ","enableDangerous":"Addon này nguy hiểm và có thể cố ý VÔ HIỆU HOÁ các tính năng. Hầu hết người dùng KHÔNG NÊN bật addon này. Bạn có chắc khi bật addon này chứ?","export":"Xuất cài đặt","groupDanger":"Nguy hiểm ({number})","groupNew":"Mới ({number})","groupOthers":"Còn lại ({number})","import":"Tải lên cài đặt","noResults":"Không có kết quả.","presets":"Cài đặt cho trước","reset":"Cài Đặt Lại","resetAll":"Cài Đặt lại tất cả","search":"Tìm kiếm","tagDanger":"Nguy hiểm","tagNew":"Mới!","tagRecommended":"Khuyên dùng","tagTheme":"Chủ đề","title":"Cài Đặt Addon","unsupported":"Một vài addons không khả dụng ở trong trình duệt này:"},"zh-cn":{"addonFeedback":"插件反馈","confirmResetAll":"你确定要将所有插件设置重置为默认值吗?","credits":"鸣谢:","dirty":"重新加载选项卡以应用设置。","dirtyButton":"重新加载","enableDangerous":"此插件存在潜在的风险,可能会禁用某些功能。大多数用户不应启用此加载项。您确定要启用它吗?","export":"导出设置","groupDanger":"危险({number})","groupNew":"最新({number})","groupOthers":"其他({number})","import":"导入设置","noCompiler":"这个插件只有在通过高级 > 禁用编译器选项或使用\\"在编辑器中禁用编译器\\"插件禁用编译器的情况下才能工作。","noResults":"没有相符的结果。","presets":"预设","reset":"重置","resetAll":"全部重置","search":"搜索","tagBeta":"测试","tagDanger":"危险","tagNew":"最新","tagRecommended":"推荐","tagTheme":"外观","title":"插件设置","unsupported":"某些插件在此浏览器中不可用:"},"zh-tw":{"addonFeedback":"附加元件回饋","confirmResetAll":"你確定要重設所有附件設定?","credits":"感謝:","dirtyButton":"重新載入","export":"匯出設定","groupDanger":"危險({number})","groupNew":"全新({number})","groupOthers":"其他({number})","import":"匯入設定","noResults":"沒有相符的結果。","presets":"預設","reset":"重設","resetAll":"全部重設","search":"搜尋……","tagBeta":"測試","tagDanger":"危險","tagNew":"全新","tagRecommended":"推薦","tagTheme":"外觀","title":"附件設定","unsupported":"下列附加元件在此瀏覽器不可用:"}}')},467:function(e,t,n){e.exports=n.p+"static/assets/1640b6d968e0a0e13bc3c309a616deaa.svg"},52:function(e,t,n){"use strict";let i,a;"undefined"!=typeof BroadcastChannel&&(i=new BroadcastChannel("addons-change"),a=new BroadcastChannel("addons-reload")),t.a={changeChannel:i,reloadChannel:a}},58:function(e,t,n){"use strict";let i;n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return s})),n.d(t,"d",(function(){return a}));const a=function(e){i=e},o=function(){return i},s=function(){return!o()};t.a=o},73:function(e,t,n){"use strict";const i=document.getElementById("app");for(;i.firstChild;)i.removeChild(i.firstChild);document.body.classList.add("tw-loaded"),t.a=i},88:function(e,t,n){"use strict";t.a=(e,t)=>{const n=document.createElement("a");if(document.body.appendChild(n),navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(t,e);else if("download"in HTMLAnchorElement.prototype){const i=window.URL.createObjectURL(t);n.href=i,n.download=e,n.type=t.type,n.click(),window.setTimeout(()=>{document.body.removeChild(n),window.URL.revokeObjectURL(i)},1e3)}else{let e=window.open("","_blank");const n=new FileReader;n.onloadend=function(){e.location.href=n.result,e=null},n.readAsDataURL(t)}}},880:function(e){e.exports=JSON.parse('{"title":"Addon Settings","credits":"Credits:","reset":"Reset","resetAll":"Reset all","confirmResetAll":"Are you sure you want to reset all addon settings to their default values?","dirty":"Reload tabs to apply settings.","dirtyButton":"Reload now","presets":"Presets","noCompiler":"This addon only works when the compiler is disabled through the Advanced > Disable Compiler menu or using the \\"Disable compiler in editor\\" addon.","tagRecommended":"Recommended","tagDanger":"Dangerous","tagTheme":"Theme","tagBeta":"Beta","tagNew":"New!","groupNew":"New ({number})","groupOthers":"Others ({number})","groupDanger":"Dangerous ({number})","search":"Search","noResults":"No results.","export":"Export settings","import":"Import settings","unsupported":"Some addons are not available in this browser:","addonFeedback":"Addon Feedback","enableDangerous":"This addon is dangerous and may intentionally DISABLE features. Most users SHOULD NOT enable this addon. Are you sure you want to enable it?"}')},881:function(e,t,n){e.exports=n.p+"static/assets/6f52bcc0310181641bac6fec51c69e13.svg"},882:function(e,t,n){e.exports=n.p+"static/assets/969aaca3d7c0ff67b664b24c2652fb12.svg"},883:function(e,t,n){e.exports=n.p+"static/assets/7c9434c4f1f44e3d198db3bc77305fff.svg"},884:function(e,t,n){e.exports=n.p+"static/assets/b987c9e2c37b17bd7c97f1fa47257d7e.svg"},886:function(e,t){Blob.prototype.text||(Blob.prototype.text=function(){return new Promise((e,t)=>{const n=new FileReader;n.onload=()=>e(n.result),n.onerror=()=>t(new Error("Cannot read blob as text")),n.readAsText(this)})}),Array.prototype.flat||(Array.prototype.flat=function(e=1){const t=[];for(const n of this)if(Array.isArray(n))if(e<1)t.push(n);else for(const i of n.flat(e-1))t.push(i);else t.push(n);return t}),"function"!=typeof queueMicrotask&&(window.queueMicrotask=e=>{Promise.resolve().then(e)})},96:function(e,t,n){"use strict";n.d(t,"b",(function(){return d})),n.d(t,"a",(function(){return m}));var i=n(1),a=n.n(i),o=n(97),s=n.n(o);function r(){return(r=Object.assign||function(e){for(var t=1;t{try{const e=localStorage.getItem("tw:theme");if(null!==e)return"dark"===e}catch(e){}return l.matches},c=document.createElement("style");c.textContent=s.a;const m=function(e){class t extends a.a.Component{constructor(e){super(e),this.handleQueryChange=this.handleQueryChange.bind(this),this.handleClickTheme=this.handleClickTheme.bind(this),this.state={dark:d()}}componentDidMount(){l.addEventListener&&l.addEventListener("change",this.handleQueryChange),this.updateDark()}componentDidUpdate(){try{localStorage.setItem("tw:theme",this.state.dark?"dark":"light")}catch(e){}this.updateDark()}componentWillUnmount(){l.removeEventListener&&l.removeEventListener("change",this.handleQueryChange)}updateDark(){const e=this.state.dark;document.body.setAttribute("theme",e?"dark":"light"),e&&!c.parentNode?document.body.insertBefore(c,document.body.firstChild):!e&&c.parentNode&&c.parentNode.removeChild(c)}handleQueryChange(){this.setState({dark:l.matches})}handleClickTheme(){this.setState(e=>({dark:!e.dark}))}render(){return a.a.createElement(e,r({onClickTheme:this.handleClickTheme,isDark:this.state.dark},this.props))}}return t}},97:function(e,t){e.exports='/* GUI */\n:root {\n background: #111;\n color: #eee;\n color-scheme: dark;\n /* see colors.csss */\n --ui-primary: rgb(17, 17, 17);\n --ui-secondary: rgb(30, 30, 30);\n --ui-tertiary: rgb(46, 46, 46);\n --ui-modal-overlay: #333a;\n --ui-black-transparent: rgba(255, 255, 255, 0.15);\n --text-primary: #eee;\n /* scratch-paint */\n --paint-ui-pane-border: var(--ui-black-transparent);\n --paint-text-primary: #eee;\n --paint-form-border: var(--ui-black-transparent);\n}\n\n/* Blockly */\n.blocklySvg {\n background-color: var(--ui-secondary) !important;\n color-scheme: light;\n}\n[id^="blocklyGridPattern"] > line {\n stroke: #484848;\n}\n.blocklyFlyoutBackground {\n fill: #111;\n}\n.blocklyFlyoutLabelText {\n fill: #ccc;\n}\n.blocklyFlyoutButton .blocklyText {\n fill: #ccc;\n}\n.blocklyFlyoutButton:hover {\n fill: #111;\n}\n/* blocklyFlyoutCheckboxPath stroke and blocklyFlyoutCheckbox fill must match */\n.blocklyFlyoutCheckboxPath {\n stroke: #111;\n}\n.blocklyFlyoutCheckbox {\n fill: #111;\n}\n.checked > .blocklyFlyoutCheckbox {\n stroke: #a1c6fa;\n}\n.checked > .blocklyFlyoutCheckboxPath {\n stroke: white;\n}\n.scratchCategoryMenu {\n color: #ccc;\n}\n.blocklyToolboxDiv,\n.scratchCategoryMenu {\n background: #111 !important;\n}\n.blocklyScrollbarHandle {\n fill: #666;\n}\n.blocklyZoom {\n filter: invert(100%);\n}\n.scratchCategoryMenuItem.categorySelected {\n background: var(--ui-secondary);\n}\n.valueReportBox {\n color: black;\n}\n.blocklyWidgetDiv {\n color-scheme: light;\n}\n.blocklyWidgetDiv .goog-menu {\n background: var(--ui-primary);\n border-color: var(--ui-black-transparent);\n}\n.blocklyWidgetDiv .goog-menuitem {\n color: var(--text-primary);\n}\n.blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-content {\n color: #666 !important;\n}\n.sa-blockly-menu-item-border {\n border-top-color: var(--ui-black-transparent) !important;\n}\n.blocklyWidgetDiv .goog-menuitem.goog-menuitem-highlight {\n background-color: var(--ui-tertiary);\n border-color: transparent; /* remove border */\n}\n.scratchCommentText {\n color: black;\n}\n.blocklyInsertionMarker > .blocklyPath {\n fill: #ccc;\n}\n\n/* Other / Multipurpose */\n.Popover {\n /* weird Chrome bug displays white bar above popovers with color-scheme: dark */\n color-scheme: light;\n}\n.Popover-body {\n background: var(--ui-secondary);\n border-color: var(--ui-black-transparent);\n color: var(--text-primary);\n}\n.Popover-tipShape {\n fill: var(--ui-secondary);\n stroke: var(--ui-black-transparent);\n}\n'}}); \ No newline at end of file diff --git a/js/addon-settings~addons~editor~fullscreen~player.1af613e0edbf7211ac43.js b/js/addon-settings~addons~editor~fullscreen~player.1af613e0edbf7211ac43.js new file mode 100644 index 0000000..e6d0e22 --- /dev/null +++ b/js/addon-settings~addons~editor~fullscreen~player.1af613e0edbf7211ac43.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[1],{128:function(e,t,s){"use strict";var a={editorOnly:!0,noTranslations:!0,name:"Cat blocks",description:"Brings back editor cat hat blocks from April Fools 2020.",credits:[{name:"TheColaber",link:"https://scratch.mit.edu/users/TheColaber/"},{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],info:[{type:"notice",text:'The "watch mouse cursor" setting may impact performance when the editor is open.',id:"watch"}],settings:[{id:"watch",name:"Watch mouse cursor",default:!1,type:"boolean"}],tags:["theme"],enabledByDefault:!1};var o={editorOnly:!0,name:"Developer tools",description:"Adds new menu options to the editor: copy/paste blocks, better clean up, and more!",credits:[{name:"griffpatch"}],settings:[{dynamic:!0,name:'Enhance "Clean up Blocks"',id:"enableCleanUpPlus",type:"boolean",default:!0},{dynamic:!0,name:"Paste blocks at mouse cursor",id:"enablePasteBlocksAtMouse",type:"boolean",default:!0}],userscripts:[{url:"userscript.js"}],tags:["recommended"],enabledByDefault:!0};var n={editorOnly:!0,name:"Editor find bar",description:"Adds a find bar to find and jump to scripts, costumes and sounds next to the sounds tab. Use Ctrl+Left and Ctrl+Right in the code area to navigate to previous or next visited position after using the find bar.",info:[{text:'This addon was previously part of the "developer tools" addon but has moved here.',id:"developer-tools"}],credits:[{name:"griffpatch"},{name:"TheColaber",link:"https://scratch.mit.edu/users/thecolaber/"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],userstyles:[{url:"userstyle.css"}],tags:["recommended"],enabledByDefault:!0};var i={editorOnly:!0,name:"Insert blocks by name",description:"Middle click on the code area, use Ctrl+Space or Shift+Click to bring up a floating input box where you can type the name of a block (or parts of it) and drag the block into the code area. Hold Shift while dragging to avoid closing the box when adding multiple blocks at once.",credits:[{name:"griffpatch"},{name:"TheColaber",link:"https://scratch.mit.edu/users/TheColaber/"}],tags:["recommended"],enabledByDefault:!0,userscripts:[{url:"userscript.js"}],userstyles:[{url:"userstyle.css"}],info:[{text:'This addon was previously part of the "developer tools" addon but has moved here.',id:"developer-tools"}]};var r={name:"Jump to custom block definition",description:"Allows you to jump to a custom block's definition using the middle mouse button or Shift+Click on the block.",info:[{text:'This addon was previously part of the "developer tools" addon but has moved here.',id:"developer-tools"}],credits:[{name:"griffpatch"}],userscripts:[{url:"userscript.js"}],tags:["recommended"],enabledByDefault:!0,dynamicDisable:!0};const l="undefined"!=typeof window&&"ontouchstart"in window,d="undefined"!=typeof navigator&&navigator.clipboard&&navigator.clipboard.write,c="undefined"!=typeof MediaRecorder&&MediaRecorder.isTypeSupported("video/webm"),u={editorOnly:!0,name:"Searchable dropdowns",description:"Allows you to search block dropdowns.",credits:[{name:"GarboMuffin"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],userstyles:[{url:"userscript.css"}],tags:["recommended"],enabledByDefault:!0};l&&(u.enabledByDefault=!1);var m=u;var p={editorOnly:!0,name:"Data category tweaks",description:'Provides tweaks for the Data ("Variables") block category.',credits:[{name:"GarboMuffin"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],settings:[{dynamic:!0,name:"Separate List Category",id:"separateListCategory",type:"boolean",default:!0},{dynamic:!0,name:"Separate Sprite-only Variables",id:"separateLocalVariables",type:"boolean",default:!1},{dynamic:!0,name:"Move data blocks above variables list",id:"moveReportersDown",type:"boolean",default:!1}],tags:["recommended"],enabledByDefault:!1};var y={editorOnly:!0,name:"Block palette category icons",description:"Adds icons inside the colored circles that identify block categories.",tags:["theme"],enabledByDefault:!1,dynamicDisable:!0,userstyles:[{url:"userstyle.css"}],credits:[{name:"--Explosion--",link:"https://scratch.mit.edu/users/--Explosion--/"},{name:"RedGuy7",link:"https://scratch.mit.edu/users/RedGuy7/"}]};var h={editorOnly:!0,noTranslations:!0,name:"Auto-hiding block palette",description:'Hides the block palette if not hovered. Click the lock icon to lock it in place temporarily. Alternatively, use "category click" mode.',credits:[{name:"TheColaber",link:"https://scratch.mit.edu/users/TheColaber/"},{name:"Maximouse",link:"https://scratch.mit.edu/users/Maximouse/"}],info:[{text:'"Palette area hover" mode only extends the viewing area. If you want to be able to drag blocks into that area without them getting trashed, use one of the other modes.',id:"hoverExplanation"}],dynamicDisable:!0,customCssVariables:[{name:"lockDisplay",value:{type:"map",source:{type:"settingValue",settingId:"toggle"},options:{hover:"flex",cathover:"flex",category:"none"}}},{name:"placeholderDisplay",value:{type:"map",source:{type:"settingValue",settingId:"toggle"},options:{hover:"block",cathover:"none",category:"none"}}}],userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],settings:[{dynamic:!0,name:"Toggle on...",id:"toggle",type:"select",potentialValues:[{id:"hover",name:"Palette area hover"},{id:"cathover",name:"Category hover"},{id:"category",name:"Category click"}],default:"cathover"},{dynamic:!0,name:"Animation speed",id:"speed",type:"select",potentialValues:[{id:"none",name:"Instant"},{id:"short",name:"Quick"},{id:"default",name:"Default"},{id:"long",name:"Slow"}],default:"default"}],tags:["recommended"]};const f={name:"Project video recorder",description:'Adds a "start recording" button to the editor menu bar that allows you to record the project\'s stage.',tags:["recommended"],userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],enabledByDefault:!1};c||(f.unsupported=!0);var b=f;var g={noTranslations:!0,name:"File drag and drop",description:'Lets you drag images and sounds from your file manager into the sprite pane or costume/sound list. You can also drag text files into lists or "ask and wait" question inputs.',credits:[{name:"Sheep_maker"}],userscripts:[{url:"userscript.js"}],settings:[{dynamic:!0,id:"use-hd-upload",name:"Use HD uploads",type:"boolean",default:!1,if:{addonEnabled:"better-img-uploads"}}],dynamicDisable:!0,tags:["recommended"],enabledByDefault:!0};var k={editorOnly:!0,name:"Debugger",description:'Adds a new "debugger" window to the editor. Allows for logging into the "Logs" tab of the debugger window using the "log", "warn" and "error" blocks.',credits:[{name:"Tacodiva",link:"https://scratch.mit.edu/users/Tacodude7729/"},{name:"GarboMuffin"},{name:"GrahamSH"},{name:"TheColaber"},{name:"retronbv"}],userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],settings:[{dynamic:!0,name:"Clear logs on green flag",id:"log_clear_greenflag",type:"boolean",default:!1},{dynamic:!0,name:"Log green flag clicks",id:"log_greenflag",type:"boolean",default:!1},{dynamic:!0,name:"Log clone creation",id:"log_clone_create",type:"boolean",default:!1},{dynamic:!0,name:"Log when max clones exceeded",id:"log_failed_clone_creation",type:"boolean",default:!0},{dynamic:!0,name:"Log broadcasts",id:"log_broadcasts",type:"boolean",default:!1}],tags:["beta"],enabledByDefault:!1};var v={name:"Pause button",description:"Adds a pause button next to the green flag.",credits:[{name:"Jeffalo"},{name:"GarboMuffin"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],tags:["recommended"],enabledByDefault:!0};var w={noTranslations:!0,name:"Muted project player mode",description:"Ctrl+Click the green flag to mute/unmute the project.",info:[{text:"On macOS, use the Cmd key instead of the Ctrl key.",id:"macOS"}],credits:[{name:"TheColaber",link:"https://scratch.mit.edu/users/TheColaber/"}],userscripts:[{url:"userscript.js"}],dynamicDisable:!0,enabledByDefault:!0,tags:["recommended"]};var D={noTranslations:!0,name:"Project volume slider",description:"Adds a volume slider next to the green flag controls.",credits:[{name:"samq64",link:"https://scratch.mit.edu/users/samq64/"},{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],userstyles:[{url:"userstyle.css"}],settings:[{name:"Default volume",id:"defVol",type:"integer",min:0,max:100,default:100}],dynamicDisable:!0,tags:["recommended","new"]};var S={editorOnly:!0,name:"Clone counter",description:"Adds a counter above the stage in the editor which shows the total amount of clones.",credits:[{name:"Jeffalo"},{name:"OregSam",link:"https://scratch.mit.edu/users/simiagain/"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],settings:[{dynamic:!0,id:"showicononly",name:"Show icon only",default:!1,type:"boolean"}],tags:["recommended"],enabledByDefault:!1};var x={editorOnly:!0,noTranslations:!0,name:"Mouse position",description:"Displays your mouse x/y position above the stage in the editor.",credits:[{name:"Jeffalo"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],tags:["recommended"],enabledByDefault:!1};var C={editorOnly:!0,name:"Hex color picker",description:"Adds hex code inputs to color pickers.",tags:["recommended"],credits:[{name:"Richie Bendall"},{name:"apple502j"}],userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],dynamicDisable:!0,enabledByDefault:!0};var T={editorOnly:!0,name:"Sprite deletion confirmation",description:"Asks if you're sure when deleting a sprite inside a project.",userscripts:[{url:"userscript.js"}],dynamicDisable:!0,tags:["recommended"],enabledByDefault:!1};var j={editorOnly:!0,name:"Block count",description:'Shows the total number of blocks in a project in the editor menu bar. Previously part of "sprite and script count".',tags:[],credits:[{name:"TheColaber",link:"https://scratch.mit.edu/users/TheColaber/"}],dynamicDisable:!0,userscripts:[{url:"blockcount.js"}]};var O={editorOnly:!0,name:"Onion skinning",description:"Shows transparent overlays of previous or next costumes when editing a costume. Controlled by buttons under the costume editor by the zoom buttons.",credits:[{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],settings:[{id:"default",name:"Enable by default",type:"boolean",default:!1},{id:"previous",name:"Default previous costumes",type:"integer",default:1,min:0,max:100},{id:"next",name:"Default next costumes",type:"integer",default:0,min:0,max:100},{id:"opacity",name:"Opacity (%)",type:"integer",min:0,max:100,default:25},{id:"opacityStep",name:"Opacity Step (%)",type:"integer",min:0,max:100,default:10},{id:"layering",name:"Default layering",type:"select",default:"front",potentialValues:[{id:"front",name:"Front"},{id:"behind",name:"Behind"}]},{id:"mode",name:"Default mode",type:"select",default:"merge",potentialValues:[{id:"merge",name:"Merge images"},{id:"tint",name:"Color tint"}]},{name:"Previous costume tint",id:"beforeTint",type:"color",default:"#FF0000"},{name:"Next costume tint",id:"afterTint",type:"color",default:"#0000FF"}],tags:["recommended"],dynamicDisable:!0,enabledByDefault:!0};var A={name:"Costume editor snapping",description:"Snap objects in the costume editor to bounding boxes and vector nodes.",tags:["new"],userscripts:[{url:"userscript.js"}],userstyles:[{url:"userstyle.css"}],settings:[{type:"boolean",id:"enable-default",name:"Enable by default",default:!0},{dynamic:!0,type:"color",id:"guide-color",name:"Snapping guide color",default:"#ff0000",allowTransparency:!0},{type:"boolean",id:"pageCenter",name:"Snap to page center",default:!0},{type:"boolean",id:"pageAxes",name:"Snap to page x and y axes",default:!0},{type:"boolean",id:"pageEdges",name:"Snap to page edges",default:!0},{type:"boolean",id:"pageCorners",name:"Snap to page corners",default:!1},{type:"boolean",id:"objectEdges",name:"Snap to object edges",default:!0},{type:"boolean",id:"objectCenters",name:"Snap to object centers",default:!0},{type:"boolean",id:"objectMidlines",name:"Snap to object midlines",default:!0},{type:"boolean",id:"objectCorners",name:"Snap to object corners",default:!1},{type:"boolean",id:"boxCenter",name:"Snap from selection box center",default:!0},{type:"boolean",id:"boxCorners",name:"Snap from selection box corners",default:!1},{type:"boolean",id:"boxEdgeMids",name:"Snap from selection box edge midpoints",default:!1},{type:"positive_integer",id:"threshold",name:"Snapping distance",default:10,min:4,max:100}],dynamicDisable:!0};var B={editorOnly:!0,noTranslations:!0,name:"Customizable default costume editor colors",description:"Changes the default colors and outline size used by the costume editor.",credits:[{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],settings:[{dynamic:!0,name:"Default fill color",id:"fill",type:"color",default:"#9966FF"},{dynamic:!0,name:"Default outline color",id:"stroke",type:"color",default:"#000000"},{dynamic:!0,name:"Default outline size",id:"strokeSize",type:"integer",min:0,max:100,default:4},{dynamic:!0,name:"Use previous color instead of resetting after switching tools",id:"persistence",type:"boolean",default:!0}],tags:[],dynamicDisable:!0,enabledByDefault:!1};const F={editorOnly:!0,noTranslations:!0,name:"Bitmap images copying",description:"Allows you to copy a bitmap image from the costume editor into the system clipboard, so that you can paste it in other websites or software.",info:[{type:"notice",text:'"Right click → copy" is not supported. You must press Ctrl+C while a bitmap image is selected.',id:"norightclick"}],userscripts:[{url:"userscript.js"}],dynamicDisable:!0,tags:[],enabledByDefault:!0};d||(F.unsupported=!0);var E=F;var M={editorOnly:!0,name:"2D color picker",description:"Replaces saturation and brightness sliders in the costume editor with a 2D color picker. Hold Shift while dragging the cursor to change the values on a single axis.",tags:[],credits:[{name:"Ucrash"}],userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],enabledByDefault:!1};var G={editorOnly:!0,name:"HD image uploads",description:'Adds a new button above the "upload costume" button that automatically converts uploaded bitmap images into SVG (vector) images to avoid losing quality.',tags:["beta"],info:[{type:"notice",text:"Avoid using the HD upload button if you plan to edit the image after uploading.",id:"notSuitableEdit"}],credits:[{name:"ErrorGamer2000",link:"https://scratch.mit.edu/users/ErrorGamer2000/"},{name:"GarboMuffin"},{name:"World_Languages"},{name:"SheepTester",link:"https://scratch.mit.edu/users/Sheep_maker/"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],settings:[{dynamic:!0,name:"Image sizing",id:"fitting",type:"select",potentialValues:[{id:"full",name:"Original size"},{id:"fill",name:"Stretch to fill stage"},{id:"fit",name:"Shrink to fit stage"}],default:"fit"}]};var _={editorOnly:!0,noTranslations:!0,enabledByDefault:!0,name:"Select stage colors in the costume editor",description:"Allows the costume editor's eye dropper to also pick colors from the stage.",credits:[{name:"GarboMuffin"}],tags:[],userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],dynamicDisable:!0};var z={editorOnly:!0,noTranslations:!0,name:"Customizable block shape",description:"Adjust the padding, corner radius, and notch height of blocks.",tags:["theme"],credits:[{name:"SheepTester",link:"https://scratch.mit.edu/users/Sheep_maker/"},{name:"lisa_wolfgang",link:"https://scratch.mit.edu/users/lisa_wolfgang/"},{name:"GarboMuffin",link:"https://scratch.mit.edu/users/GarboMuffin/"}],enabledByDefault:!1,dynamicDisable:!0,userscripts:[{url:"userscript.js"}],info:[{type:"notice",text:"Decreasing the padding size is only visible to you, so when your projects are viewed by other users, your scripts may overlap.",id:"paddingWarning"}],settings:[{dynamic:!0,name:"Padding size (50-200%)",id:"paddingSize",type:"integer",min:50,default:100,max:200},{dynamic:!0,name:"Corner size (0-300%)",id:"cornerSize",type:"integer",min:0,default:100,max:300},{dynamic:!0,name:"Notch height (0-150%)",id:"notchSize",type:"integer",min:0,default:100,max:150}],presets:[{name:"3.0 Blocks",id:"default3",description:"The regular appearance of Scratch 3.0 blocks",values:{paddingSize:100,cornerSize:100,notchSize:100}},{name:"2.0 Blocks",id:"default2",description:"An appearance similar to Scratch 2.0 blocks",values:{paddingSize:70,cornerSize:150,notchSize:75}},{name:"3.0 Flat",id:"flat3",description:"Scratch 3.0 blocks with notches and corners removed",values:{paddingSize:100,cornerSize:0,notchSize:0}},{name:"2.0 Flat",id:"flat2",description:"Scratch 2.0 blocks with notches and corners removed",values:{paddingSize:70,cornerSize:0,notchSize:0}}]};var P={editorOnly:!0,noTranslations:!0,name:"Alternating nested block colors",description:"Makes blocks of the same category alternate between lighter and darker shades when nested inside each other. This is also known as zebra striping.",credits:[{name:"CST1229",link:"https://scratch.mit.edu/users/CST1229/"},{name:"GarboMuffin"},{name:"TheColaber",link:"https://scratch.mit.edu/users/thecolaber"}],tags:[],userscripts:[{url:"userscript.js"}],userstyles:[{url:"userstyle.css"}],settings:[{dynamic:!0,name:"Shade",id:"shade",type:"select",potentialValues:[{name:"Lighter",id:"lighter"},{name:"Darker",id:"darker"}],default:"lighter"},{dynamic:!0,name:"Intensity (0-100%)",id:"intensity",type:"integer",min:0,default:20,max:100}],customCssVariables:[{name:"shadeNumber",value:{type:"map",source:{type:"settingValue",settingId:"shade"},options:{lighter:"1",darker:"-1"}}}],dynamicDisable:!0};var V={editorOnly:!0,noTranslations:!0,name:"Customizable block colors",description:"Edit block colors for each category in the editor.",credits:[{name:"NitroCipher/ZenithRogue"},{name:"TheColaber",link:"https://scratch.mit.edu/users/TheColaber/"}],customCssVariables:[{name:"inputColor-text",value:{type:"alphaThreshold",source:{type:"settingValue",settingId:"input-color"},opaque:{type:"textColor",source:{type:"settingValue",settingId:"input-color"}},transparent:{type:"map",source:{type:"settingValue",settingId:"text"},options:{white:"#ffffff",black:"#575e75",colorOnWhite:"#575e75",colorOnBlack:"#ffffff"}}}},{name:"inputColor-blackText",value:{type:"alphaThreshold",source:{type:"settingValue",settingId:"input-color"},opaque:{type:"textColor",black:"#000000",source:{type:"settingValue",settingId:"input-color"}},transparent:{type:"map",source:{type:"settingValue",settingId:"text"},options:{white:"#ffffff",black:"#000000",colorOnWhite:"#000000",colorOnBlack:"#ffffff"}}}},{name:"commentText",value:{type:"textColor",source:{type:"settingValue",settingId:"comment-color"}}},{name:"commentTextTransparent",value:{type:"textColor",black:"rgba(0, 0, 0, 0.50)",white:"rgba(255, 255, 255, 0.50)",source:{type:"settingValue",settingId:"comment-color"}}},{name:"commentBorder",value:{type:"multiply",source:{type:"settingValue",settingId:"comment-color"},r:.7,g:.7,b:.7}}],dynamicDisable:!0,userscripts:[{url:"theme3.js"}],userstyles:[{url:"theme3.css"},{url:"black_text.css",if:{settings:{text:"black"}}},{url:"color_on_white.css",if:{settings:{text:"colorOnWhite"}}},{url:"color_on_black.css",if:{settings:{text:"colorOnBlack"}}}],settings:[{dynamic:!0,name:"motion",id:"motion-color",type:"color",default:"#4C97FF",allowTransparency:!0},{dynamic:!0,name:"looks",id:"looks-color",type:"color",default:"#9966FF",allowTransparency:!0},{dynamic:!0,name:"sounds",id:"sounds-color",type:"color",default:"#CF63CF",allowTransparency:!0},{dynamic:!0,name:"events",id:"events-color",type:"color",default:"#FFBF00",allowTransparency:!0},{dynamic:!0,name:"control",id:"control-color",type:"color",default:"#FFAB19",allowTransparency:!0},{dynamic:!0,name:"sensing",id:"sensing-color",type:"color",default:"#5CB1D6",allowTransparency:!0},{dynamic:!0,name:"operators",id:"operators-color",type:"color",default:"#59C059",allowTransparency:!0},{dynamic:!0,name:"variables",id:"data-color",type:"color",default:"#FF8C1A",allowTransparency:!0},{dynamic:!0,name:"lists",id:"data-lists-color",type:"color",default:"#FF661A",allowTransparency:!0},{dynamic:!0,name:"custom",id:"custom-color",type:"color",default:"#FF6680",allowTransparency:!0},{dynamic:!0,name:"extensions",id:"Pen-color",type:"color",default:"#0FBD8C",allowTransparency:!0},{dynamic:!0,name:"TurboWarp",id:"tw-color",type:"color",default:"#ff4c4c",allowTransparency:!0},{dynamic:!0,name:"Addon blocks",id:"sa-color",type:"color",default:"#29BEB8",allowTransparency:!0,if:{addonEnabled:["debugger"]}},{dynamic:!0,name:"Block inputs",id:"input-color",type:"color",default:"#FFFFFF",allowTransparency:!0},{dynamic:!0,name:"Comments",id:"comment-color",type:"color",default:"#FEF49C"},{dynamic:!0,name:"Text color",id:"text",type:"select",default:"white",potentialValues:[{id:"white",name:"White"},{id:"black",name:"Black"},{id:"colorOnWhite",name:"Colored on white background"},{id:"colorOnBlack",name:"Colored on black background"}]}],tags:["theme"],enabledByDefault:!1,presets:[{name:"3.0 Tweaks",id:"tweaks",description:"Events, Control, and Custom blocks with 2.0 inspired colors",values:{"motion-color":"#4C97FF","looks-color":"#9966FF","sounds-color":"#CF63CF","events-color":"#DE9E2E","control-color":"#FFBF00","sensing-color":"#5CB1D6","operators-color":"#59C059","data-color":"#FF8C1A","data-lists-color":"#FF661A","custom-color":"#5f49d8","Pen-color":"#0FBD8C","sa-color":"#29BEB8","comment-color":"#FEF49C","input-color":"#FFFFFF",text:"white"}},{name:"2.0 Colors",id:"original",description:"The original block colors from Scratch 2.0",values:{"motion-color":"#4a6cd4","looks-color":"#8a55d7","sounds-color":"#bb42c3","events-color":"#c88330","control-color":"#e1a91a","sensing-color":"#2ca5e2","operators-color":"#5cb712","data-color":"#ee7d16","data-lists-color":"#cc5b22","custom-color":"#632d99","Pen-color":"#0e9a6c","sa-color":"#29beb8","comment-color":"#FFFFD2","input-color":"#ffffff",text:"white"}},{name:"Dark",id:"dark",description:"Dark versions of the default colors",values:{"motion-color":"#004099","looks-color":"#220066","sounds-color":"#752475","events-color":"#997300","control-color":"#664100","sensing-color":"#1f5f7a","operators-color":"#235c23","data-color":"#b35900","data-lists-color":"#993300","custom-color":"#99004d","Pen-color":"#064734","tw-color":"#660000","sa-color":"#166966","comment-color":"#423f24","input-color":"#202020",text:"white"}},{name:"Black",id:"black",description:"Makes block backgrounds black",values:{"motion-color":"#4C97FF","looks-color":"#9966FF","sounds-color":"#CF63CF","events-color":"#FFBF00","control-color":"#FFAB19","sensing-color":"#5CB1D6","operators-color":"#59C059","data-color":"#FF8C1A","data-lists-color":"#FF661A","custom-color":"#FF6680","Pen-color":"#0FBD8C","sa-color":"#29BEB8","comment-color":"#FEF49C","input-color":"#202020",text:"colorOnBlack"}}]};var I={name:"Customizable block text style",description:"Changes the thickness of the text on blocks and optionally adds a text shadow.",tags:[],credits:[{name:"Secret-chest"},{name:"_nix",link:"https://scratch.mit.edu/users/_nix"}],userstyles:[{url:"text-bold.css",if:{settings:{bold:!0}}},{url:"text-shadow.css",if:{settings:{shadow:!0}}}],settings:[{dynamic:!0,name:"Bold text",id:"bold",type:"boolean",default:!1},{dynamic:!0,name:"Shadow under text",id:"shadow",type:"boolean",default:!1}],dynamicDisable:!0,enabledByDefault:!1};var R={editorOnly:!0,noTranslations:!0,name:"Colored context menus",description:"Makes block right click context menus colorful.",credits:[{name:"GarboMuffin"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],userstyles:[{url:"userscript.css"}],tags:["theme"],enabledByDefault:!1};var L={noTranslations:!0,name:"Display stage on left side",description:"Moves the stage to the left side of the editor, like in Scratch 2.0.",info:[{id:"reverseOrder",text:'To change the position of buttons above the stage, use the "reverse order of project controls" addon.'}],credits:[{name:"NitroCipher/ZenithRogue"}],userscripts:[{url:"fix-share-the-love.js"}],dynamicDisable:!0,userstyles:[{url:"stageleft.css"}],tags:["theme"],enabledByDefault:!1};var H={name:"Reverse order of project controls",description:"Moves the green flag and stop buttons to the right and the full screen button to the left, like in Scratch 2.0.",tags:["theme"],dynamicDisable:!0,userstyles:[{url:"userstyle.css"}]};var U={editorOnly:!0,name:"Variable manager",description:'Adds a tab next to "sounds" in the editor for easily updating variables and lists.',credits:[{name:"Jeffalo"},{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],dynamicDisable:!0,tags:[],enabledByDefault:!1};var W={editorOnly:!0,name:"Search sprites by name",description:"Adds a search box to the sprite pane to search for sprites by name.",credits:[{name:"BarelySmooth",link:"https://scratch.mit.edu/users/BarelySmooth/"},{name:"GarboMuffin"}],userstyles:[{url:"search-bar.css"}],userscripts:[{url:"userscript.js"}],dynamicDisable:!0,tags:[],enabledByDefault:!1};var N={editorOnly:!0,name:"Collapsing sprite properties",description:"Hides the sprite properties panel by default, like in Scratch 2.0. Use the info button on the currently selected sprite or double-click a sprite to show the properties panel again. To re-hide it, use the collapse button in the properties panel or double-click a sprite.",tags:["recommended","new"],credits:[{name:"lisa_wolfgang",link:"https://scratch.mit.edu/users/lisa_wolfgang/"}],userstyles:[{url:"userstyle.css"}],userscripts:[{url:"userscript.js"}],customCssVariables:[{name:"transitionDuration",value:{type:"map",source:{type:"settingValue",settingId:"transitionDuration"},options:{none:"0s",short:"0.15s",default:"0.25s",long:"0.5s"}}}],settings:[{dynamic:!0,name:"Automatically collapse when mouse leaves sprite panel",id:"autoCollapse",type:"boolean",default:!1},{dynamic:!0,name:"Collapse panel by default",id:"hideByDefault",type:"boolean",default:!0,if:{settings:{autoCollapse:!1}}},{dynamic:!0,name:"Animation speed",id:"transitionDuration",type:"select",potentialValues:[{id:"none",name:"Instant"},{id:"short",name:"Quick"},{id:"default",name:"Default"},{id:"long",name:"Slow"}],default:"default"}],dynamicDisable:!0,enabledByDefault:!1};var J={name:"Gamepad support",description:"Interact with projects using a USB or Bluetooth controller/gamepad.",credits:[{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"},{url:"gamepadlib.css"}],settings:[{dynamic:!0,name:"Hide settings button when no controllers detected",type:"boolean",default:!1,id:"hide"}],tags:[],enabledByDefault:!1,dynamicDisable:!0};var q={editorOnly:!0,noTranslations:!0,name:"Editor sound effects",description:"Plays sound effects when you connect or delete blocks.",credits:[{name:"GarboMuffin"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],tags:[],enabledByDefault:!1};var Z={editorOnly:!0,name:"Sprite folders",description:'Adds folders to the sprite pane, as well as costume and sound lists. To create a folder, right click any sprite and click "create folder". Click a folder to open or close it. Right click a sprite to see what folders you can move it to, or alternatively drag and drop it into an open folder. This feature works by adding "[folderName]//" at the beginning of the names for your sprites.',info:[{type:"notice",text:"Users with this feature enabled will be able to see the folders in your project. Anyone else will see sprite lists normally (no folders).",id:"notice-folders-are-public"}],credits:[{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],tags:["recommended"],enabledByDefault:!0};var K={editorOnly:!0,name:"Block switching",description:"Right click on a block to switch it to a related block.",credits:[{name:"GarboMuffin"},{name:"pufferfish101007",link:"https://scratch.mit.edu/users/pufferfish101007/"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],tags:["recommended"],settings:[{dynamic:!0,name:"Motion blocks",id:"motion",type:"boolean",default:!0},{dynamic:!0,name:"Looks blocks",id:"looks",type:"boolean",default:!0},{dynamic:!0,name:"Sound blocks",id:"sound",type:"boolean",default:!0},{dynamic:!0,name:"Event blocks",id:"event",type:"boolean",default:!0},{dynamic:!0,name:"Control blocks",id:"control",type:"boolean",default:!0},{dynamic:!0,name:"Operator blocks",id:"operator",type:"boolean",default:!0},{dynamic:!0,name:"Sensing blocks",id:"sensing",type:"boolean",default:!0},{dynamic:!0,name:"Data blocks",id:"data",type:"boolean",default:!0},{dynamic:!0,name:"Extension blocks",id:"extension",type:"boolean",default:!0},{dynamic:!0,name:"Addon blocks",id:"sa",type:"boolean",default:!0,if:{addonEnabled:["debugger"]}},{dynamic:!0,name:"Custom block arguments",id:"customargs",type:"boolean",default:!0},{dynamic:!0,name:"Shown custom block arguments options",id:"customargsmode",type:"select",default:"defOnly",potentialValues:[{id:"defOnly",name:"Arguments in own custom block"},{id:"all",name:"Arguments in all custom blocks in sprite"}],if:{settings:{customargs:!0}}},{dynamic:!0,name:"Show option to change block to self",id:"noop",type:"boolean",default:!0}],enabledByDefault:!0};var Y={editorOnly:!0,noTranslations:!0,name:"Automatically add extensions",description:"Auto-shows music, pen, and other extensions in the block category menu in the editor.",userscripts:[{url:"userscript.js"}],settings:[{name:"Music",id:"music",type:"boolean",default:!0},{name:"Pen",id:"pen",type:"boolean",default:!0},{name:"Text to Speech",id:"text2speech",type:"boolean",default:!1},{name:"Translate",id:"translate",type:"boolean",default:!1}],dynamicDisable:!0,tags:[]};var Q={editorOnly:!0,noTranslations:!0,name:"Customizable code area zoom",description:"Choose custom settings for the minimum, maximum, speed, and start size of the zoom of scripts in the code area, and autohide the controls.",tags:[],credits:[{name:"ErrorGamer2000",link:"https://scratch.mit.edu/users/ErrorGamer2000/"}],enabledByDefault:!1,userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],settings:[{dynamic:!0,name:"Maximum Zoom (100-500%)",id:"maxZoom",type:"integer",min:100,default:300,max:500},{dynamic:!0,name:"Minimum Zoom (1-100%)",id:"minZoom",type:"integer",min:1,default:30,max:100},{dynamic:!0,name:"Start Zoom (50-500%)",id:"startZoom",type:"integer",min:50,default:68,max:500},{dynamic:!0,name:"Zoom Speed (50-200%)",id:"zoomSpeed",type:"integer",min:50,default:100,max:200},{name:"Autohide Zoom Controls",id:"autohide",type:"boolean",default:!1},{dynamic:!0,name:"Autohide Animation Speed",id:"speed",type:"select",potentialValues:[{id:"none",name:"Instant"},{id:"short",name:"Quick"},{id:"default",name:"Default"},{id:"long",name:"Slow"}],default:"default",if:{settings:{autohide:!0}}}]};var X={editorOnly:!0,noTranslations:!0,name:"Customizable new sprite position",description:"Change the default x/y position of new sprites.",credits:[{name:"pufferfish101007",link:"https://scratch.mit.edu/users/pufferfish101007/"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],settings:[{dynamic:!0,id:"x",name:"X position",type:"integer",default:0,min:-240,max:240},{dynamic:!0,id:"y",name:"Y position",type:"integer",default:0,min:-180,max:180},{dynamic:!0,id:"library",name:"Randomize the position of library sprites",type:"boolean",default:!1},{dynamic:!0,id:"duplicate",name:"Behavior when duplicating sprites",type:"select",default:"randomize",potentialValues:[{id:"custom",name:"Send to specified x/y values"},{id:"keep",name:"Keep the same as the original sprite"},{id:"randomize",name:"Randomize"}]}],tags:[],enabledByDefault:!1};var $={editorOnly:!0,name:"Save blocks as image",description:"Right click the code area to export blocks as SVG/PNG images.",tags:[],credits:[{name:"summerscar"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],enabledByDefault:!1};var ee={noTranslations:!0,name:"Remove curved stage border",description:"Removes the curved border around the stage, allowing you to see the corners.",tags:["theme"],credits:[{name:"Tacodiva",link:"https://scratch.mit.edu/users/Tacodude7729/"}],enabledByDefault:!1,dynamicDisable:!0,userstyles:[{url:"remove-borders.css"}]};var te={editorOnly:!0,noTranslations:!0,name:"Block transparency",description:"Adjust the transparency for blocks in the editor, with separate options for orphaned blocks (those without a hat block at the top) and blocks that are being dragged.",tags:[],dynamicDisable:!0,credits:[{name:"ErrorGamer2000",link:"https://scratch.mit.edu/users/ErrorGamer2000/"},{name:"GarboMuffin"}],settings:[{dynamic:!0,name:"Block transparency (%)",id:"block",type:"integer",min:0,max:100,default:0},{dynamic:!0,name:"Orphaned transparency (%)",id:"orphan",type:"integer",min:0,max:100,default:25},{dynamic:!0,name:"Dragged transparency (%)",id:"dragged",type:"integer",min:0,max:100,default:25}],userstyles:[{url:"userstyle.css"}]};var se={editorOnly:!0,noTranslations:!0,name:"Paint costume by default",description:'Changes the default action of "Choose a Sprite/Costume/Backdrop/Sound" buttons, which open the library by default.',credits:[{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],settings:[{dynamic:!0,id:"sprite",name:"Add sprite",type:"select",potentialValues:[{id:"library",name:"Library"},{id:"paint",name:"Paint"},{id:"surprise",name:"Surprise"},{id:"upload",name:"Upload"}],default:"paint"},{dynamic:!0,id:"costume",name:"Add costume",type:"select",potentialValues:[{id:"library",name:"Library"},{id:"paint",name:"Paint"},{id:"surprise",name:"Surprise"},{id:"upload",name:"Upload"}],default:"paint"},{dynamic:!0,id:"backdrop",name:"Add backdrop",type:"select",potentialValues:[{id:"library",name:"Library"},{id:"paint",name:"Paint"},{id:"surprise",name:"Surprise"},{id:"upload",name:"Upload"}],default:"paint"},{dynamic:!0,id:"sound",name:"Add sound",type:"select",potentialValues:[{id:"library",name:"Library"},{id:"record",name:"Record"},{id:"surprise",name:"Surprise"},{id:"upload",name:"Upload"}],default:"library"}],dynamicDisable:!0,tags:["recommended"],enabledByDefault:!1};var ae={editorOnly:!0,noTranslations:!0,name:"Grab single block with Ctrl key",description:"Adds the ability to drag a single block out of the middle of a script (instead of the entire stack attached below it) while holding the Ctrl key.",info:[{text:"On macOS, use the Cmd key instead of the Ctrl key.",id:"macContextDisabled"},{text:'If "flip controls" is enabled, grabbing blocks individually will be the default behavior. Hold Ctrl to drag the entire stack.',id:"flipControls"}],credits:[{name:"lisa_wolfgang",link:"https://scratch.mit.edu/users/lisa_wolfgang/"},{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],settings:[{dynamic:!0,name:"Flip controls",id:"invertDrag",type:"boolean",default:!1}],tags:[],dynamicDisable:!0,enabledByDefault:!0};var oe={editorOnly:!0,noTranslations:!0,name:"Hide new variables",description:"Do not automatically create monitors for newly created variables or lists.",credits:[{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],tags:[],dynamicDisable:!0};var ne={editorOnly:!0,name:"Extra key options",description:'Adds more keys to the "key () pressed?" and "when () key pressed" block dropdowns, such as enter, dot, comma, and more. These keys will work even for users who do not have this addon.',tags:["beta"],credits:[{name:"Tacodiva",link:"https://scratch.mit.edu/users/Tacodude7729/"}],info:[{type:"notice",text:'The "experimental keys" include equals, slash, semicolon and more. They may not work on all operating systems or keyboard layouts.',id:"experimentalKeysWarn"},{type:"notice",text:'The "Shift keys" include keys which typically require the Shift key and a number key, like hashtag, exclamation mark and more. These keys only work with the "when () key pressed" block and do not work on all operating systems or keyboard layouts.',id:"shiftKeysWarn"},{type:"warning",text:'The "TurboWarp keys" will only work in TurboWarp, not in Scratch.',id:"twKeysWarn"}],settings:[{dynamic:!0,name:"Show experimental keys",id:"experimentalKeys",type:"boolean",default:!1},{dynamic:!0,name:"Show Shift keys",id:"shiftKeys",type:"boolean",default:!1},{dynamic:!0,name:"Show TurboWarp keys",id:"twKeys",type:"boolean",default:!1}],userscripts:[{url:"userscript.js"}],dynamicDisable:!0};var ie={name:"Hide delete button",description:"Hides delete button (trash can icon) from sprites, costumes and sounds. They can still be deleted using the right click context menu.",tags:[],dynamicDisable:!0,settings:[{dynamic:!0,name:"Sprites",id:"sprites",type:"boolean",default:!0},{dynamic:!0,name:"Costumes and backdrops",id:"costumes",type:"boolean",default:!0},{dynamic:!0,name:"Sounds",id:"sounds",type:"boolean",default:!0}],userstyles:[{url:"sprites.css",if:{settings:{sprites:!0}}},{url:"costumes.css",if:{settings:{costumes:!0}}},{url:"sounds.css",if:{settings:{sounds:!0}}}]};var re={editorOnly:!0,noTranslations:!0,name:"Do not automatically space overlapping scripts",description:"Allows scripts to be moved and modified without causing overlapping scripts to move around.",credits:[{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],dynamicDisable:!0,tags:[],enabledByDefault:!1};var le={editorOnly:!0,noTranslations:!0,name:"Non-draggable sprites in editor",description:"Removes the ability to drag sprites around on the stage in the editor, except those explicitly set as draggable. Hold Shift while dragging a sprite to move it normally.",credits:[{name:"Chrome_Cat",link:"https://scratch.mit.edu/users/Chrome_Cat/"},{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],tags:[],enabledByDefault:!1,dynamicDisable:!0};var de={enabledByDefault:!0,editorOnly:!0,name:"Move costume to top or bottom",description:"Adds options to the right click context menu for costumes and sounds to move them to the top or the bottom of the list.",info:[{text:'This addon was previously part of the "developer tools" addon but has moved here.',id:"developer-tools"}],tags:[],userscripts:[{url:"userscript.js"}],dynamicDisable:!0};var ce={editorOnly:!0,noTranslations:!0,name:"Do not shift pasted items",description:"Paste copied items at their original position instead of shifted slightly in the costume editor.",info:[{text:"This behavior can also be achieved without this addon by Alt+Clicking the item.",id:"vanilla"}],credits:[{name:"GarboMuffin"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],tags:[],enabledByDefault:!1};var ue={editorOnly:!0,noTranslations:!0,name:"Duplicate script with Alt key",description:"Quickly duplicate a script by dragging it while holding the Alt key. Hold Ctrl as well to only duplicate a single block instead of the entire stack attached below it.",credits:[{name:"GarboMuffin"}],info:[{text:"On macOS, use the Option key instead of the Alt key and Command key instead of the Control key.",id:"mac"}],userscripts:[{url:"userscript.js"}],dynamicDisable:!0,tags:[],enabledByDefault:!0};var me={editorOnly:!0,enabledByDefault:!0,name:"Rename broadcasts",description:"Adds an option to rename broadcast messages in the broadcast blocks' dropdowns.",credits:[{name:"TheColaber",link:"https://scratch.mit.edu/users/TheColaber"},{name:"GarboMuffin"}],tags:["new"],userscripts:[{url:"userscript.js"}],dynamicDisable:!0};var pe={editorOnly:!0,name:'Switch variables between "For all sprites" and "For this sprite only"',description:'Adds more options when renaming an existing variable or list: allows changing between "For all sprites" and "For this sprite only" and whether variables are stored in the cloud. Also adds a new option when right clicking a variable/list to quickly change its scope.',credits:[{name:"GarboMuffin"}],userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],tags:[],dynamicDisable:!0,enabledByDefault:!1};var ye={editorOnly:!0,noTranslations:!0,name:"Editor comment previews",description:"Allows you to preview the contents of comments by hovering over collapsed comments and blocks. You can use this to view comments that are off-screen, identify a loop block from the bottom by its preview, fit many long comments in a small space, and more.",tags:[],credits:[{name:"lisa_wolfgang",link:"https://scratch.mit.edu/users/lisa_wolfgang/"},{name:"GarboMuffin"}],userstyles:[{url:"userstyle.css"}],userscripts:[{url:"userscript.js"}],settings:[{dynamic:!0,name:"Hover collapsed comments to preview",id:"hover-view",type:"boolean",default:!0},{dynamic:!0,name:"Hover blocks to preview attached comments",id:"hover-view-block",type:"boolean",default:!0},{dynamic:!0,name:"Hover custom blocks to preview definition comments",id:"hover-view-procedure",type:"boolean",default:!0},{dynamic:!0,name:"Delay duration",id:"delay",type:"select",potentialValues:[{name:"None",id:"none"},{name:"Short",id:"short"},{name:"Long",id:"long"}],default:"short"},{dynamic:!0,name:"Follow mouse",id:"follow-mouse",type:"boolean",default:!0},{dynamic:!0,name:"Reduce transparency",id:"reduce-transparency",type:"boolean",default:!1},{dynamic:!0,name:"Reduce animation",id:"reduce-animation",type:"boolean",default:!1}],dynamicDisable:!0,enabledByDefault:!0};var he={editorOnly:!0,noTranslations:!0,name:"Two-column category menu",description:"Splits the block category menu into two columns and moves it to the top of the block palette, like in Scratch 2.0.",credits:[{name:"TheColaber",link:"https://scratch.mit.edu/TheColaber"}],tags:[],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}]};var fe={editorOnly:!0,noTranslations:!0,name:"Always show number pad",description:"Show Scratch's number pad input when editing number fields on all devices, instead of only touchscreen devices.",credits:[{name:"GarboMuffin"}],info:[{text:'A number pad will show when editing number inputs from certain blocks, such as "set x to".',id:"explanation"}],tags:["new"],userscripts:[{url:"userscript.js"}],dynamicDisable:!0};var be={editorOnly:!0,noTranslations:!0,name:"Snap scripts to grid",description:"Drag a script to automatically align its position to the code area dots.",tags:[],credits:[{name:"CST1229",link:"https://scratch.mit.edu/users/CST1229/"},{name:"TheColaber",link:"https://scratch.mit.edu/users/TheColaber/"},{name:"lisa_wolfgang",link:"https://scratch.mit.edu/users/lisa_wolfgang/"}],userscripts:[{url:"userscript.js"}],settings:[{dynamic:!0,name:"Grid size (px)",id:"grid",type:"integer",min:1,default:40}],presets:[{name:"Whole-block",id:"whole-block",values:{grid:48}},{name:"Half-block",id:"half-block",values:{grid:24}},{name:"Default",id:"default",values:{grid:40}}],dynamicDisable:!0,enabledByDefault:!1};var ge={name:"Enhanced full screen",description:"Fixes some undesired effects in the project player's full screen mode, opens it in your browser's full screen mode, and hides the green flag toolbar.",credits:[{name:"lisa_wolfgang",link:"https://scratch.mit.edu/users/lisa_wolfgang/"}],info:[{type:"notice",text:"If you choose to hide the toolbar, remember that you can use the Esc key to exit the project player's full screen mode.",id:"hideToolbarNotice"}],settings:[{dynamic:!0,name:"Open full screen project player in full screen browser mode",id:"browserFullscreen",type:"boolean",default:!0},{dynamic:!0,name:"Hide toolbar in full screen",id:"hideToolbar",type:"boolean",default:!1}],dynamicDisable:!0,userstyles:[{url:"hideOverflow.css"},{url:"removeBorder.css"},{url:"resizeWindow.css",if:{settings:{hideToolbar:!1}}},{url:"resizeWindow_noToolbar.css",if:{settings:{hideToolbar:!0}}},{url:"hideToolbar.css",if:{settings:{hideToolbar:!0}}}],userscripts:[{url:"userscript.js"}],tags:["beta"],enabledByDefault:!1};var ke={editorOnly:!0,name:"Hide stage and sprite pane",description:'Adds a button next to the "small stage" and "large stage" buttons that hides the stage and the sprite pane, making the code area much larger.',credits:[{name:"Maximouse",link:"https://scratch.mit.edu/users/Maximouse/"}],dynamicDisable:!0,userscripts:[{url:"userscript.js"}],userstyles:[{url:"style.css"}],tags:[]};var ve={editorOnly:!0,noTranslations:!0,name:"Keep block comment connections straight",description:"Forces block comments to always be connected to their source block by a horizontal straight line, not at an angle.",tags:[],credits:[{name:"lisa_wolfgang",link:"https://scratch.mit.edu/users/lisa_wolfgang/"}],userscripts:[{url:"userscript.js"}],dynamicDisable:!0,enabledByDefault:!1};var we={noTranslations:!0,name:"Hide backpack",description:"Removes the backpack feature from the editor.",userscripts:[{url:"remove-backpack.js"}],userstyles:[{url:"remove-backpack.css"}],tags:["danger"],dynamicDisable:!0,enabledByDefault:!1};var De={noTranslations:!0,name:"Remove feedback button",description:"Removes the feedback button from the menu bar.",userstyles:[{url:"remove-feedback.css"}],tags:["danger"],dynamicDisable:!0,enabledByDefault:!1},Se=s(58);const xe={noTranslations:!0,name:"Disable cloud variables",description:"Disable cloud variables by default. You can still re-enable them using the Edit > Enable cloud variables menu.",userscripts:[{url:"userscript.js"}],tags:["danger"],enabledByDefault:!1};Object(Se.b)()&&(xe.unsupported=!0);var Ce=xe;var Te={editorOnly:!0,noTranslations:!0,name:"Disable compiler in editor",description:'Turns off the compiler by default in the script editor. It can still be manually enabled through the "Advanced" menu bar button.',userscripts:[{url:"userscript.js"}],tags:["danger"],enabledByDefault:!1};var je={editorOnly:!0,noTranslations:!0,noCompiler:!0,name:"Running block border",description:"Adds a colored highlight to the blocks that are currently being executed in a project.",dynamicDisable:!0,userscripts:[{url:"userscript.js"}],settings:[{dynamic:!0,name:"Highlight color",id:"highlight-color",type:"color",default:"#0000ff"}],tags:[],enabledByDefault:!1};t.a={"cat-blocks":a,"editor-devtools":o,"find-bar":n,"middle-click-popup":i,"jump-to-def":r,"editor-searchable-dropdowns":m,"data-category-tweaks-v2":p,"block-palette-icons":y,"hide-flyout":h,mediarecorder:b,"drag-drop":g,debugger:k,pause:v,"mute-project":w,"vol-slider":D,clones:S,"mouse-pos":x,"color-picker":C,"remove-sprite-confirm":T,"block-count":j,"onion-skinning":O,"paint-snap":A,"default-costume-editor-color":B,"bitmap-copy":E,"2d-color-picker":M,"better-img-uploads":G,"pick-colors-from-stage":_,"custom-block-shape":z,"zebra-striping":P,"editor-theme3":V,"custom-block-text":I,"editor-colored-context-menus":R,"editor-stage-left":L,"editor-buttons-reverse-order":H,"variable-manager":U,"search-sprites":W,"sprite-properties":N,gamepad:J,"editor-sounds":q,folders:Z,"block-switching":K,"load-extensions":Y,"custom-zoom":Q,"initialise-sprite-position":X,blocks2image:$,"remove-curved-stage-border":ee,"transparent-orphans":te,"paint-by-default":se,"block-cherry-picking":ae,"hide-new-variables":oe,"editor-extra-keys":ne,"hide-delete-button":ie,"no-script-bumping":re,"disable-stage-drag-select":le,"move-to-top-bottom":de,"disable-paste-offset":ce,"block-duplicate":ue,"rename-broadcasts":me,"swap-local-global":pe,"editor-comment-previews":ye,columns:he,"number-pad":fe,"script-snap":be,fullscreen:ge,"hide-stage":ke,"tw-straighten-comments":ve,"tw-remove-backpack":we,"tw-remove-feedback":De,"tw-disable-cloud-variables":Ce,"tw-disable-compiler":Te,"editor-stepping":je}},198:function(e){e.exports=JSON.parse('{"commit":"94039c6"}')},468:function(e,t,s){"use strict";t.a=class{constructor(){this._events={}}addEventListener(e,t){this._events[e]||(this._events[e]=[]),this._events[e].push(t)}removeEventListener(e,t){const s=this._events[e];s&&(this._events[e]=s.filter(e=>e!==t))}dispatchEvent(e){const t=this._events[e.type];if(t)for(const s of t)s(e)}}},53:function(e,t,s){"use strict";var a=s(128),o=s(198),n=s(468);function i(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,a)}return s}function r(e){for(var t=1;t{const t=e._;if(4===t||!t)return e;if(t<2){const t=e["tw-project-info"];t&&t.enabled&&(e["block-count"]={enabled:!0});const s=e["tw-interface-customization"];s&&s.enabled&&(s.removeBackpack&&(e["tw-remove-backpack"]={enabled:!0}),s.removeFeedback&&(e["tw-remove-feedback"]={enabled:!0}))}if(t<3){const t=e["hide-flyout"];t&&t.enabled&&void 0===t.toggled&&(t.toggle="hover")}if(t<4){const t=e["editor-devtools"];t&&!1===t.enabled&&(e["find-bar"]={enabled:!1},e["middle-click-popup"]={enabled:!1})}return e})(s);for(const t of Object.keys(s))if(e.hasOwnProperty(t)){const a=s[t];a&&"object"==typeof a&&(e[t]=a)}}}}catch(e){}this.store=e}saveToLocalStorage(){if(!this.remote)try{const e={_:4};for(const t of Object.keys(a.a)){const s=this.getAddonStorage(t);Object.keys(s).length>0&&(e[t]=s)}localStorage.setItem("tw:addons",JSON.stringify(e))}catch(e){}}getAddonStorage(e){if(this.store[e])return this.store[e];throw new Error("Unknown addon store: ".concat(e))}getAddonManifest(e){if(a.a[e])return a.a[e];throw new Error("Unknown addon: ".concat(e))}getAddonSettingObject(e,t){if(!e.settings)return null;for(const s of e.settings)if(s.id===t)return s;return null}getAddonEnabled(e){const t=this.getAddonManifest(e);if(t.unsupported)return!1;const s=this.getAddonStorage(e);return s.hasOwnProperty("enabled")?s.enabled:!!t.enabledByDefault}getAddonSetting(e,t){const s=this.getAddonStorage(e),a=this.getAddonManifest(e),o=this.getAddonSettingObject(a,t);if(!o)throw new Error("Unknown setting: ".concat(t));return s.hasOwnProperty(t)?s[t]:o.default}getDefaultSettings(e){const t=this.getAddonManifest(e),s={};for(const{id:e,default:a}of t.settings)s[e]=a;return s}setAddonEnabled(e,t){const s=this.getAddonStorage(e),a=this.getAddonManifest(e),o=this.getAddonEnabled(e);if(null===t)t=!!a.enabledByDefault,delete s.enabled;else{if("boolean"!=typeof t)throw new Error("Enabled value is invalid.");s.enabled=t}if(this.saveToLocalStorage(),t!==o){const s=!!t||!!a.dynamicDisable;this.dispatchEvent(new CustomEvent("setting-changed",{detail:{addonId:e,settingId:"enabled",reloadRequired:!s,value:t}}))}}setAddonSetting(e,t,s){const a=this.getAddonStorage(e),o=this.getAddonManifest(e),n=this.getAddonSettingObject(o,t),i=this.getAddonSetting(e,t);if(null===s)s=n.default,delete a[t];else{if("boolean"===n.type){if("boolean"!=typeof s)throw new Error("Setting value is invalid.")}else if("integer"===n.type){if("number"!=typeof s)throw new Error("Setting value is invalid.")}else if("color"===n.type){if("string"!=typeof s)throw new Error("Color value is not a string.");if(9===s.length&&(s=s.substring(0,7)),!/^#[0-9a-f]{6}$/i.test(s))throw new Error("Color value is invalid format.")}else{if("select"!==n.type)throw new Error("Setting object is of unknown type");if(!n.potentialValues.some(e=>e.id===s))throw new Error("Setting value is invalid.")}a[t]=s}this.saveToLocalStorage(),s!==i&&this.dispatchEvent(new CustomEvent("setting-changed",{detail:{addonId:e,settingId:t,reloadRequired:!n.dynamic,value:s}}))}applyAddonPreset(e,t){const s=this.getAddonManifest(e);for(const{id:a,values:o}of s.presets){if(a!==t)continue;const s=r(r({},this.getDefaultSettings(e)),o);for(const t of Object.keys(s))this.setAddonSetting(e,t,s[t]);return}throw new Error("Unknown preset: ".concat(t))}resetAllAddons(){for(const e of Object.keys(a.a))this.resetAddon(e,!0);this.store=this.createEmptyStore(),this.saveToLocalStorage()}resetAddon(e,t){const s=this.getAddonStorage(e);for(const a of Object.keys(s))if("enabled"!==a)try{this.setAddonSetting(e,a,null)}catch(e){}else t&&this.setAddonEnabled(e,null)}parseUrlParameter(e){this.remote=!0;const t=e.split(",");for(const e of Object.keys(a.a))this.setAddonEnabled(e,t.includes(e))}export({theme:e}){const t={core:{lightTheme:"light"===e,version:"v1.0.0-tw-".concat(o.commit)},addons:{}};for(const[e,s]of Object.entries(a.a)){const a=this.getAddonEnabled(e),o={};if(s.settings)for(const{id:t}of s.settings)o[t]=this.getAddonSetting(e,t);t.addons[e]={enabled:a,settings:o}}return t}import(e){for(const[t,s]of Object.entries(e.addons)){if(!a.a.hasOwnProperty(t))continue;const{enabled:e,settings:o}=s;"boolean"==typeof e&&this.setAddonEnabled(t,e);for(const[e,s]of Object.entries(o))try{this.setAddonSetting(t,e,s)}catch(e){}}}setStoreWithVersionCheck({version:e,store:t}){e===o.commit&&this.setStore(t)}setStore(e){const t=this.store;for(const s of Object.keys(t)){const a=t[s],o=e[s];if(o&&"object"==typeof o&&JSON.stringify(a)!==JSON.stringify(o)){const e=this.getAddonManifest(s),t=!a.enabled&&o.enabled,n=!!e.dynamicDisable&&a.enabled&&!o.enabled;this.store[s]=JSON.parse(JSON.stringify(o)),this.dispatchEvent(new CustomEvent("addon-changed",{detail:{addonId:s,dynamicEnable:t,dynamicDisable:n}}))}}}evaluateCondition(e,t){if(!t)return!0;if(t.addonEnabled){if((s=t.addonEnabled,Array.isArray(s)?s:[s]).every(e=>!this.getAddonEnabled(e)))return!1}var s;if(t.settings)for(const[s,a]of Object.entries(t.settings))if(this.getAddonSetting(e,s)!==a)return!1;return!0}}const c=new d,u=new URLSearchParams(location.search);u.has("addons")?c.parseUrlParameter(u.get("addons")):c.readLocalStorage();t.a=c}}]); \ No newline at end of file diff --git a/js/addons.1dc1f24d6a190dfd8ff2.js b/js/addons.1dc1f24d6a190dfd8ff2.js new file mode 100644 index 0000000..33d8eec --- /dev/null +++ b/js/addons.1dc1f24d6a190dfd8ff2.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[73],{1633:function(e,t,n){"use strict";n.r(t),function(e){var t=n(177),o=n.n(t),s=n(53),r=n(584),a=n(468),i=n(194),c=n(128),l=n(1658),d=n(1659),u=n(1660),p=n(1662),h=n(1663),g=n(1637),b=(n(886),n(1666)),m=n(1667);const f=e=>e.replace(/([<>'"&])/g,(e,t)=>"&#".concat(t.charCodeAt(0),";")),k=e=>e.replace(/-([a-z])/g,e=>e[1].toUpperCase());let y=null;let v,w=[];const C=e=>{w=w.filter(t=>t!==e)};class M extends a.a{constructor(){super(),this._isInReducer=!1,this._initialized=!1,this._nextState=null}initialize(){this._initialized||(i.a.appStateReducer=(e,t,n)=>{this._isInReducer=!0,this._nextState=n,this.dispatchEvent(new CustomEvent("statechanged",{detail:{action:e,prev:t,next:n}})),this._nextState=null,this._isInReducer=!1},this._initialized=!0)}dispatch(e){this._isInReducer?queueMicrotask(()=>i.a.appStateStore.dispatch(e)):i.a.appStateStore.dispatch(e)}get state(){return this._nextState?this._nextState:i.a.appStateStore.getState()}}const E=()=>{const e=_.state.scratchGui.mode;return e.isEmbedded?"embed":e.isFullScreen?"fullscreen":e.isPlayerOnly?"projectpage":"editor"},_=new M,x=_.state.locales.locale.split("-")[0],S=(async()=>{if(d.a[x]){const e=await d.a[x]();Object.assign(l,e)}})(),N=e=>"addons-display-none-".concat(e),T=e=>e.split(/(?=[^\\]%[nbs])/g).map(e=>e.trim()).filter(e=>"%"===e.charAt(0)).map(e=>e.substring(0,2));let I=!1;const D={color:"#29beb8",secondaryColor:"#3aa8a4",tertiaryColor:"#3aa8a4"},j=[],O=["editor-devtools","block-switching","blocks2image","swap-local-global"];let L=!1;const A=e=>Object.keys(e).find(e=>e.startsWith("__reactInternalInstance$"));class z extends a.a{constructor(e){super(),this._id=e,this._seenElements=new WeakSet,this.traps={get vm(){return _.state.scratchGui.vm},getBlockly:()=>i.a.blockly?Promise.resolve(i.a.blockly):new Promise(e=>{i.a.blocklyCallbacks.push(()=>e(i.a.blockly))}),getPaper:async()=>{const e=await this.waitForElement("[class*='paint-editor_mode-selector']",{reduxCondition:e=>1===e.scratchGui.editorTab.activeTabIndex&&!e.scratchGui.mode.isPlayerOnly});let t,n=e[Object.keys(e).find(e=>e.startsWith("__reactInternalInstance$"))].child;for(;n;){const e=n.child.stateNode;if(e.tool){t=e.tool;break}if(e.blob&&e.blob.tool){t=e.blob.tool;break}n=n.sibling}if(t){return t._scope}throw new Error("cannot find paper :(")},getInternalKey:A}}get redux(){return _}waitForElement(e,{markAsSeen:t=!1,condition:n,reduxCondition:o,reduxEvents:s}={}){let r=!0;const a=()=>!!r&&(!(n&&!n())&&!(o&&!o(_.state)));if(a()){const n=document.querySelectorAll(e);for(const e of n)if(!this._seenElements.has(e))return t&&this._seenElements.add(e),Promise.resolve(e)}let i;return s&&(r=!1,i=({detail:e})=>{const t=e.action.type;s.includes(t)&&"fontsLoaded/SET_FONTS_LOADED"!==t&&(r=!0)},this.redux.initialize(),this.redux.addEventListener("statechanged",i)),new Promise(n=>{const o=()=>{if(!a())return;const s=document.querySelectorAll(e);for(const e of s)if(!this._seenElements.has(e)){n(e),C(o),t&&this._seenElements.add(e),i&&this.redux.removeEventListener("statechanged",i);break}};var s;s=o,v||(v=new MutationObserver(()=>{for(const e of w)e()}),v.observe(document.documentElement,{attributes:!1,childList:!0,subtree:!0})),w.push(s)})}appendToSharedSpace({space:e,element:t,order:n,scope:o}){const s={stageHeader:{element:()=>document.querySelector("[class^='stage-header_stage-size-row']"),from:()=>[],until:()=>[document.querySelector("[class^='stage-header_stage-size-toggle-group']"),document.querySelector("[class^='stage-header_stage-size-row']").lastChild]},fullscreenStageHeader:{element:()=>document.querySelector("[class^='stage-header_stage-menu-wrapper']"),from:function(){let e=this.element().querySelector(".addon-spacer");return e||(e=document.createElement("div"),e.style.marginLeft="auto",e.className="addon-spacer",this.element().insertBefore(e,this.element().lastChild)),[e]},until:()=>[document.querySelector("[class^='stage-header_stage-menu-wrapper']").lastChild]},afterGreenFlag:{element:()=>document.querySelector("[class^='controls_controls-container']"),from:()=>[],until:()=>[document.querySelector("[class^='stop-all_stop-all']")]},afterStopButton:{element:()=>document.querySelector("[class^='controls_controls-container']"),from:()=>[document.querySelector("[class^='stop-all_stop-all']")],until:()=>[]},afterSoundTab:{element:()=>document.querySelector("[class^='react-tabs_react-tabs__tab-list']"),from:()=>[document.querySelector("[class^='react-tabs_react-tabs__tab-list']").children[2]],until:()=>[document.querySelector(".sa-find-bar")]},assetContextMenuAfterExport:{element:()=>o,from:()=>Array.prototype.filter.call(o.children,e=>e.textContent===this.scratchMessage("gui.spriteSelectorItem.contextMenuExport")),until:()=>Array.prototype.filter.call(o.children,e=>e.textContent===this.scratchMessage("gui.spriteSelectorItem.contextMenuDelete"))},assetContextMenuAfterDelete:{element:()=>o,from:()=>Array.prototype.filter.call(o.children,e=>e.textContent===this.scratchMessage("gui.spriteSelectorItem.contextMenuDelete")),until:()=>[]},paintEditorZoomControls:{element:()=>document.querySelector(".sa-paintEditorZoomControls-wrapper")||(()=>{const e=Object.assign(document.createElement("div"),{className:"sa-paintEditorZoomControls-wrapper"});e.style.display="flex",e.style.flexDirection="row-reverse",e.style.height="calc(1.95rem + 2px)";const t=document.querySelector("[class^='paint-editor_zoom-controls']");return t.replaceWith(e),e.appendChild(t),e})(),from:()=>[],until:()=>[]}}[e],r=s.element();if(!r)return!1;const a=s.from(),i=s.until();t.dataset.saSharedSpaceOrder=n;let c=!1;0===a.length&&(c=!0);let l=null;const d=Array.from(r.children);for(const e of d.keys()){const t=d[e],o=Number(e);if(c){if(i.includes(t)){l=0===o?-1:d[o-1];break}if(t.dataset.saSharedSpaceOrder&&Number(t.dataset.saSharedSpaceOrder)>n){l=0===o?-1:d[o-1];break}}else a.includes(t)&&(c=!0)}return!!c&&(null===l?r.appendChild(t):-1===l?r.prepend(t):r.insertBefore(t,l.nextSibling),!0)}addBlock(e,{args:t,displayName:n,callback:o}){const s=T(e);if(t.length!==s.length)throw new Error("Procedure code and argument list do not match");if(n){n=(e=>e.replace(/([^\s])(%[nbs])/g,(e,t,n)=>"".concat(t," ").concat(n)))(n);const t=T(n);r=s,a=t,JSON.stringify(r)!==JSON.stringify(a)&&(console.warn("displayName ".concat(n," for ").concat(e," has invalid arguments, ignoring it.")),n=e)}else n=e;var r,a;const i=this.traps.vm;i.addAddonBlock({procedureCode:e,arguments:t,callback:(e,t)=>o(e,t.thread),displayName:n}),I||(I=!0,this.traps.getBlockly().then(e=>{const t=e.BlockSvg,n=t.prototype.updateColour;t.prototype.updateColour=function(...e){if(!this.isInsertionMarker()&&"procedures_call"===this.type){this.procCode_&&i.runtime.getAddonBlock(this.procCode_)&&(this.colour_=D.color,this.colourSecondary_=D.secondaryColor,this.colourTertiary_=D.tertiaryColor,this.customContextMenu=null)}return n.call(this,...e)};const o=e.Blocks.procedures_call.createAllInputs_;e.Blocks.procedures_call.createAllInputs_=function(...e){const t=this.procCode_&&i.runtime.getAddonBlock(this.procCode_);if(t&&t.displayName){const n=this.procCode_;this.procCode_=t.displayName;const s=o.call(this,...e);return this.procCode_=n,s}return o.call(this,...e)},i.editingTarget&&i.emitWorkspaceUpdate()}))}getCustomBlock(e){return this.traps.vm.getAddonBlock(e)}getCustomBlockColor(){return D}setCustomBlockColor(e){Object.assign(D,e)}createBlockContextMenu(e,{workspace:t=!1,blocks:n=!1,flyout:o=!1,comments:s=!1}={}){j.push({addonId:this._id,callback:e,workspace:t,blocks:n,flyout:o,comments:s}),j.sort((e,t)=>O.indexOf(e.addonId)-O.indexOf(t.addonId)),L||(L=!0,this.traps.getBlockly().then(e=>{const t=e.ContextMenu.show;e.ContextMenu.show=function(n,o,s){const r=e.mainWorkspace.currentGesture_,a=r.targetBlock_;for(const{callback:e,workspace:t,blocks:n,flyout:s,comments:i}of j){if(t&&!a&&!r.flyout_&&!r.startBubble_||n&&a&&!r.flyout_||s&&r.flyout_||i&&r.startBubble_)try{o=e(o,a)}catch(e){console.error("Error while calling context menu callback: ",e)}}t.call(this,n,o,s);const i=e.WidgetDiv.DIV.firstChild;o.forEach((e,t)=>{if(0!==t&&e.separator){const e=i.children[t];e.style.paddingTop="2px",e.classList.add("sa-blockly-menu-item-border"),e.style.borderTop="1px solid hsla(0, 0%, 0%, 0.15)"}})}}))}createEditorContextMenu(e,t){Object(p.a)(this,e,t)}copyImage(e){if(!navigator.clipboard.write)return Promise.reject(new Error("Clipboard API not supported"));const t=[new ClipboardItem({"image/png":Object(r.a)(e)})];return navigator.clipboard.write(t)}scratchMessage(e){return _.state.locales.messages[e]}scratchClass(...e){const t=(()=>{if(y)return y;const e=Array.from(document.styleSheets).filter(e=>!(e.ownerNode.textContent.startsWith("/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.")&&(e.ownerNode.textContent.includes("input_input-form")||e.ownerNode.textContent.includes("label_input-group_")))).map(e=>{try{return[...e.cssRules]}catch(e){return[]}}).flat().map(e=>e.selectorText).filter(e=>e).map(e=>e.match(/(([\w-]+?)_([\w-]+)_([\w\d-]+))/g)).filter(e=>e).flat();y=[...new Set(e)];const t=new MutationObserver(e=>{for(const n of e)for(const e of n.addedNodes)if("STYLE"===e.tagName)return y=null,void t.disconnect()});return t.observe(document.head,{childList:!0}),y})(),n=[];for(const o of e)if("string"==typeof o)for(const e of t)if(e.startsWith("".concat(o,"_"))&&e.length===o.length+6){n.push(e);break}const o=e[e.length-1];if("object"==typeof o){const e=Array.isArray(o.others)?o.others:[o.others];for(const t of e)n.push(t)}return n.join(" ")}get editorMode(){return E()}displayNoneWhileDisabled(e){e.classList.add(N(this._id))}get direction(){return this.redux.state.locales.isRtl?"rtl":"ltr"}createModal(e,{isOpen:t=!1}={}){return h.b(this,e,{isOpen:t})}confirm(...e){return h.a(this,...e)}prompt(...e){return h.c(this,...e)}}class P extends a.a{constructor(e,t){super(),this._addonId=e,this._manifest=t}get(e){return s.a.getAddonSetting(this._addonId,e)}}class B extends a.a{constructor(e,t){super(),this.id=e,this.disabled=!1,this.getResource=t}}class R{constructor(t){R.instances.push(this);const n=c.a[t];this.id=t,this.manifest=n,this.messageCache={},this.loading=!0,this.resources=null,this.publicAPI={global:e,console:console,addon:{tab:new z(t),settings:new P(t,n),self:new B(t,this.getResource.bind(this))},msg:this.msg.bind(this),safeMsg:this.safeMsg.bind(this)}}_msg(e,t,n){const s="".concat(this.id,"/").concat(e);if(this.messageCache[s])return this.messageCache[s].format(t);let r=l[s];if(!r)return s;n&&(r=n(r));const a=new o.a(r,x);return this.messageCache[s]=a,a.format(t)}msg(e,t){return this._msg(e,t,null)}safeMsg(e,t){return this._msg(e,t,f)}getResource(e){const t=e.substring(1),n=this.resources[t];if("string"!=typeof n)throw new Error("Unknown asset: ".concat(e));return n}updateAllStyles(){b.b(),this.updateCssVariables()}updateCssVariables(){const e=k(this.id);if(this.manifest.settings)for(const t of this.manifest.settings){const n=t.id,o="--".concat(e,"-").concat(k(n)),s=this.publicAPI.addon.settings.get(n);document.documentElement.style.setProperty(o,s)}if(this.manifest.customCssVariables)for(const t of this.manifest.customCssVariables){const n=t.name,o="--".concat(e,"-").concat(n),s=t.value,r=this.evaluateCustomCssVariable(s);document.documentElement.style.setProperty(o,r)}}evaluateCustomCssVariable(e){if("object"!=typeof e||null===e)return e;switch(e.type){case"alphaBlend":{const t=this.evaluateCustomCssVariable(e.opaqueSource),n=this.evaluateCustomCssVariable(e.transparentSource);return g.a(t,n)}case"alphaThreshold":{const t=this.evaluateCustomCssVariable(e.source);return g.e(t).a>=(this.evaluateCustomCssVariable(e.threshold)||.5)?this.evaluateCustomCssVariable(e.opaque):this.evaluateCustomCssVariable(e.transparent)}case"brighten":{const t=this.evaluateCustomCssVariable(e.source);return g.b(t,e)}case"makeHsv":{const t=this.evaluateCustomCssVariable(e.h),n=this.evaluateCustomCssVariable(e.s),o=this.evaluateCustomCssVariable(e.v);return g.c(t,n,o)}case"map":return e.options[this.evaluateCustomCssVariable(e.source)];case"multiply":{const t=this.evaluateCustomCssVariable(e.source);return g.d(t,e)}case"recolorFilter":{const t=this.evaluateCustomCssVariable(e.source);return g.f(t)}case"settingValue":return this.publicAPI.addon.settings.get(e.settingId);case"textColor":{const t=this.evaluateCustomCssVariable(e.source),n=this.evaluateCustomCssVariable(e.black),o=this.evaluateCustomCssVariable(e.white),s=this.evaluateCustomCssVariable(e.threshold);return g.h(t,n,o,s)}}return console.warn("Unknown customCssVariable",e),"#000000"}settingsChanged(){this.updateAllStyles(),this.publicAPI.addon.settings.dispatchEvent(new CustomEvent("change"))}dynamicEnable(){this.loading||(this.publicAPI.addon.self.disabled=!1,this.updateAllStyles(),this.publicAPI.addon.self.dispatchEvent(new CustomEvent("reenabled")))}dynamicDisable(){this.loading||(this.publicAPI.addon.self.disabled=!0,this.updateAllStyles(),this.publicAPI.addon.self.dispatchEvent(new CustomEvent("disabled")))}async run(){this.manifest.editorOnly&&await(()=>{if(_.state.scratchGui.mode.isPlayerOnly&&!_.state.scratchGui.mode.isEmbedded)return new Promise(e=>{const t=()=>{_.state.scratchGui.mode.isPlayerOnly||(e(),_.removeEventListener("statechanged",t))};_.initialize(),_.addEventListener("statechanged",t)})})();const e=await u.a[this.id]();this.resources=e.resources,this.manifest.noTranslations||await S;const t=100*Object(m.a)(this.id);if(this.manifest.userstyles)for(let e=0;e!this.publicAPI.addon.self.disabled&&s.a.evaluateCondition(this.id,n.if);for(const[e,t]of this.resources[n.url]){b.a(e,t).addDependent(this.id,o,r)}}const n=".".concat(N(this.id),"{display:none !important;}");if(b.a("_disabled/".concat(this.id),n).addDependent(this.id,t,()=>this.publicAPI.addon.self.disabled),this.updateCssVariables(),this.manifest.userscripts)for(const e of this.manifest.userscripts){if(!s.a.evaluateCondition(e.if))continue;(0,this.resources[e.url])(this.publicAPI)}this.loading=!1}}R.instances=[];const G=e=>{new R(e).run()};let V=E();const U=()=>{const e=E();e!==V&&(V=e,setTimeout(()=>{for(const e of R.instances)e.publicAPI.addon.tab.dispatchEvent(new CustomEvent("urlChange"))}))},W=history.replaceState;history.replaceState=function(...e){W.apply(this,e),U()};const F=history.pushState;history.pushState=function(...e){F.apply(this,e),U()},s.a.addEventListener("addon-changed",e=>{const t=e.detail.addonId,n=R.instances.find(e=>e.id===t);n&&n.settingsChanged(),e.detail.dynamicEnable?n?n.dynamicEnable():G(t):e.detail.dynamicDisable&&n&&n.dynamicDisable()});for(const e of Object.keys(c.a))s.a.getAddonEnabled(e)&&G(e)}.call(this,n(45))},1634:function(e,t,n){"use strict";n.d(t,"b",(function(){return u})),n.d(t,"e",(function(){return m})),n.d(t,"c",(function(){return f})),n.d(t,"d",(function(){return k})),n.d(t,"a",(function(){return y})),n.d(t,"g",(function(){return M})),n.d(t,"f",(function(){return E}));var o=n(468);let s,r=!1,a=new WeakMap,i=!1,c=null;const l=new o.a;let d=Promise.resolve();const u=()=>r,p=e=>{if(e.updateMonitor||a.has(e))return;const t={time:s.runtime.currentMSecs,status:e.status};a.set(e,t),e.status=1},h=e=>{if(4===e.status)return;const t=a.get(e);t&&1!==e.status&&(t.status=e.status,e.status=1)},g=e=>{c=e},b=(e,t)=>{e.timer&&(e.timer.startTime+=s.runtime.currentMSecs-t.time);const n=e.peekStackFrame();n&&n.executionContext&&n.executionContext.timer&&(n.executionContext.timer.startTime+=s.runtime.currentMSecs-t.time)},m=e=>{const t=r!==e;if(t&&(r=e,l.dispatchEvent(new CustomEvent("change"))),r){d=d.then(()=>s.runtime.audioEngine.audioContext.suspend()),s.runtime.ioDevices.clock._paused||s.runtime.ioDevices.clock.pause(),s.runtime.threads.forEach(p);const e=s.runtime.sequencer.activeThread;e&&(g(e),l.dispatchEvent(new CustomEvent("step")))}if(!r&&t){d=d.then(()=>s.runtime.audioEngine.audioContext.resume()),s.runtime.ioDevices.clock.resume();for(const e of s.runtime.threads){const t=a.get(e);t&&(b(e,t),e.status=t.status)}a=new WeakMap;(e=>{const t=s.runtime.threads,n=w(e);if(-1!==n)for(let e=n;e{l.addEventListener("change",()=>e(r))},k=e=>{l.addEventListener("step",e)},y=()=>c,v=e=>{const t=a.get(e);return t?t.status:e.status},w=e=>e?s.runtime.threads.findIndex(t=>t.target===e.target&&t.topBlock===e.topBlock&&t.stackClick===e.stackClick&&t.updateMonitor===e.updateMonitor):-1,C=e=>{const t=s.runtime.threads;for(let n=e;n{if(c){const e=a.get(c);b(c,e),e.time=s.runtime.currentMSecs;(e=>{if(4===e.status)return!1;if(e.isCompiled)return!1;const t=e.peekStack();if(!t&&(e.popStack(),0===e.stack.length))return e.status=4,!1;i=!0,s.runtime.sequencer.activeThread=e;const n=["special error used by Scratch Addons for implementing single-stepping"];Object.defineProperty(e,"blockGlowInFrame",{set(e){throw n}});try{e.status=0,e.warpTimer&&e.warpTimer.start();try{s.runtime.sequencer.stepThread(e)}catch(e){if(e!==n)throw e}if(0!==e.status)return!1;for(e.peekStack()===t&&e.goToNextBlock();!e.peekStack();){if(e.popStack(),0===e.stack.length)return e.status=4,!1;const t=e.peekStackFrame();if(t.isLoop){if(e.peekStackFrame().warpMode)continue;return!1}if(t.waitingReporter)return!1;e.goToNextBlock()}return!0}finally{i=!1,s.runtime.sequencer.activeThread=null,Object.defineProperty(e,"blockGlowInFrame",{value:t,configurable:!0,enumerable:!0,writable:!0}),4!==e.status&&(e.status=1)}})(c)||(c=C(w(c)+1))}if(!c){g(C(0)),s.runtime.ioDevices.clock._pausedTime+=s.runtime.currentStepTime;const e=s.runtime.audioEngine.audioContext;for(const t of s.runtime.targets)for(const n of Object.keys(t.sprite.soundBank.soundPlayers)){const o=t.sprite.soundBank.soundPlayers[n];o.outputNode&&(o.outputNode.stop(e.currentTime),o._createSource(),o.outputNode.start(e.currentTime,e.currentTime-o.startingUntil+s.runtime.currentStepTime/1e3),o.startingUntil-=s.runtime.currentStepTime/1e3)}for(const e of s.runtime.threads)a.has(e)&&(a.get(e).time+=s.runtime.currentStepTime);i=!0;const t=s.runtime._hats;for(const e in t){if(!Object.prototype.hasOwnProperty.call(t,e))continue;t[e].edgeActivated&&s.runtime.startHats(e)}i=!1}l.dispatchEvent(new CustomEvent("step"))},E=e=>{if(s)return;s=e;const t=s.runtime.sequencer.stepThreads;s.runtime.sequencer.stepThreads=function(){if(u())for(const e of this.runtime.threads)h(e);return t.call(this)};const n=s.runtime.greenFlag;s.runtime.greenFlag=function(){return m(!1),n.call(this)};const o=s.runtime.startHats;s.runtime.startHats=function(...e){const t=e[0],n="event_whenbroadcastreceived"===t||"control_start_as_clone"===t;if(i){if(!n&&!this.getIsEdgeActivatedHat(t))return[];const s=o.apply(this,e);for(const e of s)p(e);return s}return r&&!n?[]:o.apply(this,e)};const c=s.runtime._getMonitorThreadCount;s.runtime._getMonitorThreadCount=function(e){let t=c.call(this,e);if(r)for(const n of e)a.has(n)&&t++;return t}}},1637:function(e,t,n){"use strict";function o(e){return{r:parseInt(e.substring(1,3),16),g:parseInt(e.substring(3,5),16),b:parseInt(e.substring(5,7),16),a:e.length>=9?parseInt(e.substring(7,9),16)/255:1}}function s(e){return 1===(e=Math.round(e).toString(16)).length?"0".concat(e):e}function r(e){const t=s(e.r),n=s(e.g),o=s(e.b),r=void 0!==e.a?s(255*e.a):"";return"#".concat(t).concat(n).concat(o).concat(r)}function a({r:e,g:t,b:n}){e/=255,t/=255,n/=255;const o=Math.max(e,t,n),s=o-Math.min(e,t,n);if(0===s)return{h:0,s:0,v:o};const r=(o-e)/s,a=(o-t)/s,i=(o-n)/s;let c;r?a?i||(c=4+a-r):c=2+r-i:c=i-a;return{h:60*c%360,s:s/o,v:o}}function i(e){const{r:t,g:n,b:s}=o(e);return.299*t+.587*n+.114*s}function c(e,t,n,o){return"number"!=typeof(o=void 0!==o?o:170)&&(o=i(o)),i(e)>o?void 0!==t?t:"#575e75":void 0!==n?n:"#ffffff"}function l(e,t){const{r:n,g:s,b:a,a:i}=o(e);return void 0===t.r&&(t.r=1),void 0===t.g&&(t.g=1),void 0===t.b&&(t.b=1),void 0===t.a&&(t.a=1),r({r:t.r*n,g:t.g*s,b:t.b*a,a:t.a*i})}function d(e,t){const{r:n,g:s,b:a,a:i}=o(e);return void 0===t.r&&(t.r=1),void 0===t.g&&(t.g=1),void 0===t.b&&(t.b=1),void 0===t.a&&(t.a=1),r({r:255*(1-t.r)+t.r*n,g:255*(1-t.g)+t.g*s,b:255*(1-t.b)+t.b*a,a:1-t.a+t.a*i})}function u(e,t){const{r:n,g:s,b:a}=o(e),{r:i,g:c,b:l,a:d}=o(t);return r({r:(1-d)*n+d*i,g:(1-d)*s+d*c,b:(1-d)*a+d*l})}function p(e){return e.substring(0,7)}function h(e,t,n){return r(function({h:e,s:t,v:n}){if(0===t)return{r:255*n,g:255*n,b:255*n};(e%=360)<0&&(e+=360);const o=e/60,s=Math.floor(o),r=n*(1-t*(1-o+s)),a=n*(1-t*(o-s)),i=n*(1-t);switch(s){case 0:return{r:255*n,g:255*r,b:255*i};case 1:return{r:255*a,g:255*n,b:255*i};case 2:return{r:255*i,g:255*n,b:255*r};case 3:return{r:255*i,g:255*a,b:255*n};case 4:return{r:255*r,g:255*i,b:255*n};case 5:return{r:255*n,g:255*i,b:255*a}}}({h:"number"==typeof e?e:a(o(e)).h,s:"number"!=typeof e&&0===a(o(e)).s?0:"number"==typeof t?t:a(o(t)).s,v:"number"==typeof n?n:a(o(n)).v}))}function g(e){const{r:t,g:n,b:s}=o(e);return"url(\"data:image/svg+xml,\n \n \n \n \n #recolor\n \")").split("\n").join("")}n.d(t,"e",(function(){return o})),n.d(t,"h",(function(){return c})),n.d(t,"d",(function(){return l})),n.d(t,"b",(function(){return d})),n.d(t,"a",(function(){return u})),n.d(t,"g",(function(){return p})),n.d(t,"c",(function(){return h})),n.d(t,"f",(function(){return g}))},1643:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var o=n(1645);const s={block:null,timerID:null};let r=[],a=[];class i{constructor(e){this.addon=e,this.addon.tab.traps.getBlockly().then(e=>{this.blockly=e}),this.vm=this.addon.tab.traps.vm,this.offsetX=32,this.offsetY=32,this.navigationHistory=new c,this._workspace=null}getEditingTarget(){return this.vm.runtime.getEditingTarget()}setEditingTarget(e){this.getEditingTarget().id!==e&&this.vm.setEditingTarget(e)}getWorkspace(){const e=Blockly.getMainWorkspace();return e.getToolbox()&&(this._workspace=e),this._workspace}scrollBlockIntoView(e){var t;let n,r=this.getWorkspace();if(e instanceof o.a?(this.setEditingTarget(e.targetId),n=r.getBlockById(e.id)):n=e&&e.id?e:r.getBlockById(e),!n)return;let a=n.getRootBlock(),i=this.getTopOfStackFor(n).getRelativeToSurfaceXY(),c=a.getRelativeToSurfaceXY(),l=r.scale,d=c.x*l,u=i.y*l,p=n.width+d,h=n.height+u,g=r.getMetrics();if(dg.viewLeft+g.viewWidth||ug.viewTop+g.viewHeight){let e=d-g.contentLeft-this.offsetX,t=u-g.contentTop-this.offsetY;this.navigationHistory.storeView(this.navigationHistory.peek(),64),r.scrollbar.set(e,t),this.navigationHistory.storeView({left:e,top:t},64)}null===(t=this.blockly)||void 0===t||t.hideChaff(),class{static flash(e){s.timerID>0&&(clearTimeout(s.timerID),s.block.svgPath_&&(s.block.svgPath_.style.fill=""));let t=4,n=!0;s.block=e,function e(){s.block.svgPath_&&(s.block.svgPath_.style.fill=n?"#ffff80":""),n=!n,t--,t>0?s.timerID=setTimeout(e,200):(s.timerID=0,s.block=null)}()}}.flash(n)}getTopOfStackFor(e){let t=e;for(;t.getOutputShape()&&t.getSurroundParent();)t=t.getSurroundParent();return t}}class c{storeView(e,t){a=[];let n=Blockly.getMainWorkspace().getMetrics(),o={left:n.viewLeft,top:n.viewTop};(!e||l(o,e)>t)&&r.push(o)}peek(){return r.length>0?r[r.length-1]:null}goBack(){const e=Blockly.getMainWorkspace(),t=e.getMetrics();let n={left:t.viewLeft,top:t.viewTop},o=this.peek();if(!o)return;if(l(n,o)<64&&r.length>1&&(r.pop(),a.push(o)),o=this.peek(),!o)return;let s=o.left-t.contentLeft,i=o.top-t.contentTop;e.scrollbar.set(s,i)}goForward(){let e=a.pop();if(!e)return;r.push(e);let t=Blockly.getMainWorkspace(),n=t.getMetrics(),o=e.left-n.contentLeft,s=e.top-n.contentTop;t.scrollbar.set(o,s)}}function l(e,t){return Math.sqrt(Math.pow(e.left-t.left,2)+Math.pow(e.top-t.top,2))}},1645:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));class o{constructor(e,t){this.targetId=e.id,this.id=t.id}}},1646:function(e,t,n){"use strict";n.d(t,"f",(function(){return c})),n.d(t,"a",(function(){return l})),n.d(t,"b",(function(){return d})),n.d(t,"e",(function(){return u})),n.d(t,"d",(function(){return p})),n.d(t,"c",(function(){return h})),n.d(t,"g",(function(){return b}));let o=!1,s=null,r=1,a=1;const i=[],c=e=>{s?s.value=e:a=e,i.forEach(e=>e())},l=()=>s?s.value:a,d=()=>0===l(),u=e=>{r=e},p=e=>{e?(u(l()),c(0)):c(r)},h=e=>{i.push(e)},g=e=>{e?(s=e.inputNode.gain,s.value=a):console.error("could not get audio engine; sound-related addons will not work")},b=e=>{if(o)return;o=!0;const t=e.runtime.audioEngine;t?g(t):e.runtime.once("PROJECT_LOADED",()=>{g(e.runtime.audioEngine)})}},1658:function(e){e.exports=JSON.parse('{"editor-devtools/clean-plus":"Clean up Blocks +","editor-devtools/copy-all":"Copy All","editor-devtools/copy-block":"Copy Block","editor-devtools/cut-block":"Cut Block","editor-devtools/lists":"lists","editor-devtools/make-space":"Make Space","editor-devtools/orphaned":"{count, plural, one {Developer tools: Delete 1 orphaned reporter block?} other {Developer tools: Delete # orphaned reporter blocks?} }","editor-devtools/paste":"Paste","editor-devtools/replace":"Developer tools: Switch all {name} in this sprite for the variable named:","editor-devtools/swap":"Swap {var} in Sprite","editor-devtools/unused-list":"{count, plural, one {Developer tools: Delete 1 unused local list? Here it is:\\n} other {Developer tools: Delete # unused local lists? Here they are:\\n} }","editor-devtools/unused-var":"{count, plural, one {Developer tools: Delete 1 unused local variable? Here it is:\\n} other {Developer tools: Delete # unused local variables? Here they are:\\n} }","editor-devtools/var-not-exist":"That variable does not exist...","editor-devtools/variables":"variables","find-bar/complex-broadcast":"(expression)","find-bar/find-placeholder":"Find (Ctrl+F)","middle-click-popup/start-typing":"Start Typing...","editor-searchable-dropdowns/createBroadcast":"Create message \\"{name}\\"","editor-searchable-dropdowns/createGlobalList":"Create list \\"{name}\\" for all sprites","editor-searchable-dropdowns/createGlobalVariable":"Create variable \\"{name}\\" for all sprites","editor-searchable-dropdowns/createLocalList":"Create list \\"{name}\\" for this sprite only","editor-searchable-dropdowns/createLocalVariable":"Create variable \\"{name}\\" for this sprite only","data-category-tweaks-v2/for-all-sprites":"For all sprites:","data-category-tweaks-v2/for-this-sprite-only":"For this sprite only:","data-category-tweaks-v2/list-category":"Lists","hide-flyout/lock":"Lock Palette","hide-flyout/unlock":"Unlock Palette","mediarecorder/cancel":"Cancel","mediarecorder/click-flag":"Waiting...","mediarecorder/click-flag-description":"Click the green flag to start recording. Click this button to stop.","mediarecorder/option-title":"Record Options","mediarecorder/record":"Record","mediarecorder/record-after-flag":"Do not start recording until the Green Flag is clicked","mediarecorder/record-audio":"Include project sounds","mediarecorder/record-audio-description":"This does not include Text-to-Speech.","mediarecorder/record-description":"Record the stage as a WebM file. You can save it to your computer after the recording is finished.\\nNote: variable and list monitors will not be visible.","mediarecorder/record-duration":"Record Duration (in seconds)","mediarecorder/record-mic":"Include sounds from microphone","mediarecorder/record-until-stop":"Stop recording after the project has stopped","mediarecorder/record-until-stop-disabled":"You need to enable \\"{afterFlagOption}\\" to use this option.","mediarecorder/start":"Start","mediarecorder/start-delay":"Start Delay (in seconds)","mediarecorder/starting-in":"Starting in {secs}...","mediarecorder/stop":"Stop Recording","debugger/block-breakpoint":"breakpoint","debugger/block-error":"error %s","debugger/block-log":"log %s","debugger/block-warn":"warn %s","debugger/cannot-pause-player":"Breakpoint block can only be used while on the editor.","debugger/clear":"Clear","debugger/clone-of":"Clone of {sprite}","debugger/close":"Close","debugger/console":"Logs","debugger/debug":"Debug","debugger/empty-string":"(empty string)","debugger/enter-format":"Enter export format:","debugger/export":"Export","debugger/export-desc":"Click while holding Shift to customize export format.","debugger/icon-error":"Error","debugger/icon-warn":"Warning","debugger/log-msg-broadcasted":"Broadcasted \'{broadcast}\'.","debugger/log-msg-clone-cap":"Failed to create clone of \'{sprite}\', cannot create over 300 clones.","debugger/log-msg-clone-created":"Created clone of \'{sprite}\'.","debugger/log-msg-flag-clicked":"Green flag clicked.","debugger/no-logs":"There are no logs to display.","debugger/no-threads-running":"No threads running.","debugger/step":"Step","debugger/step-desc":"Executes one block.","debugger/tab-logs":"Logs","debugger/tab-threads":"Threads","debugger/thread":"Thread {id}","debugger/unknown-sprite":"(unknown sprite)","debugger/unpause":"Resume","pause/pause":"Pause","clones/clones":"clones: {cloneCount}","color-picker/hex":"hex color","remove-sprite-confirm/confirm":"Do you want to delete the sprite?","block-count/blocks":"{num, plural, one {1 block} other {# blocks}}","onion-skinning/behind":"Behind","onion-skinning/front":"Front","onion-skinning/layering":"Layering","onion-skinning/merge":"Merge","onion-skinning/mode":"Mode","onion-skinning/next":"Next costumes","onion-skinning/opacity":"Opacity (%)","onion-skinning/opacityStep":"Opacity step (%)","onion-skinning/previous":"Previous costumes","onion-skinning/settings":"Onion Skinning Settings","onion-skinning/tint":"Tint","onion-skinning/toggle":"Toggle Onion Skinning","paint-snap/boxCenter":"Center of selection","paint-snap/boxCorners":"Corners of selection","paint-snap/boxEdgeMids":"Selection edge midpoints","paint-snap/objectCenters":"Centers of objects","paint-snap/objectCorners":"Corners of objects","paint-snap/objectEdges":"Edges of objects","paint-snap/objectMidlines":"Midlines of objects","paint-snap/off":"Off","paint-snap/on":"On","paint-snap/pageAxes":"Page x and y axes","paint-snap/pageCenter":"Center of the page","paint-snap/pageCorners":"Corners of the page","paint-snap/pageEdges":"Edges of the page","paint-snap/settings":"Snap Settings","paint-snap/snapFrom":"Snap from:","paint-snap/snapTo":"Snap to:","paint-snap/threshold":"Snapping distance","paint-snap/toggle":"Toggle Snapping","2d-color-picker/shade":"Shade","better-img-uploads/upload":"HD Upload","variable-manager/for-all-sprites":"Variables for all sprites","variable-manager/for-this-sprite":"Variables for this sprite","variable-manager/search":"Search","variable-manager/too-big":"Click to display very large value.","variable-manager/variables":"Variables","search-sprites/placeholder":"Search sprites...","sprite-properties/close-properties-panel-tooltip":"Collapse properties panel","sprite-properties/open-properties-panel-tooltip":"Open properties panel","gamepad/axes-a-b":"Axes {a} & {b}","gamepad/axis-arrows":"Arrow Keys","gamepad/axis-cursor":"Cursor","gamepad/axis-custom":"Custom","gamepad/axis-none":"None","gamepad/browser-support":"This browser and operating system have known bugs that may make this addon difficult to use. Try another browser if you encounter problems.","gamepad/button-n":"Button {n}","gamepad/clear":"Clear all controls","gamepad/config-header":"This comment contains configuration for gamepad support in third-party tools or websites such as https://turbowarp.org/\\nDo not edit by hand","gamepad/key-click":"Click","gamepad/key-down":"Down","gamepad/key-enter":"Enter","gamepad/key-left":"Left","gamepad/key-none":"(none)","gamepad/key-right":"Right","gamepad/key-space":"Space","gamepad/key-up":"Up","gamepad/keyinput-title":"Click and press a key or click to change button. Escape to cancel. Backspace or delete to clear.","gamepad/no-controllers":"No controllers detected. Try plugging one in and pressing a button on it.","gamepad/reset":"Reset all controls to project defaults","gamepad/settings":"Gamepad Settings","gamepad/store-in-project":"Store these settings in the project to override the default configuration (Experimental tool for project creators)","folders/add-to-folder":"add to folder: {folder}","folders/closed-folder":"Folder","folders/confirm-backpack-folder":"Save entire folder to backpack?","folders/create-folder":"create folder","folders/name-not-allowed":"Invalid folder name","folders/name-prompt":"Name of folder:","folders/name-prompt-title":"Create Folder","folders/open-folder":"Opened","folders/remove-folder":"remove folder","folders/remove-from-folder":"remove from folder","folders/rename-folder":"rename folder","folders/rename-folder-prompt":"Rename folder to:","folders/rename-folder-prompt-title":"Rename Folder","block-switching/control_forever":"forever","block-switching/control_if":"if","block-switching/control_if_else":"if... else","block-switching/control_repeat_until":"repeat until","block-switching/control_wait_until":"wait until","block-switching/data_changevariableby":"change variable","block-switching/data_deletealloflist":"delete all","block-switching/data_deleteoflist":"delete item","block-switching/data_hidelist":"hide list","block-switching/data_hidevariable":"hide variable","block-switching/data_insertatlist":"insert item","block-switching/data_replaceitemoflist":"replace item","block-switching/data_setvariableto":"set variable","block-switching/data_showlist":"show list","block-switching/data_showvariable":"show variable","block-switching/debugger_error":"error","block-switching/debugger_log":"log","block-switching/debugger_warn":"warn","block-switching/event_broadcast":"broadcast","block-switching/event_broadcastandwait":"broadcast and wait","block-switching/looks_backdropnumbername":"backdrop number or name","block-switching/looks_changeeffectby":"change effect","block-switching/looks_changesizeby":"change size","block-switching/looks_costumenumbername":"costume number or name","block-switching/looks_goforwardbackwardlayers":"go forward or backward layers","block-switching/looks_gotofrontback":"go to front or back layer","block-switching/looks_hide":"hide","block-switching/looks_nextbackdrop":"next backdrop","block-switching/looks_nextcostume":"next costume","block-switching/looks_say":"say","block-switching/looks_sayforsecs":"say for seconds","block-switching/looks_seteffectto":"set effect","block-switching/looks_setsizeto":"set size","block-switching/looks_show":"show","block-switching/looks_switchbackdropto":"switch backdrop","block-switching/looks_switchbackdroptoandwait":"switch backdrop and wait","block-switching/looks_think":"think","block-switching/looks_thinkforsecs":"think for seconds","block-switching/motion_changexby":"change x","block-switching/motion_changeyby":"change y","block-switching/motion_setx":"set x","block-switching/motion_sety":"set y","block-switching/motion_turnleft":"turn left","block-switching/motion_turnright":"turn right","block-switching/motion_xposition":"x position","block-switching/motion_yposition":"y position","block-switching/music_changeTempo":"change tempo","block-switching/music_setTempo":"set tempo","block-switching/operator_add":"+","block-switching/operator_and":"and","block-switching/operator_divide":"/","block-switching/operator_equals":"=","block-switching/operator_gt":">","block-switching/operator_lt":"<","block-switching/operator_mod":"mod","block-switching/operator_multiply":"*","block-switching/operator_or":"or","block-switching/operator_subtract":"-","block-switching/pen_changePenColorParamBy":"change parameter","block-switching/pen_changePenHueBy":"change hue","block-switching/pen_changePenShadeBy":"change shade","block-switching/pen_changePenSizeBy":"change size","block-switching/pen_penDown":"pen down","block-switching/pen_penUp":"pen up","block-switching/pen_setPenColorParamTo":"set parameter","block-switching/pen_setPenHueToNumber":"set hue","block-switching/pen_setPenShadeToNumber":"set shade","block-switching/pen_setPenSizeTo":"set size","block-switching/sensing_coloristouchingcolor":"color touching color","block-switching/sensing_mousex":"mouse x","block-switching/sensing_mousey":"mouse y","block-switching/sensing_touchingcolor":"touching color","block-switching/sound_changeeffectby":"change effect","block-switching/sound_changevolumeby":"change volume","block-switching/sound_play":"start","block-switching/sound_playuntildone":"play until done","block-switching/sound_seteffectto":"set effect","block-switching/sound_setvolumeto":"set volume","blocks2image/error_blocks_not_added":"Add blocks to workspace!","blocks2image/export_all_to_PNG":"Export all as PNG","blocks2image/export_all_to_SVG":"Export all as SVG","blocks2image/export_selected_to_PNG":"Export block as PNG","blocks2image/export_selected_to_SVG":"Export block as SVG","editor-extra-keys/enter-key":"enter","move-to-top-bottom/bottom":"move to bottom","move-to-top-bottom/top":"move to top","rename-broadcasts/RENAME_BROADCAST":"Rename message","rename-broadcasts/RENAME_BROADCAST_MODAL_TITLE":"Rename Message","rename-broadcasts/RENAME_BROADCAST_TITLE":"Rename all \\"{name}\\" messages to:","swap-local-global/cant-convert-cloud":"Cloud variables can\'t be converted to this sprite only.","swap-local-global/cant-convert-conflict":"Can\'t convert because it would conflict with variables in another sprite: {sprites}","swap-local-global/cant-convert-stage":"The stage can\'t have variables for this sprite only.","swap-local-global/cant-convert-to-local":"Can\'t convert because it\'s used by multiple sprites: {sprites}","swap-local-global/cant-convert-used-elsewhere":"Can\'t convert because it\'s used by another sprite: {sprite}","swap-local-global/edit":"Edit properties:","swap-local-global/edit-list-header":"Edit List","swap-local-global/edit-list-option":"Rename or edit list","swap-local-global/edit-variable-header":"Edit Variable","swap-local-global/edit-variable-option":"Rename or edit variable","swap-local-global/to-global":"Convert to \\"For all sprites\\"","swap-local-global/to-local":"Convert to \\"For this sprite only\\"","hide-stage/hide-stage":"Hide stage"}')},1659:function(e,t,n){"use strict";t.a={de:()=>n.e(57).then(n.t.bind(null,1668,3)),es:()=>n.e(58).then(n.t.bind(null,1669,3)),fr:()=>n.e(59).then(n.t.bind(null,1670,3)),hu:()=>n.e(60).then(n.t.bind(null,1671,3)),it:()=>n.e(61).then(n.t.bind(null,1672,3)),ja:()=>n.e(62).then(n.t.bind(null,1673,3)),ko:()=>n.e(63).then(n.t.bind(null,1674,3)),nl:()=>n.e(64).then(n.t.bind(null,1675,3)),pl:()=>n.e(65).then(n.t.bind(null,1676,3)),pt:()=>n.e(66).then(n.t.bind(null,1677,3)),ro:()=>n.e(67).then(n.t.bind(null,1678,3)),ru:()=>n.e(68).then(n.t.bind(null,1679,3)),sl:()=>n.e(69).then(n.t.bind(null,1680,3)),tr:()=>n.e(70).then(n.t.bind(null,1681,3)),"zh-tw":()=>n.e(71).then(n.t.bind(null,1682,3))}},1660:function(e,t,n){"use strict";t.a={"cat-blocks":()=>n.e(10).then(n.bind(null,1779)),"editor-devtools":()=>n.e(4).then(n.bind(null,1762)),"find-bar":()=>n.e(4).then(n.bind(null,1772)),"middle-click-popup":()=>n.e(4).then(n.bind(null,1780)),"jump-to-def":()=>n(1777),"editor-searchable-dropdowns":()=>n.e(4).then(n.bind(null,1781)),"data-category-tweaks-v2":()=>n.e(16).then(n.bind(null,1782)),"block-palette-icons":()=>n.e(8).then(n.bind(null,1760)),"hide-flyout":()=>n.e(31).then(n.bind(null,1766)),mediarecorder:()=>n.e(36).then(n.bind(null,1783)),"drag-drop":()=>n(1778),debugger:()=>n.e(17).then(n.bind(null,1758)),pause:()=>n(1765),"mute-project":()=>n(1771),"vol-slider":()=>n.e(55).then(n.bind(null,1764)),clones:()=>n.e(11).then(n.bind(null,1767)),"mouse-pos":()=>n.e(37).then(n.bind(null,1784)),"color-picker":()=>n.e(4).then(n.bind(null,1773)),"remove-sprite-confirm":()=>n.e(43).then(n.bind(null,1785)),"block-count":()=>n.e(7).then(n.bind(null,1786)),"onion-skinning":()=>n.e(4).then(n.bind(null,1763)),"paint-snap":()=>n.e(41).then(n.bind(null,1759)),"default-costume-editor-color":()=>n.e(18).then(n.bind(null,1787)),"bitmap-copy":()=>n.e(4).then(n.bind(null,1788)),"2d-color-picker":()=>n.e(5).then(n.bind(null,1768)),"better-img-uploads":()=>n.e(6).then(n.bind(null,1774)),"pick-colors-from-stage":()=>n.e(4).then(n.bind(null,1789)),"custom-block-shape":()=>n.e(13).then(n.bind(null,1790)),"zebra-striping":()=>n.e(56).then(n.bind(null,1791)),"editor-theme3":()=>n.e(27).then(n.bind(null,1792)),"custom-block-text":()=>n.e(14).then(n.bind(null,1722)),"editor-colored-context-menus":()=>n.e(22).then(n.bind(null,1793)),"editor-stage-left":()=>n.e(25).then(n.bind(null,1794)),"editor-buttons-reverse-order":()=>n.e(21).then(n.bind(null,1727)),"variable-manager":()=>n.e(54).then(n.bind(null,1769)),"search-sprites":()=>n.e(45).then(n.bind(null,1795)),"sprite-properties":()=>n.e(46).then(n.bind(null,1770)),gamepad:()=>n.e(29).then(n.bind(null,1761)),"editor-sounds":()=>n.e(24).then(n.bind(null,1796)),folders:()=>n.e(4).then(n.bind(null,1775)),"block-switching":()=>n.e(4).then(n.bind(null,1797)),"load-extensions":()=>n.e(35).then(n.bind(null,1798)),"custom-zoom":()=>n.e(15).then(n.bind(null,1799)),"initialise-sprite-position":()=>n.e(34).then(n.bind(null,1800)),blocks2image:()=>n.e(9).then(n.bind(null,1801)),"remove-curved-stage-border":()=>n.e(42).then(n.bind(null,1738)),"transparent-orphans":()=>n.e(48).then(n.bind(null,1740)),"paint-by-default":()=>n.e(40).then(n.bind(null,1802)),"block-cherry-picking":()=>n.e(4).then(n.bind(null,1803)),"hide-new-variables":()=>n.e(32).then(n.bind(null,1804)),"editor-extra-keys":()=>n.e(23).then(n.bind(null,1805)),"hide-delete-button":()=>n.e(30).then(n.bind(null,1742)),"no-script-bumping":()=>n.e(38).then(n.bind(null,1806)),"disable-stage-drag-select":()=>n.e(20).then(n.bind(null,1807)),"move-to-top-bottom":()=>n.e(4).then(n.bind(null,1808)),"disable-paste-offset":()=>n.e(19).then(n.bind(null,1809)),"block-duplicate":()=>n.e(4).then(n.bind(null,1810)),"rename-broadcasts":()=>n.e(4).then(n.bind(null,1811)),"swap-local-global":()=>n.e(47).then(n.bind(null,1812)),"editor-comment-previews":()=>n.e(4).then(n.bind(null,1813)),columns:()=>n.e(12).then(n.bind(null,1814)),"number-pad":()=>n.e(39).then(n.bind(null,1815)),"script-snap":()=>n.e(44).then(n.bind(null,1816)),fullscreen:()=>n.e(28).then(n.bind(null,1817)),"hide-stage":()=>n.e(33).then(n.bind(null,1776)),"tw-straighten-comments":()=>n.e(53).then(n.bind(null,1818)),"tw-remove-backpack":()=>n.e(51).then(n.bind(null,1819)),"tw-remove-feedback":()=>n.e(52).then(n.bind(null,1756)),"tw-disable-cloud-variables":()=>n.e(49).then(n.bind(null,1820)),"tw-disable-compiler":()=>n.e(50).then(n.bind(null,1821)),"editor-stepping":()=>n.e(26).then(n.bind(null,1822))}},1661:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".pause-btn {\n width: 2rem;\n height: 2rem;\n padding: 0.375rem;\n border-radius: 0.25rem;\n user-select: none;\n user-drag: none;\n cursor: pointer;\n}\n\n.pause-btn:hover {\n background-color: hsla(0, 100%, 65%, 0.15);\n}\n",""])},1662:function(e,t,n){"use strict";function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t{e.classList.contains("sa-ctx-menu")&&e.remove()});for(const e of i?c.flatMap(e=>"function"==typeof e?e(u,g):e):c){if(!e)continue;if(e.types&&!e.types.some(e=>u===e))continue;if(e.condition&&!e.condition(g))continue;const t=document.createElement("div"),n=["context-menu_menu-item"];e.border&&n.push("context-menu_menu-item-bordered"),e.dangerous&&n.push("context-menu_menu-item-danger"),t.className=this.scratchClass(...n,{others:["react-contextmenu-item","sa-ctx-menu",e.className||""]});const o=document.createElement("span");o.textContent=e.label,t.append(o),this.displayNoneWhileDisabled(t,{display:"block"}),t.addEventListener("click",t=>{t.stopPropagation(),window.dispatchEvent(new CustomEvent("REACT_CONTEXTMENU_HIDE",{detail:{action:"REACT_CONTEXTMENU_HIDE"}})),e.callback(g)}),this.appendToSharedSpace({space:e.position,order:e.order,scope:p,element:t})}},d=e=>{a||(a=!0,document.body.addEventListener("contextmenu",t=>l.call(e,t),{capture:!0}))},u=(e,t,n)=>{void 0===n?(c.push(t),i=!0):c.push(s(s({},n),{},{callback:t})),d(e)}},1663:function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return l})),n.d(t,"c",(function(){return d}));var o=n(168),s=n.n(o),r=n(1664),a=n.n(r);const i=(e,t,{isOpen:n=!1}={})=>{const o=Object.assign(document.createElement("div"),{className:e.scratchClass("modal_modal-overlay"),dir:e.direction});o.style.display=n?"":"none",document.body.appendChild(o);const r=Object.assign(document.createElement("div"),{className:e.scratchClass("modal_modal-content")});r.addEventListener("click",e=>e.stopPropagation()),o.appendChild(r);const i=Object.assign(document.createElement("div"),{className:e.scratchClass("modal_header")});r.appendChild(i),i.appendChild(Object.assign(document.createElement("div"),{className:e.scratchClass("modal_header-item","modal_header-item-title"),innerText:t}));const c=Object.assign(document.createElement("div"),{className:e.scratchClass("modal_header-item","modal_header-item-close")});i.appendChild(c);const l=Object.assign(document.createElement("div"),{className:e.scratchClass("close-button_close-button","close-button_large")});c.appendChild(l),l.appendChild(Object.assign(document.createElement("img"),{className:e.scratchClass("close-button_close-icon"),src:s.a}));const d=Object.assign(document.createElement("div"),{className:a.a.modalContent});return r.appendChild(d),{container:r,content:d,backdrop:o,closeButton:l,open:()=>{o.style.display=""},close:()=>{o.style.display="none"},remove:o.remove.bind(o)}},c=e=>{const t=Object.assign(document.createElement("div"),{className:e.scratchClass("prompt_button-row")}),n=Object.assign(document.createElement("button"),{className:e.scratchClass("prompt_cancel-button"),innerText:e.scratchMessage("gui.prompt.cancel")});t.appendChild(n);const o=Object.assign(document.createElement("button"),{className:e.scratchClass("prompt_ok-button"),innerText:e.scratchMessage("gui.prompt.ok")});return t.appendChild(o),{buttonRow:t,cancelButton:n,okButton:o}},l=(e,t,n,{useEditorClasses:o=!1}={})=>{const{remove:s,container:r,content:a,backdrop:i,closeButton:l}=e.createModal(t,{isOpen:!0,useEditorClasses:o,useSizesClass:!0}),d=null!==e.editorMode&&o?"editor":e.clientVersion;"editor"===d&&(r.classList.add(e.scratchClass("prompt_modal-content")),a.classList.add(e.scratchClass("prompt_body"))),a.appendChild(Object.assign(document.createElement("div"),{className:e.scratchClass("prompt_label"),innerText:n}));const{buttonRow:u,cancelButton:p,okButton:h}=c(e);return a.appendChild(u),h.focus(),new Promise(e=>{const t=()=>{s(),e(!1)},n=()=>{s(),e(!0)};i.addEventListener("click",t),l.addEventListener("click",t),p.addEventListener("click",t),h.addEventListener("click",n),r.addEventListener("keydown",e=>{"Enter"===e.key&&n(),"Escape"===e.key&&t()})})},d=(e,t,n,o="",{useEditorClasses:s=!1}={})=>{const{remove:r,container:a,content:i,backdrop:l,closeButton:d}=e.createModal(t,{isOpen:!0,useEditorClasses:s,useSizesClass:!0});a.classList.add(e.scratchClass("prompt_modal-content")),i.classList.add(e.scratchClass("prompt_body")),i.appendChild(Object.assign(document.createElement("div"),{className:e.scratchClass("prompt_label"),innerText:n}));const u=Object.assign(document.createElement("input"),{className:e.scratchClass("prompt_variable-name-text-input"),value:o});i.appendChild(u),u.focus(),u.select();const{buttonRow:p,cancelButton:h,okButton:g}=c(e);return i.appendChild(p),new Promise(e=>{const t=()=>{r(),e(null)},n=()=>{r(),e(u.value)};l.addEventListener("click",t),d.addEventListener("click",t),h.addEventListener("click",t),g.addEventListener("click",n),a.addEventListener("keydown",e=>{"Enter"===e.key&&n(),"Escape"===e.key&&t()})})}},1664:function(e,t,n){var o=n(1665);"string"==typeof o&&(o=[[e.i,o,""]]);var s={hmr:!0,transform:void 0,insertInto:void 0};n(10)(o,s);o.locals&&(e.exports=o.locals)},1665:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'.modal_modal-content_fN1pD {\n background-color: white;\n color: #575e75;\n}\n[theme="dark"] .modal_modal-content_fN1pD {\n background-color: var(--ui-primary);\n color: var(--text-primary);\n}\n',""]),t.locals={"modal-content":"modal_modal-content_fN1pD",modalContent:"modal_modal-content_fN1pD"}},1666:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return r}));const o=document.createElement("div");o.style.display="none",document.body.appendChild(o);const s=new Map,r=()=>{for(const e of s.values())e.update()};class a{constructor(e){this.el=null,this.styleText=e,this.precedence=0,this.dependents=[],this.previousEnabledDependents=[]}addDependent(e,t,n){this.dependents.push([e,n]),t>this.precedence&&(this.precedence=t,this.el&&(this.el.dataset.precedence=t)),this.update()}getEnabledDependents(){const e=[];for(const[t,n]of this.dependents)n()&&e.push(t);return e}dependsOn(e){return this.dependents.some(t=>t[0]===e)}getElement(){if(!this.el){const e=document.createElement("style");e.className="scratch-addons-style",e.dataset.precedence=this.precedence,e.textContent=this.styleText,this.styleText=null,this.el=e}return this.el}update(){const e=this.getEnabledDependents();if(!((e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n0){const t=this.getElement();t.dataset.addons=e.join(",");for(const e of o.children){if((+e.dataset.precedence||0)>=this.precedence)return void o.insertBefore(t,e)}o.appendChild(t)}else this.el&&this.el.remove()}}const i=(e,t)=>{if(!s.get(e)){const n=new a(t);s.set(e,n)}return s.get(e)}},1667:function(e,t,n){"use strict";const o=["columns","editor-stage-left","editor-theme3"];t.a=e=>o.indexOf(e)+1},1765:function(e,t,n){"use strict";n.r(t),n.d(t,"resources",(function(){return r}));var o=n(1634),s=n(1661);const r={"userscript.js":async function({addon:e,console:t,msg:n}){Object(o.f)(e.tab.traps.vm);const s=document.createElement("img");s.className="pause-btn",s.draggable=!1,s.title=n("pause");const r=()=>s.src=e.self.getResource(Object(o.b)()?"/play.svg":"/pause.svg");for(s.addEventListener("click",()=>Object(o.e)(!Object(o.b)())),e.tab.displayNoneWhileDisabled(s),e.self.addEventListener("disabled",()=>Object(o.e)(!1)),r(),Object(o.c)(r);;)await e.tab.waitForElement("[class^='green-flag']",{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"]}),e.tab.appendToSharedSpace({space:"afterGreenFlag",element:s,order:0})},"style.css":n.n(s).a,"pause.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTgiIHdpZHRoPSIxOCI+PHBhdGggZD0iTTIzMS40MjkgMTg4LjkyOVYxNzEuMDdoNC4yODV2MTcuODU4em0xMi4xNDIgMFYxNzEuMDdoNC4yODZ2MTcuODU4eiIgdHJhbnNmb3JtPSJtYXRyaXgoMS4wMzMwOSAwIDAgLjk1NDI3IC0yMzguNTczIC0xNjIuNzY5KSIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsPSIjZmZhZTAwIiBzdHJva2U9IiNkODk0MDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOm5vcm1hbCIvPjwvc3ZnPg==","play.svg":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTgiIHdpZHRoPSIxOCI+PHBhdGggZD0ibTI0Ni4wNTUgMTgwLTEyLjExIDEyLjExdi0yNC4yMnoiIHRyYW5zZm9ybT0ibWF0cml4KDEuMTM5NDkgMCAwIC42Nzk0MyAtMjY0LjU5NSAtMTEzLjI5OCkiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlPSIjZDg5NDAwIiBmaWxsPSIjZmZhZTAwIiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iLz48L3N2Zz4="}},1771:function(e,t,n){"use strict";n.r(t),n.d(t,"resources",(function(){return s}));var o=n(1646);const s={"userscript.js":async function({addon:e,console:t}){const n=e.tab.traps.vm;Object(o.g)(n);const s=document.createElement("img");s.loading="lazy",s.src=e.self.getResource("/mute.svg"),s.className="sa-mute-project-icon",s.style.userSelect="none",e.tab.displayNoneWhileDisabled(s);const r=()=>{s.style.display=e.self.disabled||!Object(o.b)()?"none":""};Object(o.c)(r),r();const a=t=>{e.self.disabled||!t.ctrlKey&&!t.metaKey||(t.cancelBubble=!0,t.preventDefault(),Object(o.d)(!Object(o.b)()))};for(e.self.addEventListener("disabled",()=>{Object(o.b)()&&Object(o.d)(!1)});;){let t=await e.tab.waitForElement("[class^='green-flag_green-flag']",{markAsSeen:!0,reduxEvents:["scratch-gui/mode/SET_PLAYER","fontsLoaded/SET_FONTS_LOADED","scratch-gui/locales/SELECT_LOCALE"]});e.tab.appendToSharedSpace({space:"afterStopButton",element:s,order:0}),t.addEventListener("click",a),t.addEventListener("contextmenu",a)}},"mute.svg":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjBweCIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIDAgMjAgMjAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDU1LjIgKDc4MTgxKSAtIGh0dHBzOi8vc2tldGNoYXBwLmNvbSAtLT4KICAgIDx0aXRsZT5Tb3VuZC9FZmZlY3RzL011dGU8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iU291bmQvRWZmZWN0cy9NdXRlIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8cGF0aCBmaWxsPSIjQ0Y2M0NGIiBkPSJNMTMuNDU0MTc0OSw1LjA0ODE1MjQzIEwxNS42MjgxMTY4LDIuODc0MjEwNTQgQzE1LjkyMTAxLDIuNTgxMzE3MzIgMTYuMzk1ODgzNywyLjU4MTMxNzMyIDE2LjY4ODc3NywyLjg3NDIxMDU0IEMxNi45ODE2NzAyLDMuMTY3MTAzNzYgMTYuOTgxNjcwMiwzLjY0MTk3NzQ5IDE2LjY4ODc3NywzLjkzNDg3MDcxIEw0LjUzMDMzMDA5LDE2LjA5MzMxNzYgQzQuMjM3NDM2ODcsMTYuMzg2MjEwOCAzLjc2MjU2MzEzLDE2LjM4NjIxMDggMy40Njk2Njk5MSwxNi4wOTMzMTc2IEMzLjE3Njc3NjcsMTUuODAwNDI0NCAzLjE3Njc3NjcsMTUuMzI1NTUwNiAzLjQ2OTY2OTkxLDE1LjAzMjY1NzQgTDYuMzEyMTQ5MzIsMTIuMTkwMTc4IEM2LjEyNDExOTEsMTIuMDYyMTM3OSA2LDExLjg0NjMzMzEgNiwxMS42MDI5ODc1IEw2LDguNjM3NDg3NSBDNiw4LjI0NzExMjUgNi4zMTk0MTUyNyw3LjkyNzYxMjUgNi43MDk2ODY3NSw3LjkyNzYxMjUgTDcuMDI0NjAzMjIsNy45Mjc2MTI1IEM4Ljc1Nzc2ODQ4LDcuOTI3NjEyNSAxMC4yOTQxMTEsNi44MTM4NjI1IDEwLjgzMzk2NzgsNS4xNjY4NjI1IEMxMC45Mjk1Njc0LDQuODc0MzYyNSAxMS4yMDE3NDUyLDQuNjc3NDg3NSAxMS41MDc2NjQxLDQuNjc3NDg3NSBMMTIuODMxNDM3OSw0LjY3NzQ4NzUgQzEzLjEwMDI4NDQsNC42Nzc0ODc1IDEzLjMzNDEwNzUsNC44MjcxNzIwOCAxMy40NTQxNzQ5LDUuMDQ4MTUyNDMgWiBNMTMuNTQsOS4wODM2NDc3MSBMMTMuNTQsMTQuODUzMTEyNSBDMTMuNTQsMTUuMjQ1NzM3NSAxMy4yMjI4MzQxLDE1LjU2Mjk4NzUgMTIuODMxNDM3OSwxNS41NjI5ODc1IEwxMS41MDc2NjQxLDE1LjU2Mjk4NzUgQzExLjIwMTc0NTIsMTUuNTYyOTg3NSAxMC45Mjk1Njc0LDE1LjM2NjExMjUgMTAuODMzOTY3OCwxNS4wNzM2MTI1IEMxMC41NzczNzg1LDE0LjI5MDgwNzcgMTAuMDk1NjgxMywxMy42Mjg0NjUgOS40NzQ3MzUzMSwxMy4xNDg5MTI0IEwxMy41NCw5LjA4MzY0NzcxIFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+Cg=="}},1777:function(e,t,n){"use strict";n.r(t),n.d(t,"resources",(function(){return s}));var o=n(1643);const s={"userscript.js":async function({addon:e,msg:t,console:n}){const s=new o.a(e),r=await e.tab.traps.getBlockly();Object.defineProperty(r.Gesture.prototype,"jumpToDef",{get:()=>!e.self.disabled});const a=r.Gesture.prototype.doBlockClick_;r.Gesture.prototype.doBlockClick_=function(){if(!e.self.disabled&&(1===this.mostRecentEvent_.button||this.mostRecentEvent_.shiftKey)){let e=this.startBlock_;for(;e;e=e.getSurroundParent())if("procedures_call"===e.type){let t=e.getProcCode(),n=s.getWorkspace().getTopBlocks();for(const e of n)if("procedures_definition"===e.type){let n=e.getChildren()[0].getProcCode();if(n&&n===t)return void s.scrollBlockIntoView(e)}}}a.call(this)}}}},1778:function(e,t,n){"use strict";n.r(t),n.d(t,"resources",(function(){return o}));const o={"userscript.js":async function({addon:e,console:t}){let n=null;const o=new WeakMap,s=(e,t)=>{let n;o.has(e)?n=o.get(e):(n=e.animate([{},{backgroundColor:"hsla(0, 100%, 77%, 1)"}],{duration:250,fill:"forwards",easing:"ease"}),o.set(e,n)),n.playbackRate=t},r=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;document.addEventListener("dragover",o=>{if(e.self.disabled)return;if(!o.dataTransfer.types.includes("Files"))return;let a,i;if((a=o.target.closest('div[class*="sprite-selector_sprite-selector"]'))||(a=o.target.closest('div[class*="stage-selector_stage-selector"]'))||(a=o.target.closest('div[class*="selector_wrapper"]'))?i=t=>{const n=e.settings.get("use-hd-upload")?"":":not(.sa-better-img-uploads-input)",o=a.querySelector('input[class*="action-menu_file-input"]'+n);o.files=t,o.dispatchEvent(new Event("change",{bubbles:!0}))}:(a=o.target.closest('div[class*="monitor_list-monitor"]'))?i=e=>{const n=document.querySelector("body > .react-contextmenu.react-contextmenu--visible");a.dispatchEvent(new MouseEvent("contextmenu",{bubbles:!0}));const o=document.querySelector("body > .react-contextmenu.react-contextmenu--visible"),s=null===o?n:o;s.style.display="none";const r=document.body.appendChild;document.body.appendChild=n=>{if(document.body.appendChild=r,!(n instanceof HTMLInputElement))return t.error('File input was not immediately given to appendChild upon clicking "Import"!'),r(n);document.body.appendChild(n),n.click=()=>{},n.files=e,n.dispatchEvent(new Event("change")),window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{s.style.display=null,s.style.opacity=0,s.style.pointerEvents="none"})})},s.children[0].click()}:(a=o.target.closest('div[class*="question_question-input"] > input[class*="input_input-form_l9eYg"]'))&&(i=async e=>{const t=(await Promise.all(Array.from(e,e=>e.text()))).join("").replace(/[\r\n]+$/,"").replace(/\r?\n|\r/g," "),n=a.selectionStart;((e,t)=>{r.call(e,t),e.dispatchEvent(new Event("change",{bubbles:!0}))})(a,a.value.slice(0,n)+t+a.value.slice(a.selectionEnd)),a.setSelectionRange(n,n+t.length)}),!a)return;if(o.preventDefault(),a===n)return;n=a;const c=[a,a.querySelector('div[class*="stage-selector_header_"]'),a.querySelector('div[class*="sprite-info_sprite-info"]'),a.querySelector('div[class*="monitor_list-body"]')].filter(e=>e);for(const e of c)s(e,1);const l=e=>{e.preventDefault(),p(),e.dataTransfer.types.includes("Files")&&e.dataTransfer.files.length>0&&i(e.dataTransfer.files)},d=e=>{e.preventDefault(),e.dataTransfer.dropEffect="copy"};o.dataTransfer.dropEffect="copy";const u=e=>{e.preventDefault(),p()},p=()=>{n=null,a.removeEventListener("dragover",d),a.removeEventListener("dragleave",u),a.removeEventListener("drop",l);for(const e of c)s(e,-1)};a.addEventListener("dragover",d),a.addEventListener("dragleave",u),a.addEventListener("drop",l)},{useCapture:!0})}}},886:function(e,t){Blob.prototype.text||(Blob.prototype.text=function(){return new Promise((e,t)=>{const n=new FileReader;n.onload=()=>e(n.result),n.onerror=()=>t(new Error("Cannot read blob as text")),n.readAsText(this)})}),Array.prototype.flat||(Array.prototype.flat=function(e=1){const t=[];for(const n of this)if(Array.isArray(n))if(e<1)t.push(n);else for(const o of n.flat(e-1))t.push(o);else t.push(n);return t}),"function"!=typeof queueMicrotask&&(window.queueMicrotask=e=>{Promise.resolve().then(e)})}}]); \ No newline at end of file diff --git a/js/credits.e29bf294595c69cbcae3.js b/js/credits.e29bf294595c69cbcae3.js new file mode 100644 index 0000000..d329cfa --- /dev/null +++ b/js/credits.e29bf294595c69cbcae3.js @@ -0,0 +1 @@ +var GUI=function(e){function r(r){for(var t,i,s=r[0],l=r[1],c=r[2],d=0,m=[];d{for(let r=e.length-1;r>0;r--){const n=Math.floor(Math.random()*(r+1)),t=e[r];e[r]=e[n],e[n]=t}return e})([{userId:"34018398",username:"Jeffalo"},{userId:"64184234",username:"ErrorGamer2000"},{userId:"41616512",username:"pufferfish101007"},{userId:"61409215",username:"TheColaber"},{userId:"1882674",username:"griffpatch"},{userId:"10817178",username:"apple502j"},{userId:"16947341",username:"--Explosion--"},{userId:"14880401",username:"Sheep_maker"},{userId:"9981676",username:"NitroCipher"},{userId:"2561680",username:"lisa_wolfgang"},{userId:"60000111",username:"GDUcrash"},{userId:"4648559",username:"World_Languages"},{userId:"17340565",username:"GarboMuffin"},{userId:"5354974",username:"Chrome_Cat"},{userId:"0",username:"summerscar"},{userId:"55742784",username:"RedGuy7"},{userId:"9636514",username:"Tacodude7729"},{userId:"14792872",username:"_nix"},{userId:"30323614",username:"BarelySmooth"},{userId:"64691048",username:"CST1229"}].map(({userId:e,username:r,name:n})=>({image:"https://trampoline.turbowarp.org/avatars/".concat(e),href:"https://scratch.mit.edu/users/".concat(r,"/"),text:n||r})))};function p(){return(p=Object.assign||function(e){for(var r=1;ra.a.createElement("a",{href:n,target:"_blank",rel:"noreferrer",className:d.a.user},a.a.createElement("img",{className:d.a.userImage,src:e,width:"60",height:"60"}),a.a.createElement("div",{className:d.a.userInfo},r));b.propTypes={image:l.a.string.isRequired,text:l.a.string.isRequired,href:l.a.string};const g=({users:e})=>a.a.createElement("div",{className:d.a.users},e.map((e,r)=>a.a.createElement(b,p({key:r},e))));g.propTypes={users:l.a.arrayOf(l.a.object)};const y=()=>a.a.createElement("main",{className:d.a.main},a.a.createElement("header",{className:d.a.headerContainer},a.a.createElement("h1",{className:d.a.headerText},"TurboWarp Credits")),a.a.createElement("section",null,a.a.createElement("p",null,"The TurboWarp project is made possible by the work of many volunteers.")),a.a.createElement("section",null,a.a.createElement("h2",null,"Scratch"),a.a.createElement("p",null,"TurboWarp is based on the work of the ",a.a.createElement("a",{href:"https://scratch.mit.edu/credits"},"Scratch contributors")," but is not endorsed by Scratch in any way."),a.a.createElement("p",null,a.a.createElement("a",{href:"https://scratch.mit.edu/donate"},"Donate to support Scratch."))),a.a.createElement("section",null,a.a.createElement("h2",null,"Addons"),a.a.createElement(g,{users:h.addonDevelopers})),a.a.createElement("section",null,a.a.createElement("h2",null,"Translators"),a.a.createElement("p",null,"More than 100 people have helped translate TurboWarp and its addons into many languages — far more than we could hope to list here.")),a.a.createElement("section",null,a.a.createElement("p",null,a.a.createElement("i",null,"Individual contributors are listed in no particular order. The order is randomized each visit."))));document.body.setAttribute("theme",Object(m.b)()?"dark":"light"),i.a.render(a.a.createElement(y,null),c.a)},186:function(e,r,n){var t=n(1624);"string"==typeof t&&(t=[[e.i,t,""]]);var a={hmr:!0,transform:void 0,insertInto:void 0};n(10)(t,a);t.locals&&(e.exports=t.locals)},73:function(e,r,n){"use strict";const t=document.getElementById("app");for(;t.firstChild;)t.removeChild(t.firstChild);document.body.classList.add("tw-loaded"),r.a=t},96:function(e,r,n){"use strict";n.d(r,"b",(function(){return c})),n.d(r,"a",(function(){return d}));var t=n(1),a=n.n(t),o=n(97),i=n.n(o);function s(){return(s=Object.assign||function(e){for(var r=1;r{try{const e=localStorage.getItem("tw:theme");if(null!==e)return"dark"===e}catch(e){}return l.matches},u=document.createElement("style");u.textContent=i.a;const d=function(e){class r extends a.a.Component{constructor(e){super(e),this.handleQueryChange=this.handleQueryChange.bind(this),this.handleClickTheme=this.handleClickTheme.bind(this),this.state={dark:c()}}componentDidMount(){l.addEventListener&&l.addEventListener("change",this.handleQueryChange),this.updateDark()}componentDidUpdate(){try{localStorage.setItem("tw:theme",this.state.dark?"dark":"light")}catch(e){}this.updateDark()}componentWillUnmount(){l.removeEventListener&&l.removeEventListener("change",this.handleQueryChange)}updateDark(){const e=this.state.dark;document.body.setAttribute("theme",e?"dark":"light"),e&&!u.parentNode?document.body.insertBefore(u,document.body.firstChild):!e&&u.parentNode&&u.parentNode.removeChild(u)}handleQueryChange(){this.setState({dark:l.matches})}handleClickTheme(){this.setState(e=>({dark:!e.dark}))}render(){return a.a.createElement(e,s({onClickTheme:this.handleClickTheme,isDark:this.state.dark},this.props))}}return r}},97:function(e,r){e.exports='/* GUI */\n:root {\n background: #111;\n color: #eee;\n color-scheme: dark;\n /* see colors.csss */\n --ui-primary: rgb(17, 17, 17);\n --ui-secondary: rgb(30, 30, 30);\n --ui-tertiary: rgb(46, 46, 46);\n --ui-modal-overlay: #333a;\n --ui-black-transparent: rgba(255, 255, 255, 0.15);\n --text-primary: #eee;\n /* scratch-paint */\n --paint-ui-pane-border: var(--ui-black-transparent);\n --paint-text-primary: #eee;\n --paint-form-border: var(--ui-black-transparent);\n}\n\n/* Blockly */\n.blocklySvg {\n background-color: var(--ui-secondary) !important;\n color-scheme: light;\n}\n[id^="blocklyGridPattern"] > line {\n stroke: #484848;\n}\n.blocklyFlyoutBackground {\n fill: #111;\n}\n.blocklyFlyoutLabelText {\n fill: #ccc;\n}\n.blocklyFlyoutButton .blocklyText {\n fill: #ccc;\n}\n.blocklyFlyoutButton:hover {\n fill: #111;\n}\n/* blocklyFlyoutCheckboxPath stroke and blocklyFlyoutCheckbox fill must match */\n.blocklyFlyoutCheckboxPath {\n stroke: #111;\n}\n.blocklyFlyoutCheckbox {\n fill: #111;\n}\n.checked > .blocklyFlyoutCheckbox {\n stroke: #a1c6fa;\n}\n.checked > .blocklyFlyoutCheckboxPath {\n stroke: white;\n}\n.scratchCategoryMenu {\n color: #ccc;\n}\n.blocklyToolboxDiv,\n.scratchCategoryMenu {\n background: #111 !important;\n}\n.blocklyScrollbarHandle {\n fill: #666;\n}\n.blocklyZoom {\n filter: invert(100%);\n}\n.scratchCategoryMenuItem.categorySelected {\n background: var(--ui-secondary);\n}\n.valueReportBox {\n color: black;\n}\n.blocklyWidgetDiv {\n color-scheme: light;\n}\n.blocklyWidgetDiv .goog-menu {\n background: var(--ui-primary);\n border-color: var(--ui-black-transparent);\n}\n.blocklyWidgetDiv .goog-menuitem {\n color: var(--text-primary);\n}\n.blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-content {\n color: #666 !important;\n}\n.sa-blockly-menu-item-border {\n border-top-color: var(--ui-black-transparent) !important;\n}\n.blocklyWidgetDiv .goog-menuitem.goog-menuitem-highlight {\n background-color: var(--ui-tertiary);\n border-color: transparent; /* remove border */\n}\n.scratchCommentText {\n color: black;\n}\n.blocklyInsertionMarker > .blocklyPath {\n fill: #ccc;\n}\n\n/* Other / Multipurpose */\n.Popover {\n /* weird Chrome bug displays white bar above popovers with color-scheme: dark */\n color-scheme: light;\n}\n.Popover-body {\n background: var(--ui-secondary);\n border-color: var(--ui-black-transparent);\n color: var(--text-primary);\n}\n.Popover-tipShape {\n fill: var(--ui-secondary);\n stroke: var(--ui-black-transparent);\n}\n'}}); \ No newline at end of file diff --git a/js/editor.8dee5410f9fb38d9a09f.js b/js/editor.8dee5410f9fb38d9a09f.js new file mode 100644 index 0000000..e56c01a --- /dev/null +++ b/js/editor.8dee5410f9fb38d9a09f.js @@ -0,0 +1 @@ +var GUI=function(e){function t(t){for(var o,i,s=t[0],c=t[1],d=t[2],u=0,p=[];u=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}const j=function(e){class t extends c.a.Component{constructor(e){super(e),this.handleClickPackager=this.handleClickPackager.bind(this),this.handleMessage=this.handleMessage.bind(this)}componentDidMount(){window.addEventListener("message",this.handleMessage)}componentWillUnmount(){window.removeEventListener("message",this.handleMessage)}handleClickPackager(){this.props.canOpenPackager&&window.open("".concat("https://packager.turbowarp.org","/?import_from=").concat(location.origin))}handleMessage(e){if("https://packager.turbowarp.org"!==e.origin)return;if(!this.props.canOpenPackager)return;"ready-for-import"===e.data.p4.type&&(e.source.postMessage({p4:{type:"start-import"}},e.origin),this.props.vm.saveProjectSb3("arraybuffer").then(t=>{const n="".concat(this.props.reduxProjectTitle,".sb3");e.source.postMessage({p4:{type:"finish-import",data:t,name:n}},e.origin,[t])}).catch(t=>{w.default.error(t),e.source.postMessage({p4:{type:"cancel-import"}},e.origin)}))}render(){const t=this.props,{canOpenPackager:n}=t,o=k(t,y);return c.a.createElement(e,_({onClickPackager:this.handleClickPackager},o))}}t.propTypes={canOpenPackager:i.a.bool,reduxProjectTitle:i.a.string,vm:i.a.shape({saveProjectSb3:i.a.func})};return Object(d.b)(e=>({canOpenPackager:Object(p.r)(e.scratchGui.projectState.loadingState),reduxProjectTitle:e.scratchGui.projectTitle,vm:e.scratchGui.vm}),()=>({}))(t)};var x=n(53);const E=history.replaceState;history.replaceState=function(...e){try{return E.call(this,...e)}catch(e){w.default.error(e)}};const C=history.pushState;history.pushState=function(...e){try{return C.call(this,...e)}catch(e){w.default.error(e)}};var O=n(175),P=n(176),S=n(5),T=n.n(S),I=n(70),F=n.n(I),N=n(123),A=n.n(N),H=n(98);const M=Object(u.g)({tooltip:{id:"tw.input.tooltip",defaultMessage:"Copy and paste a Scratch project link here!"}});class L extends c.a.Component{constructor(e){super(e),T()(this,["handleKeyDown","handleChange","handleBlur","handleFocus","inputRef","tooltipRef"]),this.state={projectId:this.props.projectId}}componentDidUpdate(e){this.props.projectId!==e.projectId&&(this.props.projectId===p.e?(this.input.focus(),this.input.selectionStart=this.input.value.length):this.input.blur(),this.setState({projectId:this.props.projectId}))}extractProjectId(e){const t=e.match(/\d+/);return t?t[0]:null}readProjectId(e){return this.extractProjectId(e.target.value)||p.e}handleKeyDown(e){"Enter"===e.key&&this.state.projectId&&this.input.blur()}handleChange(e){this.setState({projectId:this.readProjectId(e)||p.e})}handleBlur(){this.state.projectId&&this.state.projectId!==this.props.projectId&&this.props.setProjectId(this.state.projectId),F.a.hide(this.tooltip)}handleFocus(e){this.extractProjectId(e.target.value)&&e.target.select(),F.a.show(this.tooltip)}inputRef(e){this.input=e}tooltipRef(e){this.tooltip=e}render(){const e=this.state.projectId===p.e?"":this.state.projectId||"";return c.a.createElement("div",{ref:this.tooltipRef,"data-tip":this.props.intl.formatMessage(M.tooltip)},c.a.createElement(F.a,{className:A.a.tooltip,effect:"solid"}),c.a.createElement("input",{ref:this.inputRef,spellCheck:"false",type:"text",value:"".concat("https://scratch.mit.edu/projects/").concat(e),className:A.a.input,onKeyDown:this.handleKeyDown,onChange:this.handleChange,onBlur:this.handleBlur,onFocus:this.handleFocus}))}}L.propTypes={intl:u.i,projectId:i.a.string,setProjectId:i.a.func};var D=Object(u.h)(Object(d.b)(e=>({projectId:e.scratchGui.projectState.projectId}),e=>({setProjectId:t=>Object(H.a)(e,t)}))(L)),U=n(26),R=n.n(U),B=function(e){this.studioId=e,this.offset=0,this.ended=!1,this.loadingPage=!1,this.unusedPlaceholders=[],this.root=document.createElement("div"),this.root.className=R.a.studioviewRoot,this.projectList=document.createElement("div"),this.projectList.className=R.a.studioviewList,this.root.appendChild(this.projectList),"IntersectionObserver"in window?(this.intersectionObserver=new IntersectionObserver(this.handleIntersection.bind(this),{root:this.projectList}),this.loadNextPageObserver=new IntersectionObserver(this.handleLoadNextPageIntersection.bind(this),{root:this.projectList})):(this.intersectionObserver=null,this.loadNextPageObserver=null),this.messages={AUTHOR_ATTRIBUTION:"",PROJECT_HOVER_TEXT:"",LOAD_ERROR:""}};B.prototype.addProject=function(e){var t;this.unusedPlaceholders.length?t=this.unusedPlaceholders.shift():(t=this.createPlaceholder(),this.projectList.appendChild(t)),this.placeholderToProject(t,e.id,e.title,e.author)},B.prototype.createLazyImage=function(e){var t=document.createElement("img");return this.intersectionObserver?(this.intersectionObserver.observe(t),t.dataset.src=e):t.src=e,t},B.prototype.createPlaceholder=function(){var e=document.createElement("a");e.className=r()(R.a.studioviewProject,R.a.studioviewPlaceholder);var t=document.createElement("div");t.className=R.a.studioviewThumbnail;var n=document.createElement("div");n.className=R.a.studioviewTitle;var o=document.createElement("div");return o.className=R.a.studioviewAuthor,e.thumbnailEl=t,e.titleEl=n,e.authorEl=o,e.appendChild(t),e.appendChild(n),e.appendChild(o),e},B.prototype.placeholderToProject=function(e,t,n,o){e.className=r()(R.a.studioviewProject,R.a.studioviewLoaded),e.dataset.id=t,e.dataset.title=n,e.dataset.author=o,e.title=this.messages.PROJECT_HOVER_TEXT.replace("$author",o).replace("$title",n),e.href=B.PROJECT_PAGE.replace("$id",t);var a=B.THUMBNAIL_SRC.replace("$id",t),i=this.createLazyImage(a);return e.thumbnailEl.appendChild(i),e.titleEl.innerText=n,e.authorEl.innerText=this.messages.AUTHOR_ATTRIBUTION.replace("$author",o),e.addEventListener("click",this.handleClick.bind(this),!0),e.addEventListener("keydown",this.handleKeyDown.bind(this),!0),e},B.prototype.addErrorElement=function(){var e=document.createElement("div");e.innerText=this.messages.LOAD_ERROR,e.className=R.a.studioviewError,this.projectList.appendChild(e)},B.prototype.handleLoadNextPageIntersection=function(e){for(var t=0;t({projectId:e.scratchGui.projectState.projectId}),e=>({setProjectId:t=>Object(H.a)(e,t)}))($),Q=n(65),Z=n.n(Q),X=n(102),Y=n.n(X);const ee=e=>{e=Y()(e,/@([\w-]+)/,(e,t)=>c.a.createElement("a",{href:"https://scratch.mit.edu/users/".concat(e,"/"),rel:"noreferrer",key:e+t},"@".concat(e)));return e=Y()(e,/(https?:\/\/[\w\d_\-.]{1,256}(?:\/(?:\S*[\w:/#[\]@$&'()*+=])?)?(?![^?!,:;\w\s]\S))/g,(e,t)=>c.a.createElement("a",{href:e,rel:"noreferrer",key:e+t},e)),e=Y()(e,/#([\w-]+)/g,(e,t)=>c.a.createElement("a",{href:"https://scratch.mit.edu/search/projects?q=".concat(e),key:e+t},"#".concat(e)))},te=({instructions:e,credits:t,projectId:n})=>"unshared"!==e&&"unshared"!==t&&c.a.createElement("div",{className:Z.a.description},c.a.createElement("div",{className:Z.a.projectLink},c.a.createElement("a",{href:"https://scratch.mit.edu/projects/".concat(n,"/"),target:"_blank",rel:"noreferrer"},c.a.createElement(u.b,{defaultMessage:"View project on Scratch",id:"tw.viewOnScratch"}))),e?c.a.createElement("div",null,c.a.createElement("h2",{className:Z.a.header},c.a.createElement(u.b,{defaultMessage:"Instructions",id:"tw.home.instructions"})),ee(e)):null,e&&t?c.a.createElement("div",{className:Z.a.divider}):null,t&&c.a.createElement("div",null,c.a.createElement("h2",{className:Z.a.header},c.a.createElement(u.b,{defaultMessage:"Notes and Credits",id:"tw.home.credit"})),ee(t)));te.propTypes={instructions:i.a.string,credits:i.a.string,projectId:i.a.string};var ne=te,oe=n(173),re=n(25),ae=n(161),ie=n.n(ae),se=n(49),ce=n.n(se);class de extends c.a.Component{constructor(e){super(e),T()(this,["handleClick"])}handleClick(){this.props.onClick(this.props.cloudHost)}render(){return c.a.createElement("button",{className:r()(ce.a.server,{[ce.a.selected]:this.props.selected}),onClick:this.handleClick,title:this.props.cloudHost},this.props.name)}}de.propTypes={cloudHost:i.a.string,name:i.a.string,selected:i.a.bool,onClick:i.a.func};var le=de,ue=n(83);const pe=[{name:"US East",cloudHost:"wss://clouddata.turbowarp.org"},{name:"EU",cloudHost:"wss://clouddata-eu.turbowarp.org",provider:{name:"9gr",href:"https://scratch.mit.edu/users/9gr/"}}],he=e=>{const t=pe.find(t=>t.cloudHost===e.cloudHost);return c.a.createElement("div",{className:ce.a.badge},c.a.createElement("div",{className:ce.a.title},c.a.createElement("img",{className:ce.a.cloudIcon,src:ie.a,alt:"",width:32,height:32}),c.a.createElement(u.b,{defaultMessage:"This project uses cloud variables.",id:"tw.usesCloudVariables"})),c.a.createElement(u.b,{defaultMessage:"{APP_NAME}'s cloud variables are not connected to Scratch's. Anyone can {changeTheirUsername} to anything, so beware of impersonation.",id:"tw.usesCloudVariables2",values:{APP_NAME:ue.a,changeTheirUsername:c.a.createElement("a",{onClick:e.onOpenChangeUsername},c.a.createElement(u.b,{defaultMessage:"change their username",id:"tw.usesCloudVariables2.change"}))}}),t?c.a.createElement("div",{className:ce.a.servers},c.a.createElement(u.b,{defaultMessage:"Pick a server near you:",id:"tw.cloudServers"}),pe.map(t=>c.a.createElement(le,{key:t.ws,name:t.name,cloudHost:t.cloudHost,selected:e.cloudHost===t.cloudHost,onClick:e.onSetCloudHost}))):c.a.createElement(u.b,{defaultMessage:"Using a custom cloud variable server: {server}",id:"tw.customCloudServer",values:{server:e.cloudHost}}),t&&t.provider&&c.a.createElement(u.b,{defaultMessage:"Server provided by {name}.",id:"tw.cloudProvider",values:{name:c.a.createElement("a",{href:t.provider.href,target:"_blank",rel:"noreferrer"},t.provider.name)}}),c.a.createElement("a",{target:"_blank",rel:"noreferrer",href:"https://docs.turbowarp.org/cloud-variables"},c.a.createElement(u.b,{defaultMessage:"Learn more about cloud variables.",id:"tw.moreCloud"})))};he.propTypes={cloudHost:i.a.string,onSetCloudHost:i.a.func,onOpenChangeUsername:i.a.func};var fe=he,be=n(15);class me extends c.a.Component{constructor(e){super(e),T()(this,["handleChangeCloudHost"])}handleChangeCloudHost(e){this.props.onSetCloudHost(e)}render(){return c.a.createElement(fe,{cloudHost:this.props.cloudHost,onSetCloudHost:this.handleChangeCloudHost,onOpenChangeUsername:this.props.onOpenChangeUsername})}}me.propTypes={cloudHost:i.a.string,onSetCloudHost:i.a.func,onOpenChangeUsername:i.a.func};var ve=Object(d.b)(e=>({cloudHost:e.scratchGui.tw.cloudHost}),e=>({onSetCloudHost:t=>e(Object(re.f)(t)),onOpenChangeUsername:()=>e(Object(be.E)())}))(me),ge=n(106),we=n(52);n(162);var ye=n(174),_e=n(19),ke=n.n(_e);const je=["intl","hasCloudVariables","description","isFullScreen","isLoading","isPlayerOnly","isRtl","onClickTheme","projectId"];function xe(){return(xe=Object.assign||function(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}if(window.parent!==window)throw alert("This page contains an invalid TurboWarp embed. Please read https://docs.turbowarp.org/embedding for instructions to create a working embed."),new Error("Invalid embed");const Ce=()=>{window.open("".concat("").concat("addons.html"))},Oe=Object(u.g)({defaultTitle:{id:"tw.guiDefaultTitle",defaultMessage:"Run Scratch projects faster"}}),Pe=Object(l.d)(g.a,j)(P.a);we.a.reloadChannel&&we.a.reloadChannel.addEventListener("message",()=>{location.reload()}),we.a.changeChannel&&we.a.changeChannel.addEventListener("message",e=>{x.a.setStoreWithVersionCheck(e.data)}),Object(ye.a)();const Se=()=>c.a.createElement("footer",{className:ke.a.footer},c.a.createElement("div",{className:ke.a.footerContent},c.a.createElement("div",{className:ke.a.footerText},c.a.createElement(u.b,{defaultMessage:"TurboWarp is not affiliated with Scratch, the Scratch Team, or the Scratch Foundation.",id:"tw.footer.disclaimer"})),c.a.createElement("div",{className:ke.a.footerColumns},c.a.createElement("div",{className:ke.a.footerSection},c.a.createElement("a",{href:"credits.html"},c.a.createElement(u.b,{defaultMessage:"Credits",id:"tw.footer.credits"})),c.a.createElement("a",{href:"https://github.com/sponsors/GarboMuffin"},c.a.createElement(u.b,{defaultMessage:"Donate",id:"tw.footer.donate"}))),c.a.createElement("div",{className:ke.a.footerSection},c.a.createElement("a",{href:"https://desktop.turbowarp.org/"},"TurboWarp Desktop"),c.a.createElement("a",{href:"https://packager.turbowarp.org/"},"TurboWarp Packager"),c.a.createElement("a",{href:"https://docs.turbowarp.org/embedding"},c.a.createElement(u.b,{defaultMessage:"Embedding",id:"tw.footer.embed"})),c.a.createElement("a",{href:"https://docs.turbowarp.org/url-parameters"},c.a.createElement(u.b,{defaultMessage:"URL Parameters",id:"tw.footer.parameters"})),c.a.createElement("a",{href:"https://docs.turbowarp.org/"},c.a.createElement(u.b,{defaultMessage:"Documentation",id:"tw.footer.documentation"}))),c.a.createElement("div",{className:ke.a.footerSection},c.a.createElement("a",{href:"https://scratch.mit.edu/users/GarboMuffin/#comments"},c.a.createElement(u.b,{defaultMessage:"Feedback & Bugs",id:"tw.feedback"})),c.a.createElement("a",{href:"https://github.com/TurboWarp/"},c.a.createElement(u.b,{defaultMessage:"Source Code",id:"tw.code"})),c.a.createElement("a",{href:"privacy.html"},c.a.createElement(u.b,{defaultMessage:"Privacy Policy",id:"tw.privacy"}))))));class Te extends c.a.Component{constructor(e){super(e),this.handleUpdateProjectTitle=this.handleUpdateProjectTitle.bind(this)}componentDidUpdate(e){e.isLoading&&this.props.isLoading}handleUpdateProjectTitle(e,t){document.title=t||!e?"TurboWarp - ".concat(this.props.intl.formatMessage(Oe.defaultTitle)):"".concat(e," - TurboWarp")}render(){const e=this.props,{intl:t,hasCloudVariables:n,description:o,isFullScreen:a,isLoading:i,isPlayerOnly:s,isRtl:d,onClickTheme:l,projectId:p}=e,h=Ee(e,je),f=s&&!a,b=!s;return c.a.createElement("div",{className:r()(ke.a.container,{[ke.a.playerOnly]:f,[ke.a.editor]:b})},f?c.a.createElement("div",{className:ke.a.menu},c.a.createElement(Pe,{canChangeLanguage:!0,canManageFiles:!0,enableSeeInside:!0,onClickAddonSettings:Ce,onClickTheme:l})):null,c.a.createElement("div",{className:ke.a.center,style:s?{width:"".concat(Math.max(480,h.customStageSize.width)+2,"px")}:null},null,c.a.createElement(O.a,xe({onClickAddonSettings:Ce,onClickTheme:l,onUpdateProjectTitle:this.handleUpdateProjectTitle,backpackVisible:!0,backpackHost:"_local_"},h)),f?c.a.createElement(c.a.Fragment,null,Object(ge.a)()?null:c.a.createElement(oe.a,{isRtl:d}),c.a.createElement("div",{className:ke.a.section},c.a.createElement(D,null)),("unshared"===o.instructions||"unshared"===o.credits)&&c.a.createElement("div",{className:r()(ke.a.infobox,ke.a.unsharedUpdate)},c.a.createElement("p",null,c.a.createElement(u.b,{defaultMessage:"Unshared projects are no longer visible.",id:"tw.unshared2.1"})),c.a.createElement("p",null,c.a.createElement(u.b,{defaultMessage:"For more information, visit: {link}",id:"tw.unshared.2",values:{link:c.a.createElement("a",{href:"https://docs.turbowarp.org/unshared-projects",target:"_blank",rel:"noopener noreferrer"},"https://docs.turbowarp.org/unshared-projects")}})),c.a.createElement("p",null,c.a.createElement(u.b,{defaultMessage:"If the project was shared recently, this message may appear incorrectly for a few minutes.",id:"tw.unshared.cache"})),c.a.createElement("p",null,c.a.createElement(u.b,{defaultMessage:"If this project is actually shared, please report a bug.",id:"tw.unshared.bug"}))),n&&"0"!==p&&c.a.createElement("div",{className:ke.a.section},c.a.createElement(ve,null)),o.instructions||o.credits?c.a.createElement("div",{className:ke.a.section},c.a.createElement(ne,{instructions:o.instructions,credits:o.credits,projectId:p})):null,c.a.createElement("div",{className:ke.a.section},c.a.createElement("p",null,c.a.createElement(u.b,{defaultMessage:"TurboWarp is a Scratch mod that compiles projects to JavaScript to make them run really fast. Try it out by inputting a project ID or URL above or choosing a featured project below.",id:"tw.home.description"}))),c.a.createElement("div",{className:ke.a.section},c.a.createElement(q,{studio:"27205657"}))):null),f&&c.a.createElement(Se,null))}}Te.propTypes={intl:u.i,hasCloudVariables:i.a.bool,customStageSize:i.a.shape({width:i.a.number,height:i.a.number}),description:i.a.shape({credits:i.a.string,instructions:i.a.string}),isFullScreen:i.a.bool,isLoading:i.a.bool,isPlayerOnly:i.a.bool,isRtl:i.a.bool,onClickTheme:i.a.func,projectId:i.a.string};const Ie=Object(u.h)(Object(d.b)(e=>({hasCloudVariables:e.scratchGui.tw.hasCloudVariables,customStageSize:e.scratchGui.customStageSize,description:e.scratchGui.tw.description,isFullScreen:e.scratchGui.mode.isFullScreen,isLoading:Object(p.m)(e.scratchGui.projectState.loadingState),isPlayerOnly:e.scratchGui.mode.isPlayerOnly,isRtl:e.locales.isRtl,projectId:e.scratchGui.projectState.projectId}),()=>({}))(Te)),Fe=Object(l.d)(h.a,Object(f.a)("TW Interface"),b.a,m.a,v.a,j)(Ie);t.a=Fe},19:function(e,t,n){var o=n(279);"string"==typeof o&&(o=[[e.i,o,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(10)(o,r);o.locals&&(e.exports=o.locals)},255:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/ /* Toolbox z-index: 40; set in scratch-blocks */ /* tooltips should go over add buttons if they overlap */ /* monitors go over add buttons */ /* "ask" block text input goes above monitors */ /* menu-bar should go over monitors, alerts and tutorials */ /* tw: show below menu bar normally */ /* Block drag z-index: 1000; default 50 is overriden in blocks.css */ /* so it is draggable into other panes */ /* in most interfaces, the context menu is always on top */ .project-input_input_1E6Af {\n border: none;\n width: 100%;\n font-size: 23px;\n line-height: 32px;\n opacity: 0.5;\n background-color: transparent;\n color: inherit;\n} .project-input_input_1E6Af:focus {\n opacity: 1;\n} .project-input_input_1E6Af:disabled {\n opacity: 0.8;\n} .project-input_tooltip_3_EoA {\n opacity: 1 !important;\n background-color: hsla(10, 85%, 65%, 1) !important;\n border: 1px solid hsla(0, 0%, 0%, .1) !important;\n box-shadow: 0 0 .5rem hsla(0, 0%, 0%, .25) !important;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important;\n border: 1px solid hsla(0, 0%, 0%, .1) !important;\n z-index: 491 !important;\n} .project-input_tooltip_3_EoA:after {\n border-top-color: hsla(10, 85%, 65%, 1) !important;\n}\n',""]),t.locals={input:"project-input_input_1E6Af",tooltip:"project-input_tooltip_3_EoA"}},256:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/*\nImported from:\nhttps://github.com/forkphorus/forkphorus/tree/master/studioview\nWith changes to make it work properly in the scratch-gui environment.\n*/\n\n/* we wrap it in a
*/\n\n.studioview_wrapper_1SFBd {\n height: 100%;\n}\n\n/* fix some styles that can be messed up by scratch-gui */\n\n.studioview_studioview-root_1OP-i * {\n box-sizing: content-box !important;\n}\n\n.studioview_studioview-root_1OP-i {\n height: 100%;\n}\n\n.studioview_studioview-list_2hIxk {\n width: 100%;\n height: 100%;\n overflow-y: scroll;\n overflow-anchor: none;\n}\n\n.studioview_studioview-project_IDotv, .studioview_studioview-placeholder_KKHo9 {\n display: inline-block;\n width: 144px;\n padding: 3px;\n margin-bottom: 1px;\n margin-right: 1px;\n}\n\n.studioview_studioview-root_1OP-i .studioview_studioview-project_IDotv {\n color: inherit;\n position: relative;\n text-decoration: none;\n}\n\n.studioview_studioview-loaded_3UCil:hover::before, .studioview_studioview-loaded_3UCil:active::before {\n content: '';\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: currentColor;\n opacity: 0.1;\n}\n\n.studioview_studioview-root_1OP-i .studioview_studioview-loaded_3UCil:active::before {\n opacity: 0.2;\n}\n\n.studioview_studioview-root_1OP-i .studioview_studioview-title_2ROWB,\n.studioview_studioview-root_1OP-i .studioview_studioview-author_2P0Hj {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n color: inherit;\n text-decoration: none;\n}\n\n.studioview_studioview-title_2ROWB {\n font-size: 0.8em;\n font-weight: bold;\n}\n\n.studioview_studioview-author_2P0Hj {\n font-size: 0.75em;\n}\n\n.studioview_studioview-error_3XWai {\n width: 100%;\n}\n\n.studioview_studioview-thumbnail_1HYJO, .studioview_studioview-placeholder-thumbnail_TUdop {\n position: relative;\n width: 144px;\n height: 108px;\n}\n\n.studioview_studioview-thumbnail_1HYJO::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: currentColor;\n opacity: 0.1;\n}\n\n.studioview_studioview-thumbnail_1HYJO img {\n width: 100%;\n height: 100%;\n}\n\n.studioview_studioview-placeholder_KKHo9 .studioview_studioview-thumbnail_1HYJO,\n.studioview_studioview-placeholder_KKHo9 .studioview_studioview-title_2ROWB,\n.studioview_studioview-placeholder_KKHo9 .studioview_studioview-author_2P0Hj {\n background-color: currentColor;\n opacity: 0.1;\n}\n\n.studioview_studioview-title_2ROWB {\n height: 20px;\n margin-top: 2px;\n}\n\n.studioview_studioview-author_2P0Hj {\n height: 18px;\n}\n\n.studioview_studioview-placeholder_KKHo9 .studioview_studioview-title_2ROWB {\n border-radius: 2px 2px 2px 0;\n width: 100%;\n}\n\n.studioview_studioview-placeholder_KKHo9 .studioview_studioview-author_2P0Hj {\n border-radius: 0 0 2px 2px;\n width: 50%;\n}\n",""]),t.locals={wrapper:"studioview_wrapper_1SFBd","studioview-root":"studioview_studioview-root_1OP-i",studioviewRoot:"studioview_studioview-root_1OP-i","studioview-list":"studioview_studioview-list_2hIxk",studioviewList:"studioview_studioview-list_2hIxk","studioview-project":"studioview_studioview-project_IDotv",studioviewProject:"studioview_studioview-project_IDotv","studioview-placeholder":"studioview_studioview-placeholder_KKHo9",studioviewPlaceholder:"studioview_studioview-placeholder_KKHo9","studioview-loaded":"studioview_studioview-loaded_3UCil",studioviewLoaded:"studioview_studioview-loaded_3UCil","studioview-title":"studioview_studioview-title_2ROWB",studioviewTitle:"studioview_studioview-title_2ROWB","studioview-author":"studioview_studioview-author_2P0Hj",studioviewAuthor:"studioview_studioview-author_2P0Hj","studioview-error":"studioview_studioview-error_3XWai",studioviewError:"studioview_studioview-error_3XWai","studioview-thumbnail":"studioview_studioview-thumbnail_1HYJO",studioviewThumbnail:"studioview_studioview-thumbnail_1HYJO","studioview-placeholder-thumbnail":"studioview_studioview-placeholder-thumbnail_TUdop",studioviewPlaceholderThumbnail:"studioview_studioview-placeholder-thumbnail_TUdop"}},257:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".featured-projects_container_1--ew {\n margin-bottom: 8px;\n}\n\n.featured-projects_opener-container_1c9_H {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n opacity: 0.8;\n color: #222;\n}\n\n.featured-projects_opener-container_1c9_H:hover {\n opacity: 1;\n}\n\n.featured-projects_opener-content_1kqev {\n background-color: white;\n padding: 4px;\n border: 1px solid black;\n box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.25);\n}\n\n.featured-projects_projects_1piAv {\n position: relative;\n height: 155px;\n}\n\n.featured-projects_projects_1piAv.featured-projects_transition_3TsdC {\n transition: .2s height;\n}\n\n.featured-projects_projects_1piAv.featured-projects_opened_eLMQu {\n height: 310px;\n}\n\n.featured-projects_footer_2fw_5 {\n \n}\n",""]),t.locals={container:"featured-projects_container_1--ew","opener-container":"featured-projects_opener-container_1c9_H",openerContainer:"featured-projects_opener-container_1c9_H","opener-content":"featured-projects_opener-content_1kqev",openerContent:"featured-projects_opener-content_1kqev",projects:"featured-projects_projects_1piAv",transition:"featured-projects_transition_3TsdC",opened:"featured-projects_opened_eLMQu",footer:"featured-projects_footer_2fw_5"}},258:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'.description_description_1iyDJ {\n max-height: 250px;\n overflow: auto;\n white-space: pre-line;\n overflow-wrap: break-word;\n line-height: 1.5em;\n padding: 0.5rem;\n margin: 5px 0 8px 0;\n border: 1px solid #b9d6ff;\n background-color: #dbebff;\n border-radius: 0.5rem;\n}\n\n.description_description_1iyDJ a {\n font-weight: bold;\n text-decoration: none;\n}\n\n[theme="dark"] .description_description_1iyDJ {\n border-color: #203652;\n background-color: #16202c;\n}\n\n.description_header_27V8b {\n font-weight: bold;\n font-size: 1em;\n margin: 0;\n padding: 0;\n}\n\n.description_divider_3z5W7 {\n margin-top: 8px;\n}\n\n.description_project-link_2-Z1r {\n margin-bottom: 2px;\n}\n',""]),t.locals={description:"description_description_1iyDJ",header:"description_header_27V8b",divider:"description_divider_3z5W7","project-link":"description_project-link_2-Z1r",projectLink:"description_project-link_2-Z1r"}},259:function(e,t,n){var o=n(260),r=n(264),a=n(265),i=a&&a.isRegExp,s=i?r(i):o;e.exports=s},26:function(e,t,n){var o=n(256);"string"==typeof o&&(o=[[e.i,o,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(10)(o,r);o.locals&&(e.exports=o.locals)},260:function(e,t,n){var o=n(94),r=n(76);e.exports=function(e){return r(e)&&"[object RegExp]"==o(e)}},261:function(e,t,n){var o=n(159),r="object"==typeof self&&self&&self.Object===Object&&self,a=o||r||Function("return this")();e.exports=a},262:function(e,t,n){var o=n(95),r=Object.prototype,a=r.hasOwnProperty,i=r.toString,s=o?o.toStringTag:void 0;e.exports=function(e){var t=a.call(e,s),n=e[s];try{e[s]=void 0;var o=!0}catch(e){}var r=i.call(e);return o&&(t?e[s]=n:delete e[s]),r}},263:function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},264:function(e,t){e.exports=function(e){return function(t){return e(t)}}},265:function(e,t,n){(function(e){var o=n(159),r=t&&!t.nodeType&&t,a=r&&"object"==typeof e&&e&&!e.nodeType&&e,i=a&&a.exports===r&&o.process,s=function(){try{var e=a&&a.require&&a.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(e){}}();e.exports=s}).call(this,n(213)(e))},266:function(e,t,n){var o=n(267),r=/[\\^$.*+?()[\]{}|]/g,a=RegExp(r.source);e.exports=function(e){return(e=o(e))&&a.test(e)?e.replace(r,"\\$&"):e}},267:function(e,t,n){var o=n(268);e.exports=function(e){return null==e?"":o(e)}},268:function(e,t,n){var o=n(95),r=n(269),a=n(119),i=n(270),s=o?o.prototype:void 0,c=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(a(t))return r(t,e)+"";if(i(t))return c?c.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},269:function(e,t){e.exports=function(e,t){for(var n=-1,o=null==e?0:e.length,r=Array(o);++n0&&a(l)?n>1?e(l,n-1,a,i,s):o(s,l):i||(s[s.length]=l)}return s}},274:function(e,t){e.exports=function(e,t){for(var n=-1,o=t.length,r=e.length;++n * {\n margin-bottom: 10px;\n}\n[theme="dark"] .interface_container_2nBns {\n background-color: #111;\n}\n[theme="dark"] .interface_player-only_38SyA {\n color: #ddd;\n}\n[theme="dark"] a {\n color: #4af;\n}\n.interface_infobox_1B2Hp {\n line-height: 1.5em;\n padding: 0.5rem;\n margin: 5px 0 8px 0;\n border-radius: 0.5rem;\n border: 1px solid #b9d6ff;\n background-color: #dbebff;\n}\n[theme="dark"] .interface_infobox_1B2Hp {\n border-color: #203652;\n background-color: #16202c;\n}\n.interface_infobox_1B2Hp p {\n margin: 4px 0;\n}\n.interface_infobox_1B2Hp a {\n font-weight: bold;\n text-decoration: none;\n}\n.interface_unshared-update_i7deb {\n border-color: #ffb9b9;\n background-color: #ffdbdb;\n}\n[theme="dark"] .interface_unshared-update_i7deb {\n border-color: #6a2929;\n background-color: #452222;\n}\n',""]),t.locals={container:"interface_container_2nBns",editor:"interface_editor_3jGyG",center:"interface_center_2d9_b","player-only":"interface_player-only_38SyA",playerOnly:"interface_player-only_38SyA",menu:"interface_menu_3K-Q2",section:"interface_section_3pFkT",footer:"interface_footer_3JeCN","footer-content":"interface_footer-content_1aIC-",footerContent:"interface_footer-content_1aIC-","footer-text":"interface_footer-text_IgwDU",footerText:"interface_footer-text_IgwDU","footer-columns":"interface_footer-columns_1SUSg",footerColumns:"interface_footer-columns_1SUSg","footer-section":"interface_footer-section_11lCO",footerSection:"interface_footer-section_11lCO",infobox:"interface_infobox_1B2Hp","unshared-update":"interface_unshared-update_i7deb",unsharedUpdate:"interface_unshared-update_i7deb"}},49:function(e,t,n){var o=n(278);"string"==typeof o&&(o=[[e.i,o,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(10)(o,r);o.locals&&(e.exports=o.locals)},50:function(e,t,n){var o=n(257);"string"==typeof o&&(o=[[e.i,o,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(10)(o,r);o.locals&&(e.exports=o.locals)},52:function(e,t,n){"use strict";let o,r;"undefined"!=typeof BroadcastChannel&&(o=new BroadcastChannel("addons-change"),r=new BroadcastChannel("addons-reload")),t.a={changeChannel:o,reloadChannel:r}},65:function(e,t,n){var o=n(258);"string"==typeof o&&(o=[[e.i,o,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(10)(o,r);o.locals&&(e.exports=o.locals)},76:function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},887:function(e,t,n){"use strict";n.r(t);n(300);var o=n(48),r=n.n(o),a=n(1),i=n.n(a),s=n(77),c=n(163),d=n(73);Object(s.setAppElement)(d.a),r.a.render(i.a.createElement(c.a,null),d.a)},94:function(e,t,n){var o=n(95),r=n(262),a=n(263),i=o?o.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?r(e):a(e)}},95:function(e,t,n){var o=n(261).Symbol;e.exports=o},96:function(e,t,n){"use strict";n.d(t,"b",(function(){return d})),n.d(t,"a",(function(){return u}));var o=n(1),r=n.n(o),a=n(97),i=n.n(a);function s(){return(s=Object.assign||function(e){for(var t=1;t{try{const e=localStorage.getItem("tw:theme");if(null!==e)return"dark"===e}catch(e){}return c.matches},l=document.createElement("style");l.textContent=i.a;const u=function(e){class t extends r.a.Component{constructor(e){super(e),this.handleQueryChange=this.handleQueryChange.bind(this),this.handleClickTheme=this.handleClickTheme.bind(this),this.state={dark:d()}}componentDidMount(){c.addEventListener&&c.addEventListener("change",this.handleQueryChange),this.updateDark()}componentDidUpdate(){try{localStorage.setItem("tw:theme",this.state.dark?"dark":"light")}catch(e){}this.updateDark()}componentWillUnmount(){c.removeEventListener&&c.removeEventListener("change",this.handleQueryChange)}updateDark(){const e=this.state.dark;document.body.setAttribute("theme",e?"dark":"light"),e&&!l.parentNode?document.body.insertBefore(l,document.body.firstChild):!e&&l.parentNode&&l.parentNode.removeChild(l)}handleQueryChange(){this.setState({dark:c.matches})}handleClickTheme(){this.setState(e=>({dark:!e.dark}))}render(){return r.a.createElement(e,s({onClickTheme:this.handleClickTheme,isDark:this.state.dark},this.props))}}return t}},97:function(e,t){e.exports='/* GUI */\n:root {\n background: #111;\n color: #eee;\n color-scheme: dark;\n /* see colors.csss */\n --ui-primary: rgb(17, 17, 17);\n --ui-secondary: rgb(30, 30, 30);\n --ui-tertiary: rgb(46, 46, 46);\n --ui-modal-overlay: #333a;\n --ui-black-transparent: rgba(255, 255, 255, 0.15);\n --text-primary: #eee;\n /* scratch-paint */\n --paint-ui-pane-border: var(--ui-black-transparent);\n --paint-text-primary: #eee;\n --paint-form-border: var(--ui-black-transparent);\n}\n\n/* Blockly */\n.blocklySvg {\n background-color: var(--ui-secondary) !important;\n color-scheme: light;\n}\n[id^="blocklyGridPattern"] > line {\n stroke: #484848;\n}\n.blocklyFlyoutBackground {\n fill: #111;\n}\n.blocklyFlyoutLabelText {\n fill: #ccc;\n}\n.blocklyFlyoutButton .blocklyText {\n fill: #ccc;\n}\n.blocklyFlyoutButton:hover {\n fill: #111;\n}\n/* blocklyFlyoutCheckboxPath stroke and blocklyFlyoutCheckbox fill must match */\n.blocklyFlyoutCheckboxPath {\n stroke: #111;\n}\n.blocklyFlyoutCheckbox {\n fill: #111;\n}\n.checked > .blocklyFlyoutCheckbox {\n stroke: #a1c6fa;\n}\n.checked > .blocklyFlyoutCheckboxPath {\n stroke: white;\n}\n.scratchCategoryMenu {\n color: #ccc;\n}\n.blocklyToolboxDiv,\n.scratchCategoryMenu {\n background: #111 !important;\n}\n.blocklyScrollbarHandle {\n fill: #666;\n}\n.blocklyZoom {\n filter: invert(100%);\n}\n.scratchCategoryMenuItem.categorySelected {\n background: var(--ui-secondary);\n}\n.valueReportBox {\n color: black;\n}\n.blocklyWidgetDiv {\n color-scheme: light;\n}\n.blocklyWidgetDiv .goog-menu {\n background: var(--ui-primary);\n border-color: var(--ui-black-transparent);\n}\n.blocklyWidgetDiv .goog-menuitem {\n color: var(--text-primary);\n}\n.blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-content {\n color: #666 !important;\n}\n.sa-blockly-menu-item-border {\n border-top-color: var(--ui-black-transparent) !important;\n}\n.blocklyWidgetDiv .goog-menuitem.goog-menuitem-highlight {\n background-color: var(--ui-tertiary);\n border-color: transparent; /* remove border */\n}\n.scratchCommentText {\n color: black;\n}\n.blocklyInsertionMarker > .blocklyPath {\n fill: #ccc;\n}\n\n/* Other / Multipurpose */\n.Popover {\n /* weird Chrome bug displays white bar above popovers with color-scheme: dark */\n color-scheme: light;\n}\n.Popover-body {\n background: var(--ui-secondary);\n border-color: var(--ui-black-transparent);\n color: var(--text-primary);\n}\n.Popover-tipShape {\n fill: var(--ui-secondary);\n stroke: var(--ui-black-transparent);\n}\n'}}); \ No newline at end of file diff --git a/js/editor~embed~fullscreen~player.3ba770d2469c8f9fe6c5.js b/js/editor~embed~fullscreen~player.3ba770d2469c8f9fe6c5.js new file mode 100644 index 0000000..706b29b --- /dev/null +++ b/js/editor~embed~fullscreen~player.3ba770d2469c8f9fe6c5.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[2],[,,,,,,,function(e,t,n){"use strict";var a=n(4),o=n.n(a),r=n(0),i=n.n(r),s=n(1),l=n.n(s),c=n(221),d=n.n(c),u=n(769),p=n.n(u);const m=["alignContent","alignItems","alignSelf","basis","children","className","componentRef","direction","element","grow","height","justifyContent","width","wrap","shrink","style"];function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}!function(){const e=function(e){let t=601,n=987654321;const a=4294967295;return function(){n=36969*(65535&n)+(n>>16)&a,t=18e3*(65535&t)+(t>>16)&a;let e=(n<<16)+t&a;return e/=4294967296,e+1}}()}();const f=e=>{const{alignContent:t,alignItems:n,alignSelf:a,basis:r,children:i,className:s,componentRef:c,direction:d,element:u,grow:f,height:w,justifyContent:v,width:y,wrap:_,shrink:k,style:S}=e,E=b(e,m);return l.a.createElement(u,function(e){for(var t=1;te===l.FETCHING_WITH_ID||e===l.FETCHING_NEW_DEFAULT,u=e=>e===l.LOADING_VM_WITH_ID||e===l.LOADING_VM_NEW_DEFAULT,p=e=>e===l.LOADING_VM_FILE_UPLOAD||e===l.LOADING_VM_WITH_ID||e===l.LOADING_VM_NEW_DEFAULT,m=e=>e===l.LOADING_VM_FILE_UPLOAD,h=e=>e===l.CREATING_NEW,g=e=>e===l.FETCHING_NEW_DEFAULT||e===l.LOADING_VM_NEW_DEFAULT||e===l.CREATING_NEW,b=e=>e===l.CREATING_COPY,f=e=>e===l.MANUAL_UPDATING,w=e=>e===l.REMIXING,v=e=>e===l.AUTO_UPDATING||e===l.MANUAL_UPDATING||e===l.UPDATING_BEFORE_COPY||e===l.UPDATING_BEFORE_NEW,y=e=>e===l.SHOWING_WITH_ID||e===l.SHOWING_WITHOUT_ID,_=e=>e===l.SHOWING_WITH_ID,k=e=>e===l.SHOWING_WITHOUT_ID,S=e=>e===l.ERROR,E={error:null,projectData:null,projectId:null,loadingState:l.NOT_LOADED},x=function(e,t){switch(void 0===e&&(e=E),t.type){case"scratch-gui/project-state/DONE_CREATING_NEW":return e.loadingState===l.CREATING_NEW?Object.assign({},e,{loadingState:l.SHOWING_WITH_ID,projectId:t.projectId}):e;case"scratch-gui/project-state/DONE_FETCHING_WITH_ID":return e.loadingState===l.FETCHING_WITH_ID?Object.assign({},e,{loadingState:l.LOADING_VM_WITH_ID,projectData:t.projectData}):e;case"scratch-gui/project-state/DONE_FETCHING_DEFAULT":return e.loadingState===l.FETCHING_NEW_DEFAULT?Object.assign({},e,{loadingState:l.LOADING_VM_NEW_DEFAULT,projectData:t.projectData}):e;case o:return e.loadingState===l.LOADING_VM_FILE_UPLOAD||e.loadingState===l.LOADING_VM_NEW_DEFAULT?Object.assign({},e,{loadingState:l.SHOWING_WITHOUT_ID,projectId:s}):e;case"scratch-gui/project-state/DONE_LOADING_VM_WITH_ID":return e.loadingState===l.LOADING_VM_WITH_ID?Object.assign({},e,{loadingState:l.SHOWING_WITH_ID}):e;case"scratch-gui/project-state/DONE_LOADING_VM_TO_SAVE":return e.loadingState===l.LOADING_VM_FILE_UPLOAD?Object.assign({},e,{loadingState:l.AUTO_UPDATING}):e;case"scratch-gui/project-state/DONE_REMIXING":return e.loadingState===l.REMIXING?Object.assign({},e,{loadingState:l.SHOWING_WITH_ID,projectId:t.projectId}):e;case"scratch-gui/project-state/DONE_CREATING_COPY":return e.loadingState===l.CREATING_COPY?Object.assign({},e,{loadingState:l.SHOWING_WITH_ID,projectId:t.projectId}):e;case"scratch-gui/project-state/DONE_UPDATING":return e.loadingState===l.AUTO_UPDATING||e.loadingState===l.MANUAL_UPDATING?Object.assign({},e,{loadingState:l.SHOWING_WITH_ID}):e;case"scratch-gui/project-state/DONE_UPDATING_BEFORE_COPY":return e.loadingState===l.UPDATING_BEFORE_COPY?Object.assign({},e,{loadingState:l.CREATING_COPY}):e;case"scratch-gui/project-state/DONE_UPDATING_BEFORE_NEW":return e.loadingState===l.UPDATING_BEFORE_NEW?Object.assign({},e,{loadingState:l.FETCHING_NEW_DEFAULT,projectId:s}):e;case r:return null===e.projectId||e.projectId===s?Object.assign({},e,{loadingState:l.SHOWING_WITHOUT_ID,projectId:s}):Object.assign({},e,{loadingState:l.SHOWING_WITH_ID});case"scratch-gui/project-state/SET_PROJECT_ID":return e.projectId===t.projectId?e:e.loadingState===l.SHOWING_WITH_ID||e.loadingState!==l.SHOWING_WITHOUT_ID?t.projectId===s||null===t.projectId?Object.assign({},e,{loadingState:l.FETCHING_NEW_DEFAULT,projectId:s}):Object.assign({},e,{loadingState:l.FETCHING_WITH_ID,projectId:t.projectId}):t.projectId!==s&&null!==t.projectId?Object.assign({},e,{loadingState:l.FETCHING_WITH_ID,projectId:t.projectId}):e;case"scratch-gui/project-state/START_AUTO_UPDATING":return e.loadingState===l.SHOWING_WITH_ID?Object.assign({},e,{loadingState:l.AUTO_UPDATING}):e;case"scratch-gui/project-state/START_CREATING_NEW":return e.loadingState===l.SHOWING_WITHOUT_ID?Object.assign({},e,{loadingState:l.CREATING_NEW}):e;case"scratch-gui/project-state/START_FETCHING_NEW":return[l.SHOWING_WITH_ID,l.SHOWING_WITHOUT_ID].includes(e.loadingState)?Object.assign({},e,{loadingState:l.FETCHING_NEW_DEFAULT,projectId:s}):e;case"scratch-gui/project-state/START_LOADING_VM_FILE_UPLOAD":return[l.NOT_LOADED,l.SHOWING_WITH_ID,l.SHOWING_WITHOUT_ID].includes(e.loadingState)?Object.assign({},e,{loadingState:l.LOADING_VM_FILE_UPLOAD}):e;case"scratch-gui/project-state/START_MANUAL_UPDATING":return e.loadingState===l.SHOWING_WITH_ID?Object.assign({},e,{loadingState:l.MANUAL_UPDATING}):e;case"scratch-gui/project-state/START_REMIXING":return e.loadingState===l.SHOWING_WITH_ID?Object.assign({},e,{loadingState:l.REMIXING}):e;case"scratch-gui/project-state/START_UPDATING_BEFORE_CREATING_COPY":return e.loadingState===l.SHOWING_WITH_ID?Object.assign({},e,{loadingState:l.UPDATING_BEFORE_COPY}):e;case"scratch-gui/project-state/START_UPDATING_BEFORE_CREATING_NEW":return e.loadingState===l.SHOWING_WITH_ID?Object.assign({},e,{loadingState:l.UPDATING_BEFORE_NEW}):e;case i:return[l.FETCHING_NEW_DEFAULT,l.FETCHING_WITH_ID,l.LOADING_VM_NEW_DEFAULT,l.LOADING_VM_WITH_ID].includes(e.loadingState)?Object.assign({},e,{loadingState:l.ERROR,error:t.error}):[l.AUTO_UPDATING,l.CREATING_COPY,l.MANUAL_UPDATING,l.REMIXING,l.UPDATING_BEFORE_COPY,l.UPDATING_BEFORE_NEW].includes(e.loadingState)?Object.assign({},e,{loadingState:l.SHOWING_WITH_ID,error:t.error}):e.loadingState===l.CREATING_NEW?e.projectId===s||null===e.projectId?Object.assign({},e,{loadingState:l.SHOWING_WITHOUT_ID,error:t.error}):Object.assign({},e,{loadingState:l.SHOWING_WITH_ID,error:t.error}):e;default:return e}},C=()=>({type:"scratch-gui/project-state/START_CREATING_NEW"}),O=(e,t)=>{switch(t){case l.CREATING_NEW:return{type:"scratch-gui/project-state/DONE_CREATING_NEW",projectId:e};case l.CREATING_COPY:return{type:"scratch-gui/project-state/DONE_CREATING_COPY",projectId:e};case l.REMIXING:return{type:"scratch-gui/project-state/DONE_REMIXING",projectId:e}}},F=(e,t)=>{switch(t){case l.FETCHING_WITH_ID:return{type:"scratch-gui/project-state/DONE_FETCHING_WITH_ID",projectData:e};case l.FETCHING_NEW_DEFAULT:return{type:"scratch-gui/project-state/DONE_FETCHING_DEFAULT",projectData:e}}},j=(e,t,n)=>{switch(e){case l.LOADING_VM_WITH_ID:return n?{type:"scratch-gui/project-state/DONE_LOADING_VM_WITH_ID"}:{type:r};case l.LOADING_VM_FILE_UPLOAD:return n?t?{type:"scratch-gui/project-state/DONE_LOADING_VM_TO_SAVE"}:{type:o}:{type:r};case l.LOADING_VM_NEW_DEFAULT:return n?{type:o}:{type:i};default:return}},M=e=>{switch(e){case l.AUTO_UPDATING:case l.MANUAL_UPDATING:return{type:"scratch-gui/project-state/DONE_UPDATING"};case l.UPDATING_BEFORE_COPY:return{type:"scratch-gui/project-state/DONE_UPDATING_BEFORE_COPY"};case l.UPDATING_BEFORE_NEW:return{type:"scratch-gui/project-state/DONE_UPDATING_BEFORE_NEW"}}},P=e=>({type:i,error:e}),T=e=>({type:"scratch-gui/project-state/SET_PROJECT_ID",projectId:e}),R=e=>e?{type:"scratch-gui/project-state/START_UPDATING_BEFORE_CREATING_NEW"}:{type:"scratch-gui/project-state/START_FETCHING_NEW"},I=e=>{switch(e){case l.NOT_LOADED:case l.SHOWING_WITH_ID:case l.SHOWING_WITHOUT_ID:return{type:"scratch-gui/project-state/START_LOADING_VM_FILE_UPLOAD"}}},D=()=>({type:"scratch-gui/project-state/START_AUTO_UPDATING"}),A=()=>({type:"scratch-gui/project-state/START_MANUAL_UPDATING"}),B=()=>({type:"scratch-gui/project-state/START_UPDATING_BEFORE_CREATING_COPY"}),N=()=>({type:"scratch-gui/project-state/START_REMIXING"})},function(e,t,n){"use strict";n.r(t);var a=n(120),o=n.n(a);o.a.enable(),t.default=o()("gui")},,,function(e,t,n){"use strict";n.d(t,"p",(function(){return o})),n.d(t,"q",(function(){return a})),n.d(t,"r",(function(){return s})),n.d(t,"t",(function(){return l})),n.d(t,"v",(function(){return c})),n.d(t,"x",(function(){return d})),n.d(t,"A",(function(){return u})),n.d(t,"C",(function(){return p})),n.d(t,"B",(function(){return m})),n.d(t,"D",(function(){return g})),n.d(t,"s",(function(){return h})),n.d(t,"E",(function(){return b})),n.d(t,"z",(function(){return f})),n.d(t,"u",(function(){return w})),n.d(t,"y",(function(){return v})),n.d(t,"w",(function(){return y})),n.d(t,"a",(function(){return _})),n.d(t,"c",(function(){return k})),n.d(t,"e",(function(){return S})),n.d(t,"g",(function(){return E})),n.d(t,"l",(function(){return C})),n.d(t,"j",(function(){return O})),n.d(t,"k",(function(){return F})),n.d(t,"m",(function(){return x})),n.d(t,"n",(function(){return j})),n.d(t,"b",(function(){return M})),n.d(t,"o",(function(){return P})),n.d(t,"i",(function(){return T})),n.d(t,"d",(function(){return R})),n.d(t,"h",(function(){return I})),n.d(t,"f",(function(){return D}));const a={backdropLibrary:!1,costumeLibrary:!1,extensionLibrary:!1,loadingProject:!1,telemetryModal:!1,soundLibrary:!1,spriteLibrary:!1,soundRecorder:!1,connectionModal:!1,tipsLibrary:!1,usernameModal:!1,settingsModal:!1,customExtensionModal:!1,restorePointModal:!1,fontsModal:!1},o=function(e,t){switch(void 0===e&&(e=a),t.type){case"scratch-gui/modals/OPEN_MODAL":return Object.assign({},e,{[t.modal]:!0});case"scratch-gui/modals/CLOSE_MODAL":return Object.assign({},e,{[t.modal]:!1});default:return e}},r=function(e){return{type:"scratch-gui/modals/OPEN_MODAL",modal:e}},i=function(e){return{type:"scratch-gui/modals/CLOSE_MODAL",modal:e}},s=function(){return r("backdropLibrary")},l=function(){return r("costumeLibrary")},c=function(){return r("extensionLibrary")},d=function(){return r("loadingProject")},u=function(){return r("soundLibrary")},p=function(){return r("spriteLibrary")},m=function(){return r("soundRecorder")},h=function(){return r("connectionModal")},g=function(){return r("tipsLibrary")},b=function(){return r("usernameModal")},f=function(){return r("settingsModal")},w=function(){return r("customExtensionModal")},v=function(){return r("restorePointModal")},y=function(){return r("fontsModal")},_=function(){return i("backdropLibrary")},k=function(){return i("costumeLibrary")},S=function(){return i("extensionLibrary")},E=function(){return i("loadingProject")},x=function(){return i("telemetryModal")},C=function(){return i("spriteLibrary")},O=function(){return i("soundLibrary")},F=function(){return i("soundRecorder")},j=function(){return i("tipsLibrary")},M=function(){return i("connectionModal")},P=function(){return i("usernameModal")},T=function(){return i("settingsModal")},R=function(){return i("customExtensionModal")},I=function(){return i("restorePointModal")},D=function(){return i("fontsModal")}},function(e,t,n){var a=n(1574);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return l})),n.d(t,"c",(function(){return i})),n.d(t,"d",(function(){return r}));var a=n(55),o=n.n(a);const r=o()({large:null,small:null}),i=o()({large:null,largeConstrained:null,small:null}),s=.675,l={};l[i.large]=1,l[i.largeConstrained]=.85,l[i.small]=.5,t.e={fullSizeMinWidth:1096,referenceWidth:480}},function(e,t,n){var a=n(1488);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"s",(function(){return a})),n.d(t,"k",(function(){return r})),n.d(t,"n",(function(){return i})),n.d(t,"g",(function(){return s})),n.d(t,"p",(function(){return l})),n.d(t,"q",(function(){return c})),n.d(t,"e",(function(){return d})),n.d(t,"m",(function(){return u})),n.d(t,"o",(function(){return p})),n.d(t,"i",(function(){return m})),n.d(t,"d",(function(){return h})),n.d(t,"h",(function(){return g})),n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return f})),n.d(t,"j",(function(){return w})),n.d(t,"r",(function(){return v})),n.d(t,"l",(function(){return y})),n.d(t,"f",(function(){return _}));const a={framerate:30,interpolation:!1,cloud:!0,username:"",highQualityPen:!1,compilerOptions:{enabled:!0,warpTimer:!1},runtimeOptions:{maxClones:300,miscLimits:!0,fencing:!0},isWindowFullScreen:!1,dimensions:[0,0],author:{username:"",thumbnail:""},description:{instructions:"",credits:""},compileErrors:[],fileHandle:null,usernameInvalid:!1,hasCloudVariables:!1,cloudHost:""},o=function(e,t){switch(void 0===e&&(e=a),t.type){case"tw/SET_FRAMERATE":return Object.assign({},e,{framerate:t.framerate});case"tw/SET_INTERPOLATION":return Object.assign({},e,{interpolation:t.interpolation});case"tw/SET_COMPILER_OPTIONS":return Object.assign({},e,{compilerOptions:t.compilerOptions});case"tw/SET_RUNTIME_OPTIONS":return Object.assign({},e,{runtimeOptions:t.runtimeOptions});case"tw/SET_USERNAME":return Object.assign({},e,{username:t.username});case"tw/SET_CLOUD":return Object.assign({},e,{cloud:t.cloud});case"tw/SET_HIGH_QUALITY_PEN":return Object.assign({},e,{highQualityPen:t.highQualityPen});case"tw/SET_WINDOW_FULLSCREEN":return Object.assign({},e,{isWindowFullScreen:t.isWindowFullScreen});case"tw/SET_DIMENSIONS":return Object.assign({},e,{dimensions:t.dimensions});case"tw/SET_AUTHOR":return Object.assign({},e,{author:t.author});case"tw/SET_DESCRIPTION":return Object.assign({},e,{description:t.description});case"tw/ADD_COMPILE_ERROR":return Object.assign({},e,{compileErrors:[t.error,...e.compileErrors.slice(0,4)]});case"tw/CLEAR_COMPILE_ERRORS":return Object.assign({},e,{compileErrors:[]});case"tw/SET_FILE_HANDLE":return Object.assign({},e,{fileHandle:t.fileHandle});case"tw/SET_USERNAME_INVALID":return Object.assign({},e,{usernameInvalid:t.usernameInvalid});case"tw/SET_HAS_CLOUD_VARIABLES":return Object.assign({},e,{hasCloudVariables:t.hasCloudVariables});case"tw/SET_CLOUD_HOST":return Object.assign({},e,{cloudHost:t.cloudHost});default:return e}},r=function(e){return{type:"tw/SET_FRAMERATE",framerate:e}},i=function(e){return{type:"tw/SET_INTERPOLATION",interpolation:e}},s=function(e){return{type:"tw/SET_COMPILER_OPTIONS",compilerOptions:e}},l=function(e){return{type:"tw/SET_RUNTIME_OPTIONS",runtimeOptions:e}},c=function(e){return{type:"tw/SET_USERNAME",username:e}},d=function(e){return{type:"tw/SET_CLOUD",cloud:e}},u=function(e){return{type:"tw/SET_HIGH_QUALITY_PEN",highQualityPen:e}},p=function(e){return{type:"tw/SET_WINDOW_FULLSCREEN",isWindowFullScreen:e}},m=function(e){return{type:"tw/SET_DIMENSIONS",dimensions:e}},h=function(e){return{type:"tw/SET_AUTHOR",author:e}},g=function(e){return{type:"tw/SET_DESCRIPTION",description:e}},b=function(e){return{type:"tw/ADD_COMPILE_ERROR",error:e}},f=function(){return{type:"tw/CLEAR_COMPILE_ERRORS"}},w=function(e){return{type:"tw/SET_FILE_HANDLE",fileHandle:e}},v=function(e){return{type:"tw/SET_USERNAME_INVALID",usernameInvalid:e}},y=function(e){return{type:"tw/SET_HAS_CLOUD_VARIABLES",hasCloudVariables:e}},_=function(e){return{type:"tw/SET_CLOUD_HOST",cloudHost:e}}},,function(e,t,n){var a=n(1601);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,function(e,t,n){"use strict";n.d(t,"d",(function(){return l})),n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return c})),n.d(t,"c",(function(){return d})),n.d(t,"e",(function(){return s})),n.d(t,"f",(function(){return i})),n.d(t,"g",(function(){return m})),n.d(t,"h",(function(){return p})),n.d(t,"i",(function(){return u}));var a=n(85),o=n(124);const r={visible:!0,alertsList:[]},i=e=>e.filter(e=>e.alertType===a.b.STANDARD||e.alertType===a.b.EXTENSION),s=e=>e.filter(e=>e.alertType===a.b.INLINE),l=function(e,t){switch(void 0===e&&(e=r),t.type){case"scratch-gui/alerts/SHOW_ALERT":{const n=t.alertId;if(n){const o={alertId:n,level:a.a.WARN},r=a.c.find(e=>e.alertId===n);if(r){const n=e.alertsList.filter(e=>!r.clearList||-1===r.clearList.indexOf(e.alertId));return t.data&&t.data.message&&(o.message=t.data.message),o.alertType=r.alertType||a.b.STANDARD,o.closeButton=r.closeButton,o.content=r.content,o.iconURL=r.iconURL,o.iconSpinner=r.iconSpinner,o.level=r.level,o.showDownload=r.showDownload,o.showSaveNow=r.showSaveNow,n.push(o),Object.assign({},e,{alertsList:n})}}return e}case"scratch-gui/alerts/SHOW_EXTENSION_ALERT":{const n=t.data.extensionId;if(n){const t=o.a.find(e=>e.extensionId===n);if(t){const o=e.alertsList.slice(),r={alertType:a.b.EXTENSION,closeButton:!0,extensionId:n,extensionName:t.name,iconURL:t.connectionSmallIconURL,level:a.a.WARN,showReconnect:!0};return o.push(r),Object.assign({},e,{alertsList:o})}}return e}case"scratch-gui/alerts/CLOSE_ALERT_WITH_ID":case"scratch-gui/alerts/CLOSE_ALERT":{if(t.alertId&&(t.index=e.alertsList.findIndex(e=>e.alertId===t.alertId),-1===t.index))return e;const n=e.alertsList.slice();return n.splice(t.index,1),Object.assign({},e,{alertsList:n})}case"scratch-gui/alerts/CLOSE_ALERTS_WITH_ID":return Object.assign({},e,{alertsList:e.alertsList.filter(e=>e.alertId!==t.alertId)});default:return e}},c=function(e){return{type:"scratch-gui/alerts/CLOSE_ALERT",index:e}},d=function(e){return{type:"scratch-gui/alerts/CLOSE_ALERT_WITH_ID",alertId:e}},u=function(e){return{type:"scratch-gui/alerts/SHOW_ALERT",alertId:e}},p=function(e){return{type:"scratch-gui/alerts/SHOW_EXTENSION_ALERT",data:e}},m=function(e,t){const n=a.c.find(e=>e.alertId===t);n&&(e(u(t)),n.maxDisplaySecs&&setTimeout(()=>{e(function(e){return{type:"scratch-gui/alerts/CLOSE_ALERTS_WITH_ID",alertId:e}}(t))},1e3*n.maxDisplaySecs))}},function(e,t,n){"use strict";var a=n(724),o=n.n(a),r=n(2),i=n(89);function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;te.defaultMessage;var p=e=>{const t=e||u;return{targets:[{isStage:!0,name:"Stage",variables:{"`jEk@4|i[#Fk?(8x)AV.-my variable":[t(d.variable),0]},lists:{},broadcasts:{},blocks:{},currentCostume:0,costumes:[{assetId:"cd21514d0531fdffb22204e0ec5ed84a",name:t(d.backdrop,{index:1}),md5ext:"cd21514d0531fdffb22204e0ec5ed84a.svg",dataFormat:"svg",rotationCenterX:240,rotationCenterY:180}],sounds:[],volume:100},{isStage:!1,name:t(d.sprite,{index:1}),variables:{},lists:{},broadcasts:{},blocks:{},comments:{},currentCostume:0,costumes:[{assetId:"592bae6f8bb9c8d88401b54ac431f7b6",name:t(d.costume,{index:1}),bitmapResolution:1,md5ext:"592bae6f8bb9c8d88401b54ac431f7b6.svg",dataFormat:"svg",rotationCenterX:44,rotationCenterY:44}],sounds:[],volume:100,visible:!0,x:0,y:0,size:100,direction:90,draggable:!1,rotationStyle:"all around"}],meta:{semver:"3.0.0",vm:"0.1.0",agent:""}}},m=n(725),h=n.n(m),g=n(726),b=n.n(g),f=n(105);var w=e=>{const t=new f.TextEncoder,n=p(e);return[{id:0,assetType:"Project",dataFormat:"JSON",data:JSON.stringify(n)},{id:"cd21514d0531fdffb22204e0ec5ed84a",assetType:"ImageVector",dataFormat:"SVG",data:t.encode(h.a)},{id:"592bae6f8bb9c8d88401b54ac431f7b6",assetType:"ImageVector",dataFormat:"SVG",data:t.encode(b.a)}]},v=n(357);class y extends o.a{constructor(){super(),this.cacheDefaultProject()}addOfficialScratchWebStores(){this.addWebStore([this.AssetType.Project],this.getProjectGetConfig.bind(this),this.getProjectCreateConfig.bind(this),this.getProjectUpdateConfig.bind(this)),this.addWebStore([this.AssetType.ImageVector,this.AssetType.ImageBitmap,this.AssetType.Sound],this.getAssetGetConfig.bind(this),this.getAssetCreateConfig.bind(this),this.getAssetCreateConfig.bind(this))}setProjectHost(e){this.projectHost=e}setProjectToken(e){this.projectToken=e}getProjectGetConfig(e){return"".concat(this.projectHost,"/").concat(e.assetId)+(this.projectToken?"?token=".concat(this.projectToken):"")}getProjectCreateConfig(){return{url:"".concat(this.projectHost,"/"),withCredentials:!0}}getProjectUpdateConfig(e){return{url:"".concat(this.projectHost,"/").concat(e.assetId),withCredentials:!0}}setAssetHost(e){this.assetHost=e}getAssetGetConfig(e){return"".concat(this.assetHost,"/internalapi/asset/").concat(e.assetId,".").concat(e.dataFormat,"/get/")}getAssetCreateConfig(e){return{method:"post",url:"".concat(this.assetHost,"/").concat(e.assetId,".").concat(e.dataFormat),withCredentials:!0}}setTranslatorFunction(e){this.translator=e,this.cacheDefaultProject()}cacheDefaultProject(){w(this.translator).forEach(e=>this.builtinHelper._store(this.AssetType[e.assetType],this.DataFormat[e.dataFormat],e.data,e.id));Object(v.b)(this.translator).forEach(e=>this.builtinHelper._store(this.AssetType[e.assetType],this.DataFormat[e.dataFormat],e.data,e.id))}}const _=new y;t.a=_},function(e,t,n){var a=n(1478);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1581);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,function(e,t,n){var a=n(1497);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){"use strict";n.d(t,"j",(function(){return o})),n.d(t,"p",(function(){return a})),n.d(t,"q",(function(){return s})),n.d(t,"c",(function(){return l})),n.d(t,"a",(function(){return c})),n.d(t,"r",(function(){return d})),n.d(t,"d",(function(){return u})),n.d(t,"b",(function(){return p})),n.d(t,"u",(function(){return m})),n.d(t,"g",(function(){return h})),n.d(t,"m",(function(){return g})),n.d(t,"s",(function(){return b})),n.d(t,"e",(function(){return f})),n.d(t,"k",(function(){return w})),n.d(t,"v",(function(){return v})),n.d(t,"h",(function(){return y})),n.d(t,"n",(function(){return _})),n.d(t,"w",(function(){return k})),n.d(t,"i",(function(){return S})),n.d(t,"o",(function(){return E})),n.d(t,"t",(function(){return x})),n.d(t,"f",(function(){return C})),n.d(t,"l",(function(){return O}));const a={aboutMenu:!1,accountMenu:!1,fileMenu:!1,editMenu:!1,languageMenu:!1,loginMenu:!1,errorMenu:!1},o=function(e,t){switch(void 0===e&&(e=a),t.type){case"scratch-gui/menus/OPEN_MENU":return Object.assign({},e,{[t.menu]:!0});case"scratch-gui/menus/CLOSE_MENU":return Object.assign({},e,{[t.menu]:!1});default:return e}},r=e=>({type:"scratch-gui/menus/OPEN_MENU",menu:e}),i=e=>({type:"scratch-gui/menus/CLOSE_MENU",menu:e}),s=()=>r("aboutMenu"),l=()=>i("aboutMenu"),c=e=>e.scratchGui.menus.aboutMenu,d=()=>r("accountMenu"),u=()=>i("accountMenu"),p=e=>e.scratchGui.menus.accountMenu,m=()=>r("fileMenu"),h=()=>i("fileMenu"),g=e=>e.scratchGui.menus.fileMenu,b=()=>r("editMenu"),f=()=>i("editMenu"),w=e=>e.scratchGui.menus.editMenu,v=()=>r("languageMenu"),y=()=>i("languageMenu"),_=e=>e.scratchGui.menus.languageMenu,k=()=>r("loginMenu"),S=()=>i("loginMenu"),E=e=>e.scratchGui.menus.loginMenu,x=()=>r("errorMenu"),C=()=>i("errorMenu"),O=e=>e.scratchGui.menus.errorMenu},,function(e,t,n){var a=n(1486);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1447);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,function(e,t,n){"use strict";n.d(t,"e",(function(){return s})),n.d(t,"f",(function(){return i})),n.d(t,"d",(function(){return l})),n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return r}));const a=0,o=1,r=2,i={activeTabIndex:a},s=function(e,t){switch(void 0===e&&(e=i),t.type){case"scratch-gui/navigation/ACTIVATE_TAB":return Object.assign({},e,{activeTabIndex:t.activeTabIndex});default:return e}},l=function(e){return{type:"scratch-gui/navigation/ACTIVATE_TAB",activeTabIndex:e}}},,,,,,,,,,function(e,t,n){var a=n(1484);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,function(e,t,n){var a=n(1495);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,,function(e,t,n){"use strict";let a;n.d(t,"b",(function(){return r})),n.d(t,"c",(function(){return i})),n.d(t,"d",(function(){return o}));const o=function(e){a=e},r=function(){return a},i=function(){return!r()};t.a=r},function(e,t,n){"use strict";var a=n(4),o=n.n(a),r=n(0),i=n.n(r),s=n(1),l=n.n(s),c=n(366),d=n.n(c);const u=["className","disabled","iconClassName","iconSrc","iconWidth","iconHeight","onClick","children"];function p(){return(p=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const h=e=>{let{className:t,disabled:n,iconClassName:a,iconSrc:r,iconWidth:i,iconHeight:s,onClick:c,children:h}=e,g=m(e,u);n&&(c=function(){});const b=r&&l.a.createElement("img",{className:o()(a,d.a.icon),draggable:!1,src:r,height:s,width:i});return l.a.createElement("span",p({className:o()(d.a.outlinedButton,t),role:"button",onClick:c},g),b,l.a.createElement("div",{className:d.a.content},h))};h.propTypes={children:i.a.node,className:i.a.string,disabled:i.a.bool,iconClassName:i.a.string,iconSrc:i.a.string,iconHeight:i.a.string,iconWidth:i.a.string,onClick:i.a.func},t.a=h},function(e,t,n){var a=n(1602);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,function(e,t,n){var a=n(1600);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,,function(e,t,n){var a=n(1454);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,,,function(e,t,n){var a=n(1591);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){"use strict";var a=n(1),o=n.n(a),r=n(0),i=n.n(r),s=n(341),l=n(12);class c extends o.a.Component{constructor(e){super(e),this.state={hasError:!1,errorId:null}}componentDidCatch(e,t){e=e||{stack:"Unknown stack",message:"Unknown error"},window.Sentry&&window.Sentry.withScope(n=>{Object.keys(t).forEach(e=>{n.setExtra(e,t[e])}),n.setExtra("action",this.props.action),window.Sentry.captureException(e)}),this.setState({hasError:!0,errorId:window.Sentry?window.Sentry.lastEventId():null,errorMessage:"".concat(e&&e.message||e)}),l.default.error("Unhandled Error: ".concat(e.stack,"\nComponent stack: ").concat(t.componentStack))}handleBack(){window.history.back()}handleReload(){window.location.replace(window.location.origin+window.location.pathname)}render(){return this.state.hasError?o.a.createElement(s.a,{eventId:this.state.errorId,errorMessage:this.state.errorMessage,onReload:this.handleReload}):this.props.children}}c.propTypes={action:i.a.string.isRequired,children:i.a.node};var d=c;t.a=function(e){return function(t){return n=>o.a.createElement(d,{action:e},o.a.createElement(t,n))}}},function(e,t,n){"use strict";const a=document.getElementById("app");for(;a.firstChild;)a.removeChild(a.firstChild);document.body.classList.add("tw-loaded"),t.a=a},,function(e,t,n){var a=n(1561);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return a})),n.d(t,"c",(function(){return r})),n.d(t,"d",(function(){return i}));const a={isEmbedded:!1,isFullScreen:!1,isPlayerOnly:!1,hasEverEnteredEditor:!0},o=function(e,t){switch(void 0===e&&(e=a),t.type){case"scratch-gui/mode/SET_FULL_SCREEN":return Object.assign({},e,{isFullScreen:t.isFullScreen});case"scratch-gui/mode/SET_PLAYER":return Object.assign({},e,{isPlayerOnly:t.isPlayerOnly,hasEverEnteredEditor:e.hasEverEnteredEditor||!t.isPlayerOnly});default:return e}},r=function(e){return{type:"scratch-gui/mode/SET_FULL_SCREEN",isFullScreen:e}},i=function(e){return{type:"scratch-gui/mode/SET_PLAYER",isPlayerOnly:e}}},function(e,t,n){"use strict";n.d(t,"d",(function(){return s})),n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return l})),n.d(t,"c",(function(){return c})),n.d(t,"i",(function(){return d})),n.d(t,"g",(function(){return u})),n.d(t,"h",(function(){return p})),n.d(t,"e",(function(){return m})),n.d(t,"j",(function(){return h})),n.d(t,"f",(function(){return g}));var a=n(125),o=n(84);const r="scratch-gui/cards/END_DRAG",i={visible:!1,content:o.a,activeDeckId:null,step:0,x:0,y:0,expanded:!0,dragging:!1},s=function(e,t){switch(void 0===e&&(e=i),t.type){case"scratch-gui/cards/CLOSE_CARDS":return Object.assign({},e,{visible:!1});case"scratch-gui/cards/SHRINK_EXPAND_CARDS":return Object.assign({},e,{expanded:!e.expanded});case"scratch-gui/cards/VIEW_CARDS":return Object.assign({},e,{visible:!0});case"scratch-gui/cards/ACTIVATE_DECK":return Object.assign({},e,{activeDeckId:t.activeDeckId,step:0,x:0,y:0,expanded:!0,visible:!0});case"scratch-gui/cards/NEXT_STEP":return null!==e.activeDeckId?(a.a.event({category:"how-to",action:"next step",label:"".concat(e.activeDeckId," - ").concat(e.step)}),Object.assign({},e,{step:e.step+1})):e;case"scratch-gui/cards/PREV_STEP":return null!==e.activeDeckId&&e.step>0?Object.assign({},e,{step:e.step-1}):e;case"scratch-gui/cards/DRAG_CARD":return Object.assign({},e,{x:t.x,y:t.y});case"scratch-gui/cards/START_DRAG":return Object.assign({},e,{dragging:!0});case r:return Object.assign({},e,{dragging:!1});default:return e}},l=function(e){return{type:"scratch-gui/cards/ACTIVATE_DECK",activeDeckId:e}},c=function(){return{type:"scratch-gui/cards/CLOSE_CARDS"}},d=function(){return{type:"scratch-gui/cards/SHRINK_EXPAND_CARDS"}},u=function(){return{type:"scratch-gui/cards/NEXT_STEP"}},p=function(){return{type:"scratch-gui/cards/PREV_STEP"}},m=function(e,t){return{type:"scratch-gui/cards/DRAG_CARD",x:e,y:t}},h=function(){return{type:"scratch-gui/cards/START_DRAG"}},g=function(){return{type:r}}},function(e,t,n){var a=n(1470);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));const a="TurboWarp"},function(e,t,n){"use strict";t.a={}},function(e,t,n){"use strict";n.d(t,"c",(function(){return p})),n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var a=n(1),o=n.n(a),r=n(2),i=n(55),s=n.n(i),l=n(180),c=n.n(l);const d=s()({STANDARD:null,EXTENSION:null,INLINE:null}),u={SUCCESS:"success",INFO:"info",WARN:"warn"},p=[{alertId:"createSuccess",alertType:d.STANDARD,clearList:["createSuccess","creating","createCopySuccess","creatingCopy","createRemixSuccess","creatingRemix","saveSuccess","saving"],content:o.a.createElement(r.b,{defaultMessage:"New project created.",id:"gui.alerts.createsuccess"}),iconURL:c.a,level:u.SUCCESS,maxDisplaySecs:5},{alertId:"createCopySuccess",alertType:d.STANDARD,clearList:["createSuccess","creating","createCopySuccess","creatingCopy","createRemixSuccess","creatingRemix","saveSuccess","saving"],content:o.a.createElement(r.b,{defaultMessage:"Project saved as a copy.",id:"gui.alerts.createcopysuccess"}),iconURL:c.a,level:u.SUCCESS,maxDisplaySecs:5},{alertId:"createRemixSuccess",alertType:d.STANDARD,clearList:["createSuccess","creating","createCopySuccess","creatingCopy","createRemixSuccess","creatingRemix","saveSuccess","saving"],content:o.a.createElement(r.b,{defaultMessage:"Project saved as a remix.",id:"gui.alerts.createremixsuccess"}),iconURL:c.a,level:u.SUCCESS,maxDisplaySecs:5},{alertId:"creating",alertType:d.STANDARD,clearList:["createSuccess","creating","createCopySuccess","creatingCopy","createRemixSuccess","creatingRemix","saveSuccess","saving"],content:o.a.createElement(r.b,{defaultMessage:"Creating new…",id:"gui.alerts.creating"}),iconSpinner:!0,level:u.SUCCESS},{alertId:"creatingCopy",alertType:d.STANDARD,clearList:["createSuccess","creating","createCopySuccess","creatingCopy","createRemixSuccess","creatingRemix","saveSuccess","saving"],content:o.a.createElement(r.b,{defaultMessage:"Copying project…",id:"gui.alerts.creatingCopy"}),iconSpinner:!0,level:u.SUCCESS},{alertId:"creatingRemix",alertType:d.STANDARD,clearList:["createSuccess","creating","createCopySuccess","creatingCopy","createRemixSuccess","creatingRemix","saveSuccess","saving"],content:o.a.createElement(r.b,{defaultMessage:"Remixing project…",id:"gui.alerts.creatingRemix"}),iconSpinner:!0,level:u.SUCCESS},{alertId:"creatingError",clearList:["createSuccess","creating","createCopySuccess","creatingCopy","createRemixSuccess","creatingRemix","saveSuccess","saving"],closeButton:!0,content:o.a.createElement(r.b,{defaultMessage:"Could not create the project. Please try again!",id:"gui.alerts.creatingError"}),level:u.WARN},{alertId:"savingError",clearList:["createSuccess","creating","createCopySuccess","creatingCopy","createRemixSuccess","creatingRemix","saveSuccess","saving"],showDownload:!0,closeButton:!0,content:o.a.createElement(r.b,{defaultMessage:"Project could not save.",id:"gui.alerts.savingError"}),level:u.WARN},{alertId:"saveSuccess",alertType:d.INLINE,clearList:["saveSuccess","saving","savingError","twSaveToDiskSuccess","twCreatingRestorePoint","twRestorePointSuccess","twRestorePointError"],content:o.a.createElement(r.b,{defaultMessage:"Project saved.",id:"gui.alerts.savesuccess"}),iconURL:c.a,level:u.SUCCESS,maxDisplaySecs:3},{alertId:"twSaveToDiskSuccess",alertType:d.INLINE,clearList:["saveSuccess","saving","savingError","twCreatingRestorePoint","twRestorePointSuccess","twRestorePointError"],content:o.a.createElement(r.b,{defaultMessage:"Saved to your computer.",id:"tw.alerts.savedToDisk"}),iconURL:c.a,level:u.SUCCESS,maxDisplaySecs:3},{alertId:"saving",alertType:d.INLINE,clearList:["saveSuccess","saving","savingError","twSaveToDiskSuccess","twCreatingRestorePoint","twRestorePointSuccess","twRestorePointError"],content:o.a.createElement(r.b,{defaultMessage:"Saving project…",id:"gui.alerts.saving"}),iconSpinner:!0,level:u.INFO},{alertId:"twCreatingRestorePoint",alertType:d.INLINE,clearList:["twRestorePointSuccess","twRestorePointError"],content:o.a.createElement(r.b,{defaultMessage:"Creating restore point…",id:"tw.alerts.creatingRestorePoint"}),iconSpinner:!0,level:u.INFO},{alertId:"twRestorePointSuccess",alertType:d.INLINE,clearList:["twCreatingRestorePoint","twRestorePointError"],content:o.a.createElement(r.b,{defaultMessage:'Access restore points in "File"',id:"tw.alerts.restorePointSuccess"}),iconURL:c.a,level:u.SUCCESS,maxDisplaySecs:3},{alertId:"twRestorePointError",alertType:d.INLINE,clearList:["twCreatingRestorePoint","twRestorePointSuccess"],content:o.a.createElement(r.b,{defaultMessage:"Could not create restore point",id:"tw.alerts.restorePointError"}),iconURL:c.a,level:u.WARN,maxDisplaySecs:5},{alertId:"cloudInfo",alertType:d.STANDARD,clearList:["cloudInfo"],content:o.a.createElement(r.b,{defaultMessage:"Please note, cloud variables only support numbers, not letters or symbols. {learnMoreLink}",id:"gui.alerts.cloudInfo",values:{learnMoreLink:o.a.createElement("a",{href:"https://scratch.mit.edu/info/faq/#clouddata",rel:"noopener noreferrer",target:"_blank"},o.a.createElement(r.b,{defaultMessage:"Learn more.",id:"gui.alerts.cloudInfoLearnMore"}))}}),closeButton:!0,level:u.SUCCESS,maxDisplaySecs:15},{alertId:"importingAsset",alertType:d.STANDARD,clearList:[],content:o.a.createElement(r.b,{defaultMessage:"Importing…",id:"gui.alerts.importing"}),iconSpinner:!0,level:u.SUCCESS}]},,,function(e,t,n){"use strict";t.a=(e,t)=>{const n=document.createElement("a");if(document.body.appendChild(n),navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(t,e);else if("download"in HTMLAnchorElement.prototype){const a=window.URL.createObjectURL(t);n.href=a,n.download=e,n.type=t.type,n.click(),window.setTimeout(()=>{document.body.removeChild(n),window.URL.revokeObjectURL(a)},1e3)}else{let e=window.open("","_blank");const n=new FileReader;n.onloadend=function(){e.location.href=n.result,e=null},n.readAsDataURL(t)}}},function(e,t,n){"use strict";var a=n(2);t.a=Object(a.g)({backdrop:{id:"gui.sharedMessages.backdrop",defaultMessage:"backdrop{index}"},costume:{id:"gui.sharedMessages.costume",defaultMessage:"costume{index}"},sprite:{id:"gui.sharedMessages.sprite",defaultMessage:"Sprite{index}"},pop:{id:"gui.sharedMessages.pop",defaultMessage:"pop"},replaceProjectWarning:{id:"gui.sharedMessages.replaceProjectWarning",defaultMessage:"Replace contents of the current project?"},loadFromComputerTitle:{id:"gui.sharedMessages.loadFromComputerTitle",defaultMessage:"Load from your computer"}})},function(e,t,n){var a=n(1444);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1599);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return r}));var a=n(11);const o=(e,t)=>{e(Object(a.E)(t))},r=e=>{const t=(e=>{let t=e.toString();return t.length>0&&(t="?".concat(t),t=t.replace(/=(?=$|&)/g,"").replace(/%2F/g,"/").replace(/%3A/g,":")),t})(e);location.search!==t&&history.replaceState(null,null,"".concat(location.pathname).concat(t).concat(location.hash))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return i})),n.d(t,"d",(function(){return s}));const a="scratch-gui/project-changed/SET_PROJECT_CHANGED",o=!1,r=function(e,t){switch(void 0===e&&(e=o),t.type){case a:return t.changed;default:return e}},i=()=>({type:a,changed:!0}),s=()=>({type:a,changed:!1})},function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return a})),n.d(t,"c",(function(){return r}));const a="",o=function(e,t){switch(void 0===e&&(e=a),t.type){case"projectTitle/SET_PROJECT_TITLE":return t.title;default:return e}},r=e=>({type:"projectTitle/SET_PROJECT_TITLE",title:e})},,,function(e,t,n){var a=n(1443);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1588);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){"use strict";n.r(t),n.d(t,"TextEncoder",(function(){return a})),n.d(t,"TextDecoder",(function(){return o}));const a="function"==typeof TextEncoder?TextEncoder:class{constructor(e){if(null!=e&&"utf-8"!==e&&"utf8"!==e)throw new Error("Encoding is not supported");this.encoding="utf-8"}encode(e){if("string"!=typeof e)throw new TypeError("Argument is not a string");e=unescape(encodeURIComponent(e));const t=new Uint8Array(e.length);for(let n=0;n(null===r&&(r=o.a.isSupported()),r);let s=null;const l=()=>{if(null===s)try{new Function(""),s=!0}catch(e){s=!1}return s},c=()=>l()&&i()},,function(e,t,n){var a=n(1453);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1562);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1582);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,,function(e,t,n){"use strict";var a=n(0),o=n.n(a),r=n(1),i=n.n(r),s=n(4),l=n.n(s),c=n(451),d=n.n(c);const u=["small"];function p(){return(p=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const h=e=>{const{small:t}=e,n=m(e,u);return i.a.createElement("input",p({},n,{className:l()(d.a.inputForm,e.className,{[d.a.inputSmall]:t})}))};h.propTypes={className:o.a.string,small:o.a.bool},h.defaultProps={small:!1},t.a=h},function(e,t,n){"use strict";let a=null;const o=()=>!!a;t.a={get:()=>{if(!o())throw new Error("scratch-blocks is not loaded yet");return a},isLoaded:o,load:()=>a?Promise.resolve():n.e(84).then(n.t.bind(null,1631,7)).then(e=>(a=e.default,a))}},function(e,t,n){var a=n(1479);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1579);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1586);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return i}));const a="scratch-gui/restore-deletion/RESTORE_UPDATE",o={restoreFun:null,deletedItem:""},r=function(e,t){switch(void 0===e&&(e=o),t.type){case a:return Object.assign({},e,t.state);default:return e}},i=function(e){return{type:a,state:{restoreFun:e.restoreFun,deletedItem:e.deletedItem}}}},,function(e,t,n){"use strict";n.d(t,"c",(function(){return we})),n.d(t,"d",(function(){return ve})),n.d(t,"b",(function(){return ye}));var a=n(1),o=n.n(a),r=n(2),i=n(697),s=n.n(i),l=n(698),c=n.n(l),d=n(699),u=n.n(d),p=n(700),m=n.n(p),h=n(701),g=n.n(h),b=n(702),f=n.n(b),w=n(703),v=n.n(w),y=n(704),_=n.n(y),k=n(705),S=n.n(k),E=n(706),x=n.n(E),C=n(707),O=n.n(C),F=n(708),j=n.n(F),M=n(709),P=n.n(M),T=n(328),R=n.n(T),I=n(710),D=n.n(I),A=n(711),B=n.n(A),N=n(329),L=n.n(N),z=n(712),U=n.n(z),q=n(713),W=n.n(q),H=n(330),G=n.n(H),V=n(714),K=n.n(V),X=n(715),Q=n.n(X),Y=n(716),J=n.n(Y),Z=n(331),$=n.n(Z),ee=n(717),te=n.n(ee),ne=n(718),ae=n.n(ne),oe=n(719),re=n.n(oe),ie=n(332),se=n.n(ie),le=n(720),ce=n.n(le),de=n(721),ue=n.n(de),pe=n(722),me=n.n(pe),he=n(723),ge=n.n(he),be=n(359),fe=n.n(be);t.a=[{name:o.a.createElement(r.b,{defaultMessage:"Music",id:"gui.extension.music.name"}),extensionId:"music",iconURL:s.a,insetIconURL:c.a,description:o.a.createElement(r.b,{defaultMessage:"Play instruments and drums.",id:"gui.extension.music.description"}),tags:["scratch"],featured:!0},{name:o.a.createElement(r.b,{defaultMessage:"Pen",id:"gui.extension.pen.name"}),extensionId:"pen",iconURL:u.a,insetIconURL:m.a,description:o.a.createElement(r.b,{defaultMessage:"Draw with your sprites.",id:"gui.extension.pen.description"}),tags:["scratch"],featured:!0},{name:o.a.createElement(r.b,{defaultMessage:"Video Sensing",id:"gui.extension.videosensing.name"}),extensionId:"videoSensing",iconURL:g.a,insetIconURL:f.a,description:o.a.createElement(r.b,{defaultMessage:"Sense motion with the camera.",id:"gui.extension.videosensing.description"}),tags:["scratch"],featured:!0},{name:o.a.createElement(r.b,{defaultMessage:"Text to Speech",id:"gui.extension.text2speech.name"}),extensionId:"text2speech",collaborator:"Amazon Web Services",iconURL:v.a,insetIconURL:_.a,description:o.a.createElement(r.b,{defaultMessage:"Make your projects talk.",id:"gui.extension.text2speech.description"}),tags:["scratch"],featured:!0,internetConnectionRequired:!0},{name:o.a.createElement(r.b,{defaultMessage:"Translate",id:"gui.extension.translate.name"}),extensionId:"translate",collaborator:"Google",iconURL:S.a,insetIconURL:x.a,description:o.a.createElement(r.b,{defaultMessage:"Translate text into many languages.",id:"gui.extension.translate.description"}),tags:["scratch"],featured:!0,internetConnectionRequired:!0},{name:"Makey Makey",extensionId:"makeymakey",collaborator:"JoyLabz",iconURL:O.a,insetIconURL:j.a,description:o.a.createElement(r.b,{defaultMessage:"Make anything into a key.",id:"gui.extension.makeymakey.description"}),tags:["scratch"],featured:!0},{name:"micro:bit",extensionId:"microbit",collaborator:"micro:bit",iconURL:P.a,insetIconURL:R.a,description:o.a.createElement(r.b,{defaultMessage:"Connect your projects with the world.",id:"gui.extension.microbit.description"}),tags:["scratch"],featured:!0,disabled:!1,bluetoothRequired:!0,internetConnectionRequired:!0,launchPeripheralConnectionFlow:!0,useAutoScan:!1,connectionIconURL:D.a,connectionSmallIconURL:R.a,connectingMessage:o.a.createElement(r.b,{defaultMessage:"Connecting",id:"gui.extension.microbit.connectingMessage"}),helpLink:"https://scratch.mit.edu/microbit"},{name:"LEGO MINDSTORMS EV3",extensionId:"ev3",collaborator:"LEGO",iconURL:B.a,insetIconURL:L.a,description:o.a.createElement(r.b,{defaultMessage:"Build interactive robots and more.",id:"gui.extension.ev3.description"}),tags:["scratch"],featured:!0,disabled:!1,bluetoothRequired:!0,internetConnectionRequired:!0,launchPeripheralConnectionFlow:!0,useAutoScan:!1,connectionIconURL:U.a,connectionSmallIconURL:L.a,connectingMessage:o.a.createElement(r.b,{defaultMessage:"Connecting. Make sure the pin on your EV3 is set to 1234.",id:"gui.extension.ev3.connectingMessage"}),helpLink:"https://scratch.mit.edu/ev3"},{name:"LEGO BOOST",extensionId:"boost",collaborator:"LEGO",iconURL:J.a,insetIconURL:$.a,description:o.a.createElement(r.b,{defaultMessage:"Bring robotic creations to life.",id:"gui.extension.boost.description"}),tags:["scratch"],featured:!0,disabled:!1,bluetoothRequired:!0,internetConnectionRequired:!0,launchPeripheralConnectionFlow:!0,useAutoScan:!0,connectionIconURL:te.a,connectionSmallIconURL:$.a,connectionTipIconURL:ae.a,connectingMessage:o.a.createElement(r.b,{defaultMessage:"Connecting",id:"gui.extension.boost.connectingMessage"}),helpLink:"https://scratch.mit.edu/boost"},{name:"LEGO Education WeDo 2.0",extensionId:"wedo2",collaborator:"LEGO",iconURL:W.a,insetIconURL:G.a,description:o.a.createElement(r.b,{defaultMessage:"Build with motors and sensors.",id:"gui.extension.wedo2.description"}),tags:["scratch"],featured:!0,disabled:!1,bluetoothRequired:!0,internetConnectionRequired:!0,launchPeripheralConnectionFlow:!0,useAutoScan:!0,connectionIconURL:K.a,connectionSmallIconURL:G.a,connectionTipIconURL:Q.a,connectingMessage:o.a.createElement(r.b,{defaultMessage:"Connecting",id:"gui.extension.wedo2.connectingMessage"}),helpLink:"https://scratch.mit.edu/wedo"},{name:"Go Direct Force & Acceleration",extensionId:"gdxfor",collaborator:"Vernier",iconURL:re.a,insetIconURL:se.a,description:o.a.createElement(r.b,{defaultMessage:"Sense push, pull, motion, and spin.",id:"gui.extension.gdxfor.description"}),tags:["scratch"],featured:!0,disabled:!1,bluetoothRequired:!0,internetConnectionRequired:!0,launchPeripheralConnectionFlow:!0,useAutoScan:!1,connectionIconURL:ce.a,connectionSmallIconURL:se.a,connectingMessage:o.a.createElement(r.b,{defaultMessage:"Connecting",id:"gui.extension.gdxfor.connectingMessage"}),helpLink:"https://scratch.mit.edu/vernier"},{name:o.a.createElement(r.b,{defaultMessage:"Custom Reporters",id:"tw.customReporters.name"}),extensionId:"procedures_enable_return",iconURL:ge.a,description:o.a.createElement(r.b,{defaultMessage:"Allow custom blocks to output values and be used as inputs.",id:"tw.customReporters.description"}),tags:["tw"],incompatibleWithScratch:!0,featured:!0},{name:o.a.createElement(r.b,{defaultMessage:"TurboWarp Blocks",id:"tw.twExtension.name"}),extensionId:"tw",iconURL:ue.a,description:o.a.createElement(r.b,{defaultMessage:"Weird new blocks.",id:"tw.twExtension.description"}),incompatibleWithScratch:!0,tags:["tw"],featured:!0},{name:o.a.createElement(r.b,{defaultMessage:"Custom Extension",id:"tw.customExtension.name"}),extensionId:"custom_extension",iconURL:me.a,description:o.a.createElement(r.b,{defaultMessage:"Load custom extensions from URLs, files, or JavaScript source code.",id:"tw.customExtension.description"}),tags:["tw"],featured:!0}];const we={name:o.a.createElement(r.b,{defaultMessage:"TurboWarp Extension Gallery",id:"tw.extensionGallery.name"}),href:"https://extensions.turbowarp.org/",extensionId:"gallery",iconURL:fe.a,description:o.a.createElement(r.b,{defaultMessage:"Loading extension gallery...",id:"tw.extensionGallery.loading"}),tags:["tw"],featured:!0},ve={name:o.a.createElement(r.b,{defaultMessage:"TurboWarp Extension Gallery",id:"tw.extensionGallery.name"}),href:"https://extensions.turbowarp.org/",extensionId:"gallery",iconURL:fe.a,description:o.a.createElement(r.b,{defaultMessage:"Learn more about extensions at extensions.turbowarp.org.",id:"tw.extensionGallery.more"}),tags:["tw"],featured:!0},ye={name:o.a.createElement(r.b,{defaultMessage:"TurboWarp Extension Gallery",id:"tw.extensionGallery.name"}),href:"https://extensions.turbowarp.org/",extensionId:"gallery",iconURL:fe.a,description:o.a.createElement(r.b,{defaultMessage:"Error loading extension gallery. Visit extensions.turbowarp.org to find more extensions.",id:"tw.extensionGallery.error"}),tags:["tw"],featured:!0}},function(e,t,n){"use strict";const a={event(){}};t.a=a},function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return o})),n.d(t,"c",(function(){return a})),n.d(t,"d",(function(){return i}));const a={width:480,height:360},o=(()=>{if("undefined"==typeof URLSearchParams)return null;const e=new URLSearchParams(location.search).get("size");if(null===e)return null;const t=e.match(/^(\d+)[^\d]+(\d+)$/);if(!t)return alert("Could not parse custom stage size"),null;const[n,a,o]=t;if(!a||!o)return null;return{width:Math.max(0,Math.min(4096,+a)),height:Math.max(0,Math.min(4096,+o))}})()||a,r=function(e,t){switch(void 0===e&&(e=o),t.type){case"tw/custom-stage-size/SET":return Object.assign({},e,{width:t.width,height:t.height});default:return e}},i=function(e,t){return{type:"tw/custom-stage-size/SET",width:e,height:t}}},function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"d",(function(){return o})),n.d(t,"a",(function(){return l})),n.d(t,"c",(function(){return s})),n.d(t,"e",(function(){return c})),n.d(t,"h",(function(){return d})),n.d(t,"f",(function(){return u})),n.d(t,"g",(function(){return p}));var a=n(12);const o={monitors:{},savedMonitorPositions:{}},r=function(e,t){return e.monitors.hasOwnProperty(t.monitorId)?(a.default.error("Can't add monitor, monitor with id ".concat(t.monitorId," already exists.")),e):(n=t.upperStart,o=t.lowerEnd,!(isNaN(n.x)||isNaN(n.y)||isNaN(o.x)||isNaN(o.y))&&n.xe-t),r.sort((e,t)=>e-t);let l=null;for(const t of o)if(t!==i){i=t;e:for(const o of r){if(o===s)continue;s=o;const r={upperStart:{x:t+5,y:o+5},lowerEnd:{x:t+5+n,y:o+5+a}},i={upperStart:{x:t,y:o},lowerEnd:{x:t+n+10,y:o+a+10}};for(const t in e.monitors)if(c=e.monitors[t],d=i,!(c.upperStart.x>=d.lowerEnd.x||d.upperStart.x>=c.lowerEnd.x||c.upperStart.y>=d.lowerEnd.y||d.upperStart.y>=c.lowerEnd.y))continue e;if(!(i.lowerEnd.x>400||i.lowerEnd.y>300))return r;l||i.upperStart.x+40>400||i.upperStart.y+40>300||(l=r)}}var c,d;if(l)return l;const u=Math.ceil(200*Math.random()),p=Math.ceil(260*Math.random());return{upperStart:{x:u,y:p},lowerEnd:{x:u+n,y:p+a}}},l=function(e,t,n,a){return{type:"scratch-gui/monitors/ADD_MONITOR_RECT",monitorId:e,upperStart:t,lowerEnd:n,savePosition:a}},c=function(e,t,n){return{type:"scratch-gui/monitors/MOVE_MONITOR_RECT",monitorId:e,newX:t,newY:n}},d=function(e,t,n){return{type:"scratch-gui/monitors/RESIZE_MONITOR_RECT",monitorId:e,newWidth:t,newHeight:n}},u=function(e){return{type:"scratch-gui/monitors/REMOVE_MONITOR_RECT",monitorId:e}},p=function(){return{type:"scratch-gui/monitors/RESET_MONITOR_LAYOUT"}}},,function(e,t,n){var a=n(1457);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1480);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,,,,,function(e,t,n){"use strict";var a=n(5),o=n.n(a),r=n(0),i=n.n(r),s=n(1),l=n.n(s);function c(){return(c=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const f=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||l.d;t.a=function(e,t){class a extends o.a.Component{constructor(e){super(e);let a,o={},r={},i=u.c;const s=Object(h.b)(Object.keys(m.a));if("en"!==s&&(i=Object(u.b)(i,s)),t)r={locales:u.a},o={locales:i},a=f();else{const t=n(1630),s=t.default,{guiInitialState:l,guiMiddleware:c,initFullScreen:d,initPlayer:p,initEmbedded:m,initTelemetryModal:h}=t,{ScratchPaintReducer:g}=n(438);let b=l;e.isFullScreen||e.isPlayerOnly?(e.isFullScreen&&(b=d(b)),e.isPlayerOnly&&(b=p(b))):e.showTelemetryModal&&(b=h(b)),e.isEmbedded&&(b=m(b)),r={locales:u.a,scratchGui:s,scratchPaint:g},o={locales:i,scratchGui:b},a=f(c)}const c=Object(l.c)(r);this.store=Object(l.e)((e,t)=>{const n=c(e,t);return d.a.appStateReducer(t,e,n),n},o,a),window.ReduxStore=this.store,d.a.appStateStore=this.store}componentDidUpdate(e){t||(e.isPlayerOnly!==this.props.isPlayerOnly&&this.store.dispatch(Object(p.d)(this.props.isPlayerOnly)),e.isFullScreen!==this.props.isFullScreen&&this.store.dispatch(Object(p.c)(this.props.isFullScreen)))}render(){const t=this.props,{isFullScreen:n,isPlayerOnly:a,showTelemetryModal:r}=t,i=b(t,g);return o.a.createElement(s.a,{store:this.store},o.a.createElement(c.a,null,o.a.createElement(e,i)))}}return a.propTypes={isFullScreen:i.a.bool,isPlayerOnly:i.a.bool,isTelemetryEnabled:i.a.bool,showTelemetryModal:i.a.bool,isEmbedded:i.a.bool},a}},function(e,t,n){"use strict";n.d(t,"b",(function(){return m})),n.d(t,"a",(function(){return b}));var a=n(1),o=n.n(a),r=n(0),i=n.n(r),s=n(6),l=n(12),c=n(100),d=n(25);const u=["projectId","onSetAuthor","onSetDescription","onSetProjectTitle"];function p(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const m=async e=>{const t=["https://trampoline.turbowarp.org/api/projects/".concat(e),"https://trampoline.turbowarp.xyz/api/projects/".concat(e)];let n;for(const e of t)try{const t=await fetch(e),n=await t.json();if(t.ok)return n;if(404===t.status)throw new Error("Project is probably unshared");throw new Error("Unexpected status code: ".concat(t.status))}catch(e){n||(n=e)}throw n},h=()=>document.querySelector('meta[name="robots"][content="noindex"]'),g=e=>{if(e){const e=h();e&&e.remove()}else if(!h()){const e=document.createElement("meta");e.name="robots",e.content="noindex",document.head.appendChild(e)}},b=function(e){class t extends o.a.Component{shouldComponentUpdate(e){return this.props.projectId!==e.projectId}componentDidUpdate(){this.props.onSetAuthor("",""),this.props.onSetDescription("","");const e=this.props.projectId;"0"!==e&&m(e).then(t=>{if(this.props.projectId!==e)return;const n=t.title;n&&this.props.onSetProjectTitle(n);const a=t.author.username,o="https://trampoline.turbowarp.org/avatars/".concat(t.author.id);this.props.onSetAuthor(a,o);const r=t.instructions||"",i=t.description||"";(r||i)&&this.props.onSetDescription(r,i),g(!0)}).catch(e=>{g(!1),"".concat(e).includes("unshared")&&this.props.onSetDescription("unshared","unshared"),l.default.warn("cannot fetch project meta",e)})}render(){const t=this.props,{projectId:n,onSetAuthor:a,onSetDescription:r,onSetProjectTitle:i}=t,s=p(t,u);return o.a.createElement(e,s)}}t.propTypes={projectId:i.a.string,onSetAuthor:i.a.func,onSetDescription:i.a.func,onSetProjectTitle:i.a.func};return Object(s.b)(e=>({projectId:e.scratchGui.projectState.projectId}),e=>({onSetAuthor:(t,n)=>e(Object(d.d)({username:t,thumbnail:n})),onSetDescription:(t,n)=>e(Object(d.h)({instructions:t,credits:n})),onSetProjectTitle:t=>e(Object(c.c)(t))}))(t)}},function(e,t,n){"use strict";n.d(t,"a",(function(){return O}));var a=n(1),o=n.n(a),r=n(0),i=n.n(r),s=n(6),l=n(5),c=n.n(l),d=n(13),u=n.n(d),p=n(12),m=n(2),h=n(25),g=n(11),b=n(78),f=n(342),w=n(98),v=n(126);const y=["intl","customStageSize","isFullScreen","isPlayerOnly","isEmbedded","projectChanged","compilerOptions","runtimeOptions","highQualityPen","framerate","interpolation","turbo","onSetIsFullScreen","onSetIsPlayerOnly","onSetProjectId","onSetUsername","reduxProjectId","routingStyle","username","vm"];function _(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const k=Object(m.g)({invalidFPS:{id:"tw.invalidParameters.fps",defaultMessage:'"fps" URL parameter is invalid'},invalidClones:{id:"tw.invalidParameters.clones",defaultMessage:'"clone" URL parameter is invalid'}}),S=()=>{const e=location.hash.match(/#(\d+)/);return null===e?null:e[1]};class E{constructor({onSetProjectId:e,onSetIsPlayerOnly:t,onSetIsFullScreen:n}){this.onSetProjectId=e,this.onSetIsPlayerOnly=t,this.onSetIsFullScreen=n}onhashchange(){}onpathchange(){}generateURL(){return""}}class x extends E{onhashchange(){this.onSetProjectId(S()||g.e)}generateURL({projectId:e}){const t=location.hash.split("?")[1];return"".concat(location.pathname).concat(location.search,"#").concat(e).concat(t?"?".concat(t):"")}}const C={none:E,hash:x,filehash:class extends x{constructor(e){super(e),this.playerPath=location.pathname.substring(0,location.pathname.lastIndexOf("/")+1),this.editorPath="".concat(this.playerPath,"editor.html"),this.fullscreenPath="".concat(this.playerPath,"fullscreen.html")}onpathchange(){const e=location.pathname;e===this.playerPath?(this.onSetIsPlayerOnly(!0),this.onSetIsFullScreen(!1)):e===this.editorPath?(this.onSetIsPlayerOnly(!1),this.onSetIsFullScreen(!1)):e===this.fullscreenPath&&this.onSetIsFullScreen(!0)}generateURL({projectId:e,isPlayerOnly:t,isFullScreen:n}){let a="",o="";"0"!==e&&(o=e);const r=location.hash.split("?")[1];return r&&(o+="?".concat(r)),a=n?this.fullscreenPath:t?this.playerPath:this.editorPath,"".concat(a).concat(location.search).concat(o?"#".concat(o):"")}},wildcard:class extends E{constructor(e){super(e),this.root=""}onhashchange(){const e=S();if(e){this.onSetProjectId(e)&&history.replaceState(null,null,"".concat(location.pathname).concat(location.search))}else this.parseURL(!1)}onpathchange(){this.parseURL(!0)}parseURL(e){const t=location.pathname.substr(this.root.length).split("/"),n=e=>{e?this.onSetProjectId(e):this.onSetProjectId(g.e)},a=t=>{e&&("fullscreen"===t?this.onSetIsFullScreen(!0):"editor"===t?(this.onSetIsPlayerOnly(!1),this.onSetIsFullScreen(!1)):(this.onSetIsPlayerOnly(!0),this.onSetIsFullScreen(!1)))};+t[0]&&Number.isFinite(+t[0])?(n(t[0]),a(t[1])):(this.onSetProjectId(g.e),a(t[0]))}generateURL({projectId:e,isPlayerOnly:t,isFullScreen:n}){const a=[];"0"!==e&&a.push(e),n?a.push("fullscreen"):t||a.push("editor");const o="".concat(this.root).concat(a.join("/")),r="".concat(location.origin).concat(this.root).concat("0"===e?"":e);return(()=>{let e=document.querySelector("link[rel=canonical]");return e||(e=document.createElement("link"),e.rel="canonical",document.head.appendChild(e)),e})().href=r,"".concat(o).concat(location.search).concat(location.hash)}}},O=function(e){class t extends o.a.Component{constructor(e){super(e),c()(this,["handleHashChange","handlePopState","onSetProjectId","onSetIsPlayerOnly","onSetIsFullScreen"])}componentDidMount(){const e=new URLSearchParams(location.search);if(e.has("fps")){const t=+e.get("fps");Number.isNaN(t)||t<0?alert(this.props.intl.formatMessage(k.invalidFPS)):this.props.vm.setFramerate(t)}else e.has("60fps")&&this.props.vm.setFramerate(60);if(e.has("interpolate")&&this.props.vm.setInterpolation(!0),e.has("username")){const t=e.get("username");this.doNotPersistUsername=t,this.props.onSetUsername(t)}else{const e=this.props.isEmbedded?null:(e=>{try{return localStorage.getItem(e)}catch(e){}return null})("tw:username");if(null===e){const e=Object(f.a)();this.props.onSetUsername(e),this.props.isEmbedded&&(this.doNotPersistUsername=e)}else this.props.onSetUsername(e)}if(e.has("hqpen")&&this.props.vm.renderer.setUseHighQualityRender(!0),e.has("turbo")&&this.props.vm.setTurboMode(!0),(e.has("stuck")||e.has("warp_timer"))&&this.props.vm.setCompilerOptions({warpTimer:!0}),e.has("nocompile")&&this.props.vm.setCompilerOptions({enabled:!1}),e.has("clones")){const t=+e.get("clones");Number.isNaN(t)||t<0?alert(this.props.intl.formatMessage(k.invalidClones)):this.props.vm.setRuntimeOptions({maxClones:t})}e.has("offscreen")&&this.props.vm.setRuntimeOptions({fencing:!1}),e.has("limitless")&&this.props.vm.setRuntimeOptions({miscLimits:!1});for(const t of e.getAll("extension"))this.props.vm.extensionManager.loadExtensionURL(t);const t={onSetProjectId:this.onSetProjectId,onSetIsPlayerOnly:this.onSetIsPlayerOnly,onSetIsFullScreen:this.onSetIsFullScreen};this.router=((e,t)=>{const n=["none","hash"];if(("http:"===location.protocol||"https:"===location.protocol)&&n.push("filehash"),n.includes(e)||(p.default.warn("routing style is unknown or not supported: ".concat(e,", falling back to hash")),e="hash"),C.hasOwnProperty(e))return new C[e](t);throw new Error("unknown router: ".concat(e))})(this.props.routingStyle,t),this.router.onhashchange(),window.addEventListener("hashchange",this.handleHashChange),window.addEventListener("popstate",this.handlePopState)}componentDidUpdate(e){if(this.props.username!==e.username&&this.props.username!==this.doNotPersistUsername&&((e,t)=>{try{localStorage.setItem(e,t)}catch(e){}})("tw:username",this.props.username),this.props.reduxProjectId!==e.reduxProjectId||this.props.isPlayerOnly!==e.isPlayerOnly||this.props.isFullScreen!==e.isFullScreen){const e="".concat(location.pathname).concat(location.search).concat(location.hash),t={projectId:this.props.reduxProjectId,isPlayerOnly:this.props.isPlayerOnly,isFullScreen:this.props.isFullScreen},n=this.router.generateURL(t);n&&n!==e&&history.pushState(null,null,n)}if(this.props.customStageSize!==e.customStageSize||this.props.runtimeOptions!==e.runtimeOptions||this.props.compilerOptions!==e.compilerOptions||this.props.highQualityPen!==e.highQualityPen||this.props.framerate!==e.framerate||this.props.interpolation!==e.interpolation||this.props.turbo!==e.turbo){const e=new URLSearchParams(location.search),t=this.props.runtimeOptions,n=this.props.compilerOptions;e.delete("60fps");const{width:a,height:o}=this.props.customStageSize;a===v.c.width&&o===v.c.height?e.delete("size"):e.set("size","".concat(a,"x").concat(o)),30===this.props.framerate?e.delete("fps"):e.set("fps",this.props.framerate),this.props.interpolation?e.set("interpolate",""):e.delete("interpolate"),this.props.turbo?e.set("turbo",""):e.delete("turbo"),this.props.highQualityPen?e.set("hqpen",""):e.delete("hqpen"),n.enabled&&e.delete("nocompile"),this.props.isPlayerOnly&&(n.warpTimer?e.set("stuck",""):e.delete("stuck")),300===t.maxClones?e.delete("clones"):e.set("clones",t.maxClones),t.fencing?e.delete("offscreen"):e.set("offscreen",""),t.miscLimits?e.delete("limitless"):e.set("limitless",""),Object(w.b)(e)}}componentWillUnmount(){window.removeEventListener("hashchange",this.handleHashChange),window.removeEventListener("popstate",this.handlePopState)}handleHashChange(){this.router.onhashchange()}handlePopState(){this.router.onpathchange()}onSetProjectId(e){return"".concat(e)==="".concat(this.props.reduxProjectId)||!(this.props.projectChanged&&!confirm("Are you sure you want to switch project?"))&&(this.props.onSetProjectId(e),!0)}onSetIsPlayerOnly(e){this.props.onSetIsPlayerOnly(e)}onSetIsFullScreen(e){this.props.onSetIsFullScreen(e)}render(){const t=this.props,{intl:n,customStageSize:a,isFullScreen:r,isPlayerOnly:i,isEmbedded:s,projectChanged:l,compilerOptions:c,runtimeOptions:d,highQualityPen:u,framerate:p,interpolation:m,turbo:h,onSetIsFullScreen:g,onSetIsPlayerOnly:b,onSetProjectId:f,onSetUsername:w,reduxProjectId:v,routingStyle:k,username:S,vm:E}=t,x=_(t,y);return o.a.createElement(e,x)}}t.propTypes={intl:m.i,customStageSize:i.a.shape({width:i.a.number,height:i.a.number}),isFullScreen:i.a.bool,isPlayerOnly:i.a.bool,isEmbedded:i.a.bool,projectChanged:i.a.bool,projectId:i.a.string,compilerOptions:i.a.shape({enabled:i.a.bool,warpTimer:i.a.bool}),runtimeOptions:i.a.shape({miscLimits:i.a.bool,fencing:i.a.bool,maxClones:i.a.number}),highQualityPen:i.a.bool,framerate:i.a.number,interpolation:i.a.bool,turbo:i.a.bool,onSetIsFullScreen:i.a.func,onSetIsPlayerOnly:i.a.func,onSetProjectId:i.a.func,onSetUsername:i.a.func,reduxProjectId:i.a.oneOfType([i.a.string,i.a.number]),routingStyle:i.a.oneOf(Object.keys(C)),username:i.a.string,vm:i.a.instanceOf(u.a)},t.defaultProps={routingStyle:"hash"};return Object(m.h)(Object(s.b)(e=>({customStageSize:e.scratchGui.customStageSize,isFullScreen:e.scratchGui.mode.isFullScreen,isPlayerOnly:e.scratchGui.mode.isPlayerOnly,isEmbedded:e.scratchGui.mode.isEmbedded,projectChanged:e.scratchGui.projectChanged,reduxProjectId:e.scratchGui.projectState.projectId,compilerOptions:e.scratchGui.tw.compilerOptions,runtimeOptions:e.scratchGui.tw.runtimeOptions,highQualityPen:e.scratchGui.tw.highQualityPen,framerate:e.scratchGui.tw.framerate,interpolation:e.scratchGui.tw.interpolation,turbo:e.scratchGui.vmStatus.turbo,username:e.scratchGui.tw.username,vm:e.scratchGui.vm}),e=>({onSetIsFullScreen:t=>e(Object(b.c)(t)),onSetIsPlayerOnly:t=>e(Object(b.d)(t)),onSetProjectId:t=>e(Object(g.E)(t)),onSetUsername:t=>e(Object(h.q)(t))}))(t))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return S}));var a=n(5),o=n.n(a),r=n(1),i=n.n(r),s=n(0),l=n.n(s),c=n(2),d=n(6),u=n(12),p=n(89),m=n(233),h=n(25),g=n(11),b=n(100),f=n(15),w=n(36);const v=["cancelFileUpload","closeFileMenu","isLoadingUpload","isShowingWithoutId","loadingState","onLoadingFinished","onLoadingStarted","onSetFileHandle","onSetProjectTitle","projectChanged","requestProjectUpload","userOwnsProject"];function y(){return(y=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const k=Object(c.g)({loadError:{id:"tw.loadError",defaultMessage:"Could not load project: {error}"}}),S=function(e){class t extends i.a.Component{constructor(e){super(e),o()(this,["createFileObjects","getProjectTitleFromFilename","handleFinishedLoadingUpload","handleStartSelectingFileUpload","handleChange","onload","removeFileObjects"]),this.expectingFileUploadFinish=!1}componentDidUpdate(e){this.props.isLoadingUpload&&!e.isLoadingUpload&&this.expectingFileUploadFinish&&this.handleFinishedLoadingUpload()}componentWillUnmount(){this.removeFileObjects()}handleStartSelectingFileUpload(){this.expectingFileUploadFinish=!0,this.createFileObjects()}createFileObjects(){this.removeFileObjects(),this.fileReader=new FileReader,this.fileReader.onload=this.onload,m.a.available()?(async()=>{try{const e=await m.a.showOpenFilePicker(),t=await e.getFile();this.handleChange({target:{files:[t],handle:e}})}catch(e){if(e&&"AbortError"===e.name)return;console.error(e)}})():(this.inputElement=document.createElement("input"),this.inputElement.accept=".sb,.sb2,.sb3",this.inputElement.style="display: none;",this.inputElement.type="file",this.inputElement.onchange=this.handleChange,document.body.appendChild(this.inputElement),this.inputElement.click())}handleChange(e){const{intl:t,isShowingWithoutId:n,loadingState:a,projectChanged:o,userOwnsProject:r}=this.props,i=e.target;if(i.files){this.fileToUpload=i.files[0];let e=!0;if((r||o&&n)&&(e=confirm(t.formatMessage(p.a.replaceProjectWarning))),e){const e=i.handle;e&&(this.fileToUpload.name.endsWith(".sb3")?this.props.onSetFileHandle(e):this.props.onSetFileHandle(null)),this.props.requestProjectUpload(a)}else this.removeFileObjects();this.props.closeFileMenu()}}handleFinishedLoadingUpload(){this.expectingFileUploadFinish=!1,this.fileToUpload&&this.fileReader?this.fileReader.readAsArrayBuffer(this.fileToUpload):(this.props.cancelFileUpload(this.props.loadingState),this.removeFileObjects())}getProjectTitleFromFilename(e){if(!e)return"";const t=e.match(/^(.*)\.sb[23]?$/);return t?t[1].substring(0,100):""}onload(){if(this.fileReader){this.props.onLoadingStarted();const e=this.fileToUpload&&this.fileToUpload.name;let t=!1;this.props.vm.stop(),this.props.vm.loadProject(this.fileReader.result).then(()=>{if(e){const t=this.getProjectTitleFromFilename(e);this.props.onSetProjectTitle(t)}this.props.vm.renderer.draw(),t=!0}).catch(e=>{u.default.warn(e),alert(this.props.intl.formatMessage(k.loadError,{error:"".concat(e)}))}).then(()=>{this.props.onLoadingFinished(this.props.loadingState,t),this.removeFileObjects()})}}removeFileObjects(){this.inputElement&&(this.inputElement.value=null,document.body.removeChild(this.inputElement)),this.inputElement=null,this.fileReader=null,this.fileToUpload=null}render(){const t=this.props,{cancelFileUpload:n,closeFileMenu:a,isLoadingUpload:o,isShowingWithoutId:r,loadingState:s,onLoadingFinished:l,onLoadingStarted:c,onSetFileHandle:d,onSetProjectTitle:u,projectChanged:p,requestProjectUpload:m,userOwnsProject:h}=t,g=_(t,v);return i.a.createElement(i.a.Fragment,null,i.a.createElement(e,y({onStartSelectingFileUpload:this.handleStartSelectingFileUpload},g)))}}t.propTypes={canSave:l.a.bool,cancelFileUpload:l.a.func,closeFileMenu:l.a.func,intl:c.i.isRequired,isLoadingUpload:l.a.bool,isShowingProject:l.a.bool,isShowingWithoutId:l.a.bool,loadingState:l.a.oneOf(g.a),onLoadingFinished:l.a.func,onLoadingStarted:l.a.func,onSetProjectTitle:l.a.func,projectChanged:l.a.bool,requestProjectUpload:l.a.func,userOwnsProject:l.a.bool,vm:l.a.shape({loadProject:l.a.func,stop:l.a.func}),onSetFileHandle:l.a.func};return Object(c.h)(Object(d.b)((e,t)=>{const n=e.scratchGui.projectState.loadingState,a=e.session&&e.session.session&&e.session.session.user;return{isLoadingUpload:Object(g.n)(n),isShowingProject:Object(g.r)(n),isShowingWithoutId:Object(g.t)(n),loadingState:n,projectChanged:e.scratchGui.projectChanged,userOwnsProject:t.authorUsername&&a&&t.authorUsername===a.username,vm:e.scratchGui.vm}},(e,t)=>({cancelFileUpload:t=>e(Object(g.x)(t,!1,!1)),closeFileMenu:()=>e(Object(w.g)()),onLoadingFinished:(n,a)=>{e(Object(g.x)(n,t.canSave,a)),e(Object(f.g)()),e(Object(w.g)())},onLoadingStarted:()=>e(Object(f.x)()),onSetProjectTitle:t=>e(Object(b.c)(t)),requestProjectUpload:t=>e(Object(g.C)(t)),onSetFileHandle:t=>e(Object(h.j)(t))}),(e,t,n)=>Object.assign({},e,t,n))(t))}},function(e,t,n){e.exports=n.p+"static/assets/cb666b99d3528f91b52f985dfb102afa.svg"},function(e,t,n){e.exports=n.p+"static/assets/e587d9d7e9a2f1f28041ba5c15db7a40.svg"},function(e,t,n){e.exports=n.p+"static/assets/301439e2e5ab88b658368ee525e6752b.svg"},function(e,t,n){e.exports=n.p+"static/assets/551aae506dfa65ce3b45713b5300a678.svg"},function(e,t,n){"use strict";var a=n(5),o=n.n(a),r=n(0),i=n.n(r),s=n(1),l=n.n(s),c=n(6),d=n(100),u=n(88),p=n(99),m=n(29),h=n(25),g=n(233),b=n(11),f=n(12);const w=e=>{let t=0;for(let n=0;n{const t=w(e),n=new Uint8Array(t);let a=0;for(let t=0;t{this.finishedSaving(),Object(u.a)(this.props.projectFilename,e)}))}async saveAsNew(){if(this.props.canSaveProject)try{const e=await g.a.showSaveFilePicker(this.props.projectFilename);await this.saveToHandle(e),this.props.onSetFileHandle(e);const t=(e=>{if(!e)return"";const t=e.match(/^(.*)\.sb[23]?$/);return t?t[1].substring(0,100):""})(e.name);t&&this.props.onSetProjectTitle(t)}catch(e){this.handleSaveError(e)}}async saveToLastFile(){try{await this.saveToHandle(this.props.fileHandle)}catch(e){this.handleSaveError(e)}}saveToLastFileOrNew(){return this.props.fileHandle?this.saveToLastFile():this.saveAsNew()}async saveToHandle(e){if(!this.props.canSaveProject)return;const t=await e.createWritable();this.startedSaving(),await new Promise((e,n)=>{const a=this.props.saveProjectSb3Stream(),o=new AbortController;a.on("error",e=>{o.abort(e)});let r=!1;const i=()=>{r&&(r=!1,a.pause())},s=()=>{r||(r=!0,a.resume())},l=new ReadableStream({start:e=>{a.on("data",t=>{e.enqueue(t),e.desiredSize<=0&&i()}),a.on("end",()=>{e.close()}),s()},pull:()=>{s()},cancel:()=>{i()}},new ByteLengthQueuingStrategy({highWaterMark:5242880})),c=[],d=new WritableStream({write:e=>{c.push(e);if(w(c)>=1048576){const e=v(c);return c.length=0,t.write(e)}},close:async()=>{const e=v(c);e.byteLength&&await t.write(e),await t.close()},abort:async()=>{await t.abort()}});l.pipeTo(d,{signal:o.signal}).then(()=>{this.finishedSaving(),e()}).catch(e=>{n(e)})})}handleSaveError(e){e&&"AbortError"===e.name||(f.default.error(e),this.props.onShowSaveErrorAlert())}render(){const{children:e}=this.props;return e(this.props.className,this.downloadProject,g.a.available()?{available:!0,name:this.props.fileHandle?this.props.fileHandle.name:null,saveAsNew:this.saveAsNew,saveToLastFile:this.saveToLastFile,saveToLastFileOrNew:this.saveToLastFileOrNew,smartSave:this.saveToLastFileOrNew}:{available:!1,smartSave:this.downloadProject})}}const _=(e,t)=>{let n=e;return n&&0!==n.length||(n=t),"".concat(n.substring(0,100),".sb3")};y.propTypes={children:i.a.func,className:i.a.string,fileHandle:i.a.shape({name:i.a.string}),onSaveFinished:i.a.func,projectFilename:i.a.string,saveProjectSb3:i.a.func,saveProjectSb3Stream:i.a.func,canSaveProject:i.a.bool,onSetFileHandle:i.a.func,onSetProjectTitle:i.a.func,onShowSavingAlert:i.a.func,onShowSaveSuccessAlert:i.a.func,onShowSaveErrorAlert:i.a.func,onProjectUnchanged:i.a.func},y.defaultProps={className:""};t.a=Object(c.b)(e=>({fileHandle:e.scratchGui.tw.fileHandle,saveProjectSb3:e.scratchGui.vm.saveProjectSb3.bind(e.scratchGui.vm),saveProjectSb3Stream:e.scratchGui.vm.saveProjectSb3Stream.bind(e.scratchGui.vm),canSaveProject:Object(b.r)(e.scratchGui.projectState.loadingState),projectFilename:_(e.scratchGui.projectTitle,d.b)}),e=>({onSetFileHandle:t=>e(Object(h.j)(t)),onSetProjectTitle:t=>e(Object(d.c)(t)),onShowSavingAlert:()=>Object(m.g)(e,"saving"),onShowSaveSuccessAlert:()=>Object(m.g)(e,"twSaveToDiskSuccess"),onShowSaveErrorAlert:()=>e(Object(m.i)("savingError")),onProjectUnchanged:()=>e(Object(p.d)())}))(y)},function(e,t,n){"use strict";var a=n(0),o=n.n(a),r=n(1),i=n.n(r),s=n(77),l=n.n(s),c=n(7),d=n(2),u=n(106),p=n(298),m=n.n(p),h=n(861),g=n.n(h);const b=["intl"];function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function w(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const _=Object(d.g)({label:{id:"gui.unsupportedBrowser.label",defaultMessage:"Browser is not supported"}}),k=()=>{},S=e=>{let{intl:t}=e,n=y(e,b);const a=_.label;return i.a.createElement(l.a,{isOpen:!0,className:m.a.modalContent,contentLabel:t.formatMessage(w({},_.label)),overlayClassName:m.a.modalOverlay,onRequestClose:k},i.a.createElement("div",{dir:n.isRtl?"rtl":"ltr"},i.a.createElement(c.a,{className:m.a.illustration},i.a.createElement("img",{src:g.a})),i.a.createElement(c.a,{className:m.a.body},i.a.createElement("h2",null,i.a.createElement(d.b,a)),Object(u.b)()?null:i.a.createElement("p",null,"Unable to compile JavaScript with new Function(). This is most likely caused by an overly-strict Content-Security-Policy. The CSP must include 'unsafe-eval'."),!Object(u.c)()&&i.a.createElement(i.a.Fragment,null,i.a.createElement("p",null,i.a.createElement(d.b,{defaultMessage:"Your browser {webGlLink} which is needed for this site to run. Try updating your browser and graphics drivers or restarting your computer.",id:"tw.webglModal.description",values:{webGlLink:i.a.createElement("a",{href:"https://get.webgl.org/"},i.a.createElement(d.b,{defaultMessage:"does not support WebGL",id:"gui.webglModal.webgllink"}))}})),i.a.createElement("p",null,i.a.createElement(d.b,{defaultMessage:"Make sure you're using a recent version of Google Chrome, Mozilla Firefox, Microsoft Edge, or Apple Safari.",id:"tw.browserModal.desc"})),i.a.createElement("p",null,i.a.createElement(d.b,{defaultMessage:"On Apple devices, you must disable {lockdownMode}.",id:"tw.lockdownMode",values:{lockdownMode:i.a.createElement("a",{href:"https://support.apple.com/en-us/HT212650"},i.a.createElement(d.b,{defaultMessage:"Lockdown Mode",id:"tw.lockdownMode2"}))}}))))))};S.propTypes={intl:d.i.isRequired,isRtl:o.a.bool};const E=Object(d.h)(S);E.setAppElement=l.a.setAppElement,t.a=E},function(e,t,n){"use strict";t.a=()=>{Promise.all([n.e(1),n.e(73)]).then(n.bind(null,1633))}},function(e,t,n){"use strict";var a=n(1),o=n.n(a),r=n(0),i=n.n(r),s=n(40),l=n(6),c=n(77),d=n.n(c),u=n(13),p=n.n(u),m=n(2),h=n(72),g=n(11),b=n(41),f=n(15),w=n(63),v=n.n(w),y=n(285),_=n(326);var k=n(327);const S=["locale","onSetLanguage"];function E(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var x=function(e){class t extends o.a.Component{componentDidUpdate(e){e.locale!==this.props.locale&&this.props.onSetLanguage(this.props.locale)}render(){const t=this.props,{locale:n,onSetLanguage:a}=t,r=E(t,S);return o.a.createElement(k.a,null,o.a.createElement(e,r))}}t.propTypes={locale:i.a.string,onSetLanguage:i.a.func},t.defaultProps={onSetLanguage:()=>{}};return Object(l.b)(e=>({locale:e.locales.locale}),()=>({}))(t)},C=n(167),O=n(5),F=n.n(O),j=n(99),M=n(12),P=n(30),T=n(357);let R=0,I=0,D=0,A=0,B=(e,t,n,a)=>{};const N=e=>{B=e,B(D,A,I,R)};let L=null;const z=()=>{B(D,A,I,R),L=null},U=e=>{e<0&&(e=0),e>1&&(e=1),A=e,null===L&&(L=requestAnimationFrame(z))},q=e=>{D!==e&&(D=e,I=0,R=0,U(0))},W=e=>(q(1),new Promise((t,n)=>{const a=new XMLHttpRequest;a.responseType="blob",a.onload=()=>{t(new Response(a.response,{status:a.status,statusText:a.statusText}))},a.onloadend=()=>U(1),a.onerror=()=>n(new Error("[tw-progress-monitor] xhr failed")),a.onprogress=e=>{e.lengthComputable&&U(e.loaded/e.total)},a.open("GET",e),a.send()})),H=window.fetch;window.fetch=(e,t)=>{const n="object"==typeof t&&t&&"GET"===t.method,a="string"==typeof e&&/^https:\/\/projects\.scratch\.mit\.edu\/\d+$/.test(e);return n&&a?W(e):H(e,t)};const G=e=>{const t=e.data;Array.isArray(t)&&(I+=t.length,U(I/R))};if(window.Worker){let e=null;const t=window.Worker.prototype.postMessage;window.Worker.prototype.postMessage=function(n){null===e&&n&&n.url&&n.id&&n.options&&(e=this,e.addEventListener("message",G)),e===this&&(q(2),R++),t.call(this,n)}}var V=n(165);const K=["assetHost","intl","isLoadingProject","loadingState","onActivateTab","onError","onFetchedProjectData","onProjectUnchanged","projectHost","projectId","reduxProjectId","setProjectId","isFetchingWithId"];function X(){return(X=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Y=n(100);const J=["intl","isAnyCreatingNewState","isShowingWithoutId","onChangedProjectTitle","onUpdateProjectTitle","projectTitle","reduxProjectTitle"];function Z(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const $=Object(m.g)({defaultProjectTitle:{id:"tw.gui.defaultProjectTitle",defaultMessage:"Project"}});var ee=n(343),te=n(584),ne=n(142),ae=n.n(ne),oe=n(199),re=n.n(oe),ie=function(e,t,n){const a={body:t,headers:{"Content-Type":"application/json"},withCredentials:!0},o=null==e,r={};n.hasOwnProperty("originalId")&&(r.original_id=n.originalId),n.hasOwnProperty("isCopy")&&(r.is_copy=n.isCopy),n.hasOwnProperty("isRemix")&&(r.is_remix=n.isRemix),n.hasOwnProperty("title")&&(r.title=n.title);let i=ae.a.stringify(r);return i&&(i="?".concat(i)),o?Object.assign(a,{method:"post",url:"".concat(P.a.projectHost,"/").concat(i)}):Object.assign(a,{method:"put",url:"".concat(P.a.projectHost,"/").concat(e).concat(i)}),new Promise((t,n)=>{re()(a,(a,r)=>{if(a)return n(a);if(200!==r.statusCode)return n(r.statusCode);let i;try{i=JSON.parse(r.body)}catch(e){return n(e)}i.id=e,o&&(i.id=i["content-name"]),t(i)})})},se=n(29),le=n(286);const ce=["autoSaveTimeoutId","autoSaveIntervalSecs","isCreatingCopy","isCreatingNew","projectChanged","isAnyCreatingNewState","isLoading","isManualUpdating","isRemixing","isShowingSaveable","isShowingWithId","isShowingWithoutId","isUpdating","loadingState","onAutoUpdateProject","onCreatedProject","onCreateProject","onProjectError","onRemixing","onSetProjectUnchanged","onSetProjectThumbnailer","onSetProjectSaver","onShowAlert","onShowCopySuccessAlert","onShowRemixSuccessAlert","onShowCreatingCopyAlert","onShowCreatingRemixAlert","onShowSaveSuccessAlert","onShowSavingAlert","onUpdatedProject","onUpdateProjectData","onUpdateProjectThumbnail","reduxProjectId","reduxProjectTitle","setAutoSaveTimeoutId"];function de(){return(de=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var pe=n(84),me=n(125);var he=n(79);var ge=n(196),be=n(282),fe=n(284),we=n(138),ve=n(283),ye=n(25),_e=n(126);const ke=["attachKeyboardEvents","projectChanged","shouldUpdateTargets","shouldUpdateProjectChanged","onBlockDragUpdate","onGreenFlag","onKeyDown","onKeyUp","onMicListeningUpdate","onMonitorsUpdate","onTargetsUpdate","onProjectChanged","onProjectRunStart","onProjectRunStop","onProjectSaved","onRuntimeStarted","onRuntimeStopped","onTurboModeOff","onTurboModeOn","hasCloudVariables","onHasCloudVariablesChanged","onFramerateChanged","onInterpolationChanged","onCompilerOptionsChanged","onRuntimeOptionsChanged","onStageSizeChanged","onCompileError","onClearCompileErrors","onShowExtensionAlert"];function Se(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}let Ee=0;var xe=function(e){class t extends o.a.Component{constructor(e){super(e),F()(this,["handleKeyDown","handleKeyUp","handleProjectChanged","handleTargetsUpdate","handleCloudDataUpdate","handleCompileError"]),this.props.vm.on("targetsUpdate",this.handleTargetsUpdate),this.props.vm.on("MONITORS_UPDATE",this.props.onMonitorsUpdate),this.props.vm.on("BLOCK_DRAG_UPDATE",this.props.onBlockDragUpdate),this.props.vm.on("TURBO_MODE_ON",this.props.onTurboModeOn),this.props.vm.on("TURBO_MODE_OFF",this.props.onTurboModeOff),this.props.vm.on("PROJECT_RUN_START",this.props.onProjectRunStart),this.props.vm.on("PROJECT_RUN_STOP",this.props.onProjectRunStop),this.props.vm.on("PROJECT_CHANGED",this.handleProjectChanged),this.props.vm.on("RUNTIME_STARTED",this.props.onRuntimeStarted),this.props.vm.on("RUNTIME_STOPPED",this.props.onRuntimeStopped),this.props.vm.on("PROJECT_START",this.props.onGreenFlag),this.props.vm.on("PERIPHERAL_CONNECTION_LOST_ERROR",this.props.onShowExtensionAlert),this.props.vm.on("MIC_LISTENING",this.props.onMicListeningUpdate),this.props.vm.on("MIC_LISTENING",this.props.onMicListeningUpdate),this.props.vm.on("HAS_CLOUD_DATA_UPDATE",this.handleCloudDataUpdate),this.props.vm.on("COMPILER_OPTIONS_CHANGED",this.props.onCompilerOptionsChanged),this.props.vm.on("RUNTIME_OPTIONS_CHANGED",this.props.onRuntimeOptionsChanged),this.props.vm.on("FRAMERATE_CHANGED",this.props.onFramerateChanged),this.props.vm.on("INTERPOLATION_CHANGED",this.props.onInterpolationChanged),this.props.vm.on("COMPILE_ERROR",this.handleCompileError),this.props.vm.on("RUNTIME_STARTED",this.props.onClearCompileErrors),this.props.vm.on("STAGE_SIZE_CHANGED",this.props.onStageSizeChanged)}componentDidMount(){this.props.attachKeyboardEvents&&(document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("keyup",this.handleKeyUp)),this.props.vm.postIOData("userData",{username:this.props.username})}componentDidUpdate(e){e.username!==this.props.username&&this.props.vm.postIOData("userData",{username:this.props.username}),this.props.shouldUpdateTargets&&!e.shouldUpdateTargets&&this.props.vm.emitTargetsUpdate(!1)}componentWillUnmount(){this.props.vm.removeListener("PERIPHERAL_CONNECTION_LOST_ERROR",this.props.onShowExtensionAlert),this.props.attachKeyboardEvents&&(document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener("keyup",this.handleKeyUp))}handleCloudDataUpdate(e){this.props.hasCloudVariables!==e&&this.props.onHasCloudVariablesChanged(e)}handleCompileError(e,t){const n="".concat(t);n.includes("edge-activated hat")||n.includes("Script explicitly disables compilation")||this.props.onCompileError({sprite:e.getName(),error:n,id:Ee++})}handleProjectChanged(){this.props.shouldUpdateProjectChanged&&!this.props.projectChanged&&this.props.onProjectChanged()}handleTargetsUpdate(e){this.props.shouldUpdateTargets&&this.props.onTargetsUpdate(e)}handleKeyDown(e){if(e.target!==document&&e.target!==document.body)return;const t=e.key&&"Dead"!==e.key?e.key:e.keyCode;this.props.vm.postIOData("keyboard",{key:t,keyCode:e.keyCode,isDown:!0}),(32===e.keyCode||e.keyCode>=37&&e.keyCode<=40)&&e.preventDefault(),8===e.keyCode&&e.preventDefault(),222!==e.keyCode&&191!==e.keyCode||e.preventDefault()}handleKeyUp(e){const t=e.key&&"Dead"!==e.key?e.key:e.keyCode;this.props.vm.postIOData("keyboard",{key:t,keyCode:e.keyCode,isDown:!1}),e.target!==document&&e.target!==document.body&&e.preventDefault()}render(){const t=this.props,{attachKeyboardEvents:n,projectChanged:a,shouldUpdateTargets:r,shouldUpdateProjectChanged:i,onBlockDragUpdate:s,onGreenFlag:l,onKeyDown:c,onKeyUp:d,onMicListeningUpdate:u,onMonitorsUpdate:p,onTargetsUpdate:m,onProjectChanged:h,onProjectRunStart:g,onProjectRunStop:b,onProjectSaved:f,onRuntimeStarted:w,onRuntimeStopped:v,onTurboModeOff:y,onTurboModeOn:_,hasCloudVariables:k,onHasCloudVariablesChanged:S,onFramerateChanged:E,onInterpolationChanged:x,onCompilerOptionsChanged:C,onRuntimeOptionsChanged:O,onStageSizeChanged:F,onCompileError:j,onClearCompileErrors:M,onShowExtensionAlert:P}=t,T=Se(t,ke);return o.a.createElement(e,T)}}t.propTypes={attachKeyboardEvents:i.a.bool,onBlockDragUpdate:i.a.func.isRequired,onGreenFlag:i.a.func,onKeyDown:i.a.func,onKeyUp:i.a.func,onMicListeningUpdate:i.a.func.isRequired,onMonitorsUpdate:i.a.func.isRequired,onProjectChanged:i.a.func.isRequired,onProjectRunStart:i.a.func.isRequired,onProjectRunStop:i.a.func.isRequired,onProjectSaved:i.a.func.isRequired,onRuntimeStarted:i.a.func.isRequired,onRuntimeStopped:i.a.func.isRequired,onShowExtensionAlert:i.a.func.isRequired,onTargetsUpdate:i.a.func.isRequired,onTurboModeOff:i.a.func.isRequired,onTurboModeOn:i.a.func.isRequired,hasCloudVariables:i.a.bool,onHasCloudVariablesChanged:i.a.func.isRequired,onFramerateChanged:i.a.func.isRequired,onInterpolationChanged:i.a.func.isRequired,onCompilerOptionsChanged:i.a.func.isRequired,onRuntimeOptionsChanged:i.a.func.isRequired,onStageSizeChanged:i.a.func,onCompileError:i.a.func,onClearCompileErrors:i.a.func,projectChanged:i.a.bool,shouldUpdateTargets:i.a.bool,shouldUpdateProjectChanged:i.a.bool,username:i.a.string,vm:i.a.instanceOf(p.a).isRequired},t.defaultProps={attachKeyboardEvents:!0,onGreenFlag:()=>({})};return Object(l.b)(e=>({hasCloudVariables:e.scratchGui.tw.hasCloudVariables,projectChanged:e.scratchGui.projectChanged,shouldUpdateTargets:!e.scratchGui.mode.isFullScreen&&!e.scratchGui.mode.isPlayerOnly&&!e.scratchGui.modals.soundRecorder,shouldUpdateProjectChanged:!e.scratchGui.mode.isFullScreen&&!e.scratchGui.mode.isPlayerOnly,vm:e.scratchGui.vm,username:e.session&&e.session.session&&e.session.session.user?e.session.session.user.username:e.scratchGui.tw?e.scratchGui.tw.username:""}),e=>({onTargetsUpdate:t=>{e(Object(ge.d)(t.targetList,t.editingTarget))},onMonitorsUpdate:t=>{e(Object(fe.c)(t))},onBlockDragUpdate:t=>{e(Object(be.c)(t))},onProjectRunStart:()=>e(Object(we.b)(!0)),onProjectRunStop:()=>e(Object(we.b)(!1)),onProjectChanged:()=>e(Object(j.c)()),onProjectSaved:()=>e(Object(j.d)()),onRuntimeStarted:()=>e(Object(we.c)(!0)),onRuntimeStopped:()=>e(Object(we.c)(!1)),onTurboModeOn:()=>e(Object(we.d)(!0)),onTurboModeOff:()=>e(Object(we.d)(!1)),onHasCloudVariablesChanged:t=>e(Object(ye.l)(t)),onFramerateChanged:t=>e(Object(ye.k)(t)),onInterpolationChanged:t=>e(Object(ye.n)(t)),onCompilerOptionsChanged:t=>e(Object(ye.g)(t)),onRuntimeOptionsChanged:t=>e(Object(ye.p)(t)),onStageSizeChanged:(t,n)=>e(Object(_e.d)(t,n)),onCompileError:t=>e(Object(ye.a)(t)),onClearCompileErrors:()=>e(Object(ye.b)()),onShowExtensionAlert:t=>{e(Object(se.h)(t))},onMicListeningUpdate:t=>{e(Object(ve.c)(t))}}))(t)},Ce=n(344),Oe=n.n(Ce);const Fe=["fontsLoaded","loadingState","locale","messages","isStarted","onError","onLoadedProject","onSetProjectUnchanged","projectData","isLoadingWithId","vm"];function je(){return(je=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Pe=function(e){class t extends o.a.Component{constructor(e){super(e),F()(this,["loadProject"])}componentDidMount(){if(!this.props.vm.initialized){window.vm=this.props.vm;try{this.audioEngine=new Oe.a,this.props.vm.attachAudioEngine(this.audioEngine)}catch(e){M.default.error("could not create scratch-audio",e)}this.props.vm.initialized=!0,this.props.vm.setLocale(this.props.locale,this.props.messages)}this.props.isPlayerOnly||this.props.isStarted||this.props.vm.start()}componentDidUpdate(e){!this.props.isLoadingWithId||!this.props.fontsLoaded||e.isLoadingWithId&&e.fontsLoaded||this.loadProject(),this.props.isPlayerOnly||this.props.isStarted||this.props.vm.start()}loadProject(){return this.props.vm.stop(),this.props.vm.loadProject(this.props.projectData).then(()=>{this.props.onLoadedProject(this.props.loadingState,this.props.canSave),setTimeout(()=>this.props.onSetProjectUnchanged()),this.props.isStarted||setTimeout(()=>this.props.vm.renderer.draw())}).catch(e=>{this.props.onError(e)})}render(){const t=this.props,{fontsLoaded:n,loadingState:a,locale:r,messages:i,isStarted:s,onError:l,onLoadedProject:c,onSetProjectUnchanged:d,projectData:u,isLoadingWithId:p,vm:m}=t,h=Me(t,Fe);return o.a.createElement(e,je({isLoading:p,vm:m},h))}}t.propTypes={canSave:i.a.bool,cloudHost:i.a.string,fontsLoaded:i.a.bool,isLoadingWithId:i.a.bool,isPlayerOnly:i.a.bool,isStarted:i.a.bool,loadingState:i.a.oneOf(g.a),locale:i.a.string,messages:i.a.objectOf(i.a.string),onError:i.a.func,onLoadedProject:i.a.func,onSetProjectUnchanged:i.a.func,projectData:i.a.oneOfType([i.a.object,i.a.string]),projectId:i.a.oneOfType([i.a.string,i.a.number]),username:i.a.string,vm:i.a.instanceOf(p.a).isRequired};return Object(l.b)(e=>{const t=e.scratchGui.projectState.loadingState;return{fontsLoaded:e.scratchGui.fontsLoaded,isLoadingWithId:Object(g.o)(t),locale:e.locales.locale,messages:e.locales.messages,projectData:e.scratchGui.projectState.projectData,projectId:e.scratchGui.projectState.projectId,loadingState:t,isPlayerOnly:e.scratchGui.mode.isPlayerOnly,isStarted:e.scratchGui.vmStatus.started}},e=>({onError:t=>e(Object(g.y)(t)),onLoadedProject:(t,n)=>e(Object(g.x)(t,n,!0)),onSetProjectUnchanged:()=>e(Object(j.d)())}),(e,t,n)=>Object.assign({},e,t,n))(t)},Te=n(436),Re=n.n(Te);var Ie=class{constructor(e,t,n,a){this.vm=t,this.username=(e=>/^player\d{2,7}$/i.test(e)?"player":e)(n),this.projectId=a,this.cloudHost=e,this.connectionAttempts=0,this.queuedData=[],this.openConnection(),this.sendCloudData=Re()(this._sendCloudData,50)}openConnection(){this.connectionAttempts+=1;try{this.cloudHost&&(this.cloudHost.includes("ws://")||this.cloudHost.includes("wss://"))||(this.cloudHost=("http:"===location.protocol?"ws://":"wss://")+this.cloudHost),this.connection=new WebSocket(this.cloudHost)}catch(e){return M.default.warn("Websocket support is not available in this browser",e),void(this.connection=null)}this.connection.onerror=this.onError.bind(this),this.connection.onmessage=this.onMessage.bind(this),this.connection.onopen=this.onOpen.bind(this),this.connection.onclose=this.onClose.bind(this)}onError(e){M.default.error("Websocket connection error: ".concat(JSON.stringify(e)))}onMessage(e){e.data.split("\n").forEach(e=>{if(e){const t=this.parseMessage(JSON.parse(e));this.vm.postIOData("cloud",t)}})}onOpen(){this.connectionAttempts=1,this.writeToServer("handshake"),M.default.info("Successfully connected to clouddata server."),this.queuedData.forEach(e=>{this.sendCloudData(e)}),this.queuedData=[]}onClose(e){if(e&&4002===e.code)return M.default.info("Cloud username is invalid. Not reconnecting."),void this.onInvalidUsername();if(e&&4004===e.code)return void M.default.info("Cloud variables are disabled for this project. Not reconnecting.");M.default.info("Closed connection to websocket");const t=this.randomizeDuration(this.exponentialTimeout());this.setTimeout(this.openConnection.bind(this),t)}onInvalidUsername(){}exponentialTimeout(){return 1e3*(Math.pow(2,Math.min(this.connectionAttempts,5))-1)}randomizeDuration(e){return Math.random()*e}setTimeout(e,t){M.default.info("Reconnecting in ".concat((t/1e3).toFixed(1),"s, attempt ").concat(this.connectionAttempts)),this._connectionTimeout=window.setTimeout(e,t)}parseMessage(e){const t={};switch(e.method){case"set":t.varUpdate={name:e.name,value:e.value}}return t}writeToServer(e,t,n,a){const o={};o.method=e,o.user=this.username,o.project_id=this.projectId,t&&(o.name=t),a&&(o.new_name=a),null!=n&&(o.value=n);const r=JSON.stringify(o);this.connection&&this.connection.readyState===WebSocket.OPEN?this.sendCloudData(r):"create"!==o.method&&"delete"!==o.method&&"rename"!==o.method||this.queuedData.push(r)}_sendCloudData(e){this.connection.send("".concat(e,"\n"))}createVariable(e,t){this.writeToServer("create",e,t)}updateVariable(e,t){this.writeToServer("set",e,t)}renameVariable(e,t){this.writeToServer("rename",e,null,t)}deleteVariable(e){this.writeToServer("delete",e)}requestCloseConnection(){this.connection&&this.connection.readyState!==WebSocket.CLOSING&&this.connection.readyState!==WebSocket.CLOSED&&(M.default.info("Request close cloud connection without reconnecting"),this.connection.onclose=()=>{},this.connection.onerror=()=>{},this.connection.close()),this.clear()}clear(){this.connection=null,this.vm=null,this.username=null,this.projectId=null,this._connectionTimeout&&(clearTimeout(this._connectionTimeout),this._connectionTimeout=null),this.connectionAttempts=0}};const De=["canModifyCloudData","cloudHost","reduxCloudHost","onSetReduxCloudHost","projectId","username","hasCloudPermission","isShowingWithId","onShowCloudInfo","onInvalidUsername","vm"];function Ae(){return(Ae=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Ne=function(e){class t extends o.a.Component{constructor(e){super(e),this.cloudProvider=null,F()(this,["handleCloudDataUpdate","onInvalidUsername"]),this.props.vm.on("HAS_CLOUD_DATA_UPDATE",this.handleCloudDataUpdate),this.props.onSetReduxCloudHost(this.props.cloudHost)}componentDidMount(){this.shouldConnect(this.props)&&this.connectToCloud()}componentWillReceiveProps(e){this.props.reduxCloudHost!==e.cloudHost&&this.props.onSetReduxCloudHost(e.cloudHost)}componentDidUpdate(e){if(this.shouldReconnect(this.props,e))return this.disconnectFromCloud(),void(this.shouldConnect(this.props)&&this.connectToCloud());this.shouldConnect(this.props)&&!this.shouldConnect(e)&&this.connectToCloud(),this.shouldDisconnect(this.props,e)&&this.disconnectFromCloud()}componentWillUnmount(){this.props.vm.off("HAS_CLOUD_DATA_UPDATE",this.handleCloudDataUpdate),this.disconnectFromCloud()}canUseCloud(e){return!!(e.reduxCloudHost&&e.username&&e.vm&&e.projectId&&e.hasCloudPermission)}shouldConnect(e){return!this.isConnected()&&this.canUseCloud(e)&&e.isShowingWithId&&e.vm.runtime.hasCloudData()&&e.canModifyCloudData}shouldDisconnect(e,t){return this.isConnected()&&(!this.canUseCloud(e)||!e.vm.runtime.hasCloudData()||e.projectId!==t.projectId||!e.canModifyCloudData)}shouldReconnect(e,t){return this.isConnected()&&(e.username!==t.username||e.reduxCloudHost!==t.reduxCloudHost)}isConnected(){return this.cloudProvider&&!!this.cloudProvider.connection}connectToCloud(){this.cloudProvider=new Ie(this.props.reduxCloudHost,this.props.vm,this.props.username,this.props.projectId),this.cloudProvider.onInvalidUsername=this.onInvalidUsername,this.props.vm.setCloudProvider(this.cloudProvider)}disconnectFromCloud(){this.cloudProvider&&(this.cloudProvider.requestCloseConnection(),this.cloudProvider=null,this.props.vm.setCloudProvider(null))}handleCloudDataUpdate(e){this.isConnected()&&!e?this.disconnectFromCloud():this.shouldConnect(this.props)&&(this.props.onShowCloudInfo(),this.connectToCloud())}onInvalidUsername(){this.props.onInvalidUsername()}render(){const t=this.props,{canModifyCloudData:n,cloudHost:a,reduxCloudHost:r,onSetReduxCloudHost:i,projectId:s,username:l,hasCloudPermission:c,isShowingWithId:d,onShowCloudInfo:u,onInvalidUsername:p,vm:m}=t,h=Be(t,De);return o.a.createElement(e,Ae({canUseCloud:this.canUseCloud(this.props),vm:m},h))}}t.propTypes={canModifyCloudData:i.a.bool.isRequired,cloudHost:i.a.string,reduxCloudHost:i.a.string,onSetReduxCloudHost:i.a.func,hasCloudPermission:i.a.bool,isShowingWithId:i.a.bool.isRequired,onInvalidUsername:i.a.func,onShowCloudInfo:i.a.func,projectId:i.a.oneOfType([i.a.string,i.a.number]),username:i.a.string,vm:i.a.instanceOf(p.a).isRequired},t.defaultProps={cloudHost:null,onShowCloudInfo:()=>{},username:null};return Object(l.b)((e,t)=>{const n=e.scratchGui.projectState.loadingState;return{reduxCloudHost:e.scratchGui.tw.cloudHost,isShowingWithId:Object(g.s)(n),projectId:e.scratchGui.projectState.projectId,hasCloudPermission:e.scratchGui.tw.cloud,username:e.scratchGui.tw.username,canModifyCloudData:!e.scratchGui.mode.hasEverEnteredEditor||t.canSave}},e=>({onSetReduxCloudHost:t=>e(Object(ye.f)(t)),onShowCloudInfo:()=>Object(se.g)(e,"cloudInfo"),onInvalidUsername:()=>{e(Object(ye.r)(!0)),e(Object(f.E)())}}),(e,t,n)=>Object.assign({},e,t,n))(t)};const Le=["onSetDimensions","isFullScreen"];function ze(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Ue=n(4),qe=n.n(Ue),We=n(197),He=n.n(We),Ge=n(148),Ve=n(236),Ke=n.n(Ve),Xe=n(280),Qe=n.n(Xe),Ye=n(437),Je=n.n(Ye),Ze=n(345),$e=n.n(Ze),et=n(333),tt=n(115),nt=function(e){const t=tt.a.get(),n=function(e,n,a,o){return{message0:"%1",args0:[{type:"field_dropdown",name:e,options:function(){return o.concat(n())}}],inputsInline:!0,output:"String",colour:a.secondary,colourSecondary:a.secondary,colourTertiary:a.tertiary,outputShape:t.OUTPUT_SHAPE_ROUND}},a=function(){let n=[["",""]];return e.editingTarget&&e.editingTarget.sprite.sounds.length>0&&(n=e.editingTarget.sprite.sounds.map(e=>[e.name,e.name])),n.push([t.ScratchMsgs.translate("SOUND_RECORD","record..."),t.recordSoundCallback]),n},o=function(){return e.editingTarget&&e.editingTarget.getCostumes().length>0?e.editingTarget.getCostumes().map(e=>[e.name,e.name]):[["",""]]},r=function(){const n=t.ScratchMsgs.translate("LOOKS_NEXTBACKDROP","next backdrop"),a=t.ScratchMsgs.translate("LOOKS_PREVIOUSBACKDROP","previous backdrop"),o=t.ScratchMsgs.translate("LOOKS_RANDOMBACKDROP","random backdrop");return e.runtime.targets[0]&&e.runtime.targets[0].getCostumes().length>0?e.runtime.targets[0].getCostumes().map(e=>[e.name,e.name]).concat([[n,"next backdrop"],[a,"previous backdrop"],[o,"random backdrop"]]):[["",""]]},i=function(){const t=e.runtime.getTargetForStage();return t&&t.getCostumes().length>0?t.getCostumes().map(e=>[e.name,e.name]):[["",""]]},s=function(){const t=[];for(const n in e.runtime.targets)if(e.runtime.targets.hasOwnProperty(n)&&e.runtime.targets[n].isOriginal&&!e.runtime.targets[n].isStage){if(e.runtime.targets[n]===e.editingTarget)continue;t.push([e.runtime.targets[n].sprite.name,e.runtime.targets[n].sprite.name])}return t},l=function(){if(e.editingTarget&&e.editingTarget.isStage){const e=s();return 0===e.length?[["",""]]:e}return[[t.ScratchMsgs.translate("CONTROL_CREATECLONEOF_MYSELF","myself"),"_myself_"]].concat(s())},c=t.Colours.sounds,d=t.Colours.looks,u=t.Colours.motion,p=t.Colours.sensing,m=t.Colours.control,h=t.Colours.event;t.Blocks.sound_sounds_menu.init=function(){const e=n("SOUND_MENU",a,c,[]);this.jsonInit(e)},t.Blocks.looks_costume.init=function(){const e=n("COSTUME",o,d,[]);this.jsonInit(e)},t.Blocks.looks_backdrops.init=function(){const e=n("BACKDROP",r,d,[]);this.jsonInit(e)},t.Blocks.event_whenbackdropswitchesto.init=function(){const e=(n=t.Msg.EVENT_WHENBACKDROPSWITCHESTO,a=i,r=[],{message0:n,args0:[{type:"field_dropdown",name:"BACKDROP",options:function(){return r.concat(a())}}],colour:(o=h).primary,colourSecondary:o.secondary,colourTertiary:o.tertiary,extensions:["shape_hat"]});var n,a,o,r;this.jsonInit(e)},t.Blocks.motion_pointtowards_menu.init=function(){const e=t.ScratchMsgs.translate("MOTION_POINTTOWARDS_RANDOM","random direction"),a=t.ScratchMsgs.translate("MOTION_POINTTOWARDS_POINTER","mouse-pointer"),o=n("TOWARDS",s,u,[[a,"_mouse_"],[e,"_random_"]]);this.jsonInit(o)},t.Blocks.motion_goto_menu.init=function(){const e=t.ScratchMsgs.translate("MOTION_GOTO_RANDOM","random position"),a=t.ScratchMsgs.translate("MOTION_GOTO_POINTER","mouse-pointer"),o=n("TO",s,u,[[e,"_random_"],[a,"_mouse_"]]);this.jsonInit(o)},t.Blocks.motion_glideto_menu.init=function(){const e=t.ScratchMsgs.translate("MOTION_GLIDETO_RANDOM","random position"),a=t.ScratchMsgs.translate("MOTION_GLIDETO_POINTER","mouse-pointer"),o=n("TO",s,u,[[e,"_random_"],[a,"_mouse_"]]);this.jsonInit(o)},t.Blocks.sensing_of_object_menu.init=function(){const e=t.ScratchMsgs.translate("SENSING_OF_STAGE","Stage"),a=n("OBJECT",s,p,[[e,"_stage_"]]);this.jsonInit(a)},t.Blocks.sensing_of.init=function(){const n=this.id,a=this.type;let o;const r=e.runtime.flyoutBlocks._blocks;Object.keys(r).forEach(e=>{const t=r[e];(e===a||t&&t.opcode===a)&&(o=t)});const i=(s=function(){const a=[[t.Msg.SENSING_OF_BACKDROPNUMBER,"backdrop #"],[t.Msg.SENSING_OF_BACKDROPNAME,"backdrop name"],[t.Msg.SENSING_OF_VOLUME,"volume"]],r=[[t.Msg.SENSING_OF_XPOSITION,"x position"],[t.Msg.SENSING_OF_YPOSITION,"y position"],[t.Msg.SENSING_OF_DIRECTION,"direction"],[t.Msg.SENSING_OF_COSTUMENUMBER,"costume #"],[t.Msg.SENSING_OF_COSTUMENAME,"costume name"],[t.Msg.SENSING_OF_SIZE,"size"],[t.Msg.SENSING_OF_VOLUME,"volume"]];if(e.editingTarget){let i=e.editingTarget.blocks,s=i.getBlock(n);if(!s){if(s=e.runtime.flyoutBlocks.getBlock(n)||o,!s)return[["",""]];i=e.runtime.flyoutBlocks}const l=function(e){e.sort(t.scratchBlocksUtils.compareStrings)},c=e.runtime.getTargetForStage().getAllVariableNamesInScopeByType("");l(c);const d=c.map(e=>[e,e]);if(s.inputs.OBJECT.shadow!==s.inputs.OBJECT.block)return a.concat(d);const u=i.getBlock(s.inputs.OBJECT.shadow).fields.OBJECT.value;if("_stage_"===u)return a.concat(d);const p=e.runtime.getSpriteTargetByName(u);let m=[];p&&(m=p.getAllVariableNamesInScopeByType("",!0),l(m));const h=m.map(e=>[e,e]);return r.concat(h)}return[["",""]]},{message0:t.Msg.SENSING_OF,args0:[{type:"field_dropdown",name:"PROPERTY",options:function(){return s()}},{type:"input_value",name:"OBJECT"}],output:!0,colour:t.Colours.sensing.primary,colourSecondary:t.Colours.sensing.secondary,colourTertiary:t.Colours.sensing.tertiary,outputShape:t.OUTPUT_SHAPE_ROUND});var s;this.jsonInit(i)},t.Blocks.sensing_distancetomenu.init=function(){const e=t.ScratchMsgs.translate("SENSING_DISTANCETO_POINTER","mouse-pointer"),a=n("DISTANCETOMENU",s,p,[[e,"_mouse_"]]);this.jsonInit(a)},t.Blocks.sensing_touchingobjectmenu.init=function(){const e=t.ScratchMsgs.translate("SENSING_TOUCHINGOBJECT_POINTER","mouse-pointer"),a=t.ScratchMsgs.translate("SENSING_TOUCHINGOBJECT_EDGE","edge"),o=n("TOUCHINGOBJECTMENU",s,p,[[e,"_mouse_"],[a,"_edge_"]]);this.jsonInit(o)},t.Blocks.control_create_clone_of_menu.init=function(){const e=n("CLONE_OPTION",l,m,[]);this.jsonInit(e)},t.VerticalFlyout.getCheckboxState=function(t){const n=e.runtime.monitorBlocks._blocks[t];return!!n&&n.isMonitored},t.FlyoutExtensionCategoryHeader.getExtensionState=function(n){return e.getPeripheralIsConnected(n)?t.StatusButtonState.READY:t.StatusButtonState.NOT_READY},t.FieldNote.playNote_=function(t,n){e.runtime.emit("PLAY_NOTE",t,n)};const g=new Intl.Collator([],{sensitivity:"base",numeric:!0});return t.scratchBlocksUtils.compareStrings=function(e,t){return g.compare(e,t)},t.utils.is3dSupported=function(){return!0},t},at=n(7),ot=n(59),rt=n(181),it=n.n(rt),st=n(168),lt=n.n(st),ct=n(771),dt=n.n(ct),ut=n(346),pt=n.n(ut);let mt={};const ht=e=>o.a.createElement("div",{"aria-label":"Close",className:qe()(it.a.closeButton,e.className,{[it.a.small]:e.size===ht.SIZE_SMALL,[it.a.large]:e.size===ht.SIZE_LARGE,[it.a.orange]:e.color===ht.COLOR_ORANGE}),role:"button",tabIndex:"0",onClick:e.onClick},"back"===e.buttonType?o.a.createElement("img",{className:it.a.backIcon,src:pt.a}):o.a.createElement("img",{className:qe()(it.a.closeIcon,{[it.a[e.color]]:e.color!==ht.COLOR_NEUTRAL}),src:e.color&&mt[e.color]?mt[e.color]:lt.a}));ht.SIZE_SMALL="small",ht.SIZE_LARGE="large",ht.COLOR_NEUTRAL="neutral",ht.COLOR_GREEN="green",ht.COLOR_ORANGE="orange",mt={[ht.COLOR_NEUTRAL]:lt.a,[ht.COLOR_GREEN]:lt.a,[ht.COLOR_ORANGE]:dt.a},ht.propTypes={buttonType:i.a.oneOf(["back","close"]),className:i.a.string,color:i.a.string,onClick:i.a.func.isRequired,size:i.a.oneOf([ht.SIZE_SMALL,ht.SIZE_LARGE])},ht.defaultProps={color:ht.COLOR_NEUTRAL,size:ht.SIZE_LARGE,buttonType:"close"};var gt=ht,bt=n(772),ft=n.n(bt),wt=n(103),vt=n.n(wt);const yt=e=>o.a.createElement(d.a,{isOpen:!0,className:qe()(vt.a.modalContent,e.className,{[vt.a.fullScreen]:e.fullScreen}),contentLabel:e.contentLabel,overlayClassName:vt.a.modalOverlay,onRequestClose:e.onRequestClose},o.a.createElement(at.a,{dir:e.isRtl?"rtl":"ltr",direction:"column",grow:1},o.a.createElement("div",{className:qe()(vt.a.header,e.headerClassName)},e.onHelp?o.a.createElement("div",{className:qe()(vt.a.headerItem,vt.a.headerItemHelp)},o.a.createElement(ot.a,{className:vt.a.helpButton,iconSrc:ft.a,onClick:e.onHelp},o.a.createElement(m.b,{defaultMessage:"Help",id:"gui.modal.help"}))):null,o.a.createElement("div",{className:qe()(vt.a.headerItem,vt.a.headerItemTitle)},e.headerImage?o.a.createElement("img",{className:vt.a.headerImage,src:e.headerImage}):null,e.contentLabel),o.a.createElement("div",{className:qe()(vt.a.headerItem,vt.a.headerItemClose)},e.fullScreen?o.a.createElement(ot.a,{className:vt.a.backButton,iconSrc:pt.a,onClick:e.onRequestClose},o.a.createElement(m.b,{defaultMessage:"Back",id:"gui.modal.back"})):o.a.createElement(gt,{size:gt.SIZE_LARGE,onClick:e.onRequestClose}))),e.children));yt.propTypes={children:i.a.node,className:i.a.string,contentLabel:i.a.oneOfType([i.a.string,i.a.object]).isRequired,fullScreen:i.a.bool,headerClassName:i.a.string,headerImage:i.a.string,isRtl:i.a.bool,onHelp:i.a.func,onRequestClose:i.a.func};var _t=yt;class kt extends o.a.Component{constructor(e){super(e),F()(this,["addEventListeners","removeEventListeners","handlePopState","pushHistory"]),this.addEventListeners()}componentDidMount(){this.pushHistory(this.id,null===history.state||history.state!==this.id)}componentWillUnmount(){this.removeEventListeners()}addEventListeners(){window.addEventListener("popstate",this.handlePopState)}removeEventListeners(){window.removeEventListener("popstate",this.handlePopState)}handlePopState(){this.props.onRequestClose()}get id(){return"modal-".concat(this.props.id)}pushHistory(e,t){if(t)return history.pushState(e,this.id,null);history.replaceState(e,this.id,null)}render(){return o.a.createElement(_t,this.props)}}kt.propTypes={id:i.a.string.isRequired,isRtl:i.a.bool,onRequestClose:i.a.func,onRequestOpen:i.a.func};var St=Object(l.b)(e=>({isRtl:e.locales.isRtl}))(kt),Et=n(90),xt=n.n(Et),Ct=n(222);const Ot=Object(m.g)({forAllSpritesMessage:{id:"gui.gui.variableScopeOptionAllSprites",defaultMessage:"For all sprites"},forThisSpriteMessage:{id:"gui.gui.variableScopeOptionSpriteOnly",defaultMessage:"For this sprite only"},cloudVarOptionMessage:{id:"gui.gui.cloudVariableOption",defaultMessage:"Cloud variable (stored on server)"},availableToAllSpritesMessage:{id:"gui.gui.variablePromptAllSpritesMessage",defaultMessage:"This variable will be available to all sprites."},listAvailableToAllSpritesMessage:{id:"gui.gui.listPromptAllSpritesMessage",defaultMessage:"This list will be available to all sprites."}}),Ft=e=>o.a.createElement(St,{className:xt.a.modalContent,contentLabel:e.title,onRequestClose:e.onCancel},o.a.createElement(at.a,{className:xt.a.body},o.a.createElement(at.a,{className:xt.a.label},e.label),o.a.createElement(at.a,null,o.a.createElement("input",{autoFocus:!0,className:xt.a.variableNameTextInput,defaultValue:e.defaultValue,name:e.label,onChange:e.onChange,onFocus:e.onFocus,onKeyPress:e.onKeyPress})),e.showVariableOptions?o.a.createElement("div",null,e.isStage?o.a.createElement("div",{className:xt.a.infoMessage},e.showListMessage?o.a.createElement(m.b,Ot.listAvailableToAllSpritesMessage):o.a.createElement(m.b,Ot.availableToAllSpritesMessage)):o.a.createElement(at.a,{className:xt.a.optionsRow},o.a.createElement("label",null,o.a.createElement("input",{checked:e.globalSelected,name:"variableScopeOption",type:"radio",value:"global",onChange:e.onScopeOptionSelection}),o.a.createElement(m.b,Ot.forAllSpritesMessage)),o.a.createElement("label",{className:qe()({[xt.a.disabledLabel]:e.cloudSelected})},o.a.createElement("input",{checked:!e.globalSelected,disabled:e.cloudSelected,name:"variableScopeOption",type:"radio",value:"local",onChange:e.onScopeOptionSelection}),o.a.createElement(m.b,Ot.forThisSpriteMessage))),e.showCloudOption?o.a.createElement(at.a,{className:qe()(xt.a.cloudOption)},o.a.createElement("label",{className:qe()({[xt.a.disabledLabel]:!e.canAddCloudVariable})},o.a.createElement("input",{checked:e.cloudSelected&&e.canAddCloudVariable,disabled:!e.canAddCloudVariable,type:"checkbox",onChange:e.onCloudVarOptionChange}),o.a.createElement(m.b,Ot.cloudVarOptionMessage))):null):null,e.cloudSelected&&!e.isAddingCloudVariableScratchSafe&&o.a.createElement(at.a,{className:xt.a.infoMessage},o.a.createElement(m.b,{defaultMessage:"If you make this cloud variable, the project will exceed Scratch's limit of {number} variables, and some variables will not function if you upload the project to Scratch.",id:"tw.scratchUnsafeCloud",values:{number:Ct.b}})),e.cloudSelected&&e.canAddCloudVariable&&o.a.createElement(at.a,{className:xt.a.infoMessage},o.a.createElement(m.b,{defaultMessage:"Although you can create cloud variables, they won't work unless this project is uploaded to Scratch or converted using a tool like the {packager}.",values:{packager:o.a.createElement("a",{href:"https://packager.turbowarp.org",target:"_blank",rel:"noopener noreferrer"},"TurboWarp Packager")},id:"tw.cantUseCloud"})),o.a.createElement(at.a,{className:xt.a.buttonRow},o.a.createElement("button",{className:xt.a.cancelButton,onClick:e.onCancel},o.a.createElement(m.b,{defaultMessage:"Cancel",id:"gui.prompt.cancel"})),o.a.createElement("button",{className:xt.a.okButton,onClick:e.onOk},o.a.createElement(m.b,{defaultMessage:"OK",id:"gui.prompt.ok"})))));Ft.propTypes={isAddingCloudVariableScratchSafe:i.a.bool.isRequired,canAddCloudVariable:i.a.bool.isRequired,cloudSelected:i.a.bool.isRequired,defaultValue:i.a.string,globalSelected:i.a.bool.isRequired,isStage:i.a.bool.isRequired,showListMessage:i.a.bool.isRequired,label:i.a.string.isRequired,onCancel:i.a.func.isRequired,onChange:i.a.func.isRequired,onCloudVarOptionChange:i.a.func,onFocus:i.a.func.isRequired,onKeyPress:i.a.func.isRequired,onOk:i.a.func.isRequired,onScopeOptionSelection:i.a.func.isRequired,showCloudOption:i.a.bool.isRequired,showVariableOptions:i.a.bool.isRequired,title:i.a.string.isRequired};var jt=Ft;class Mt extends o.a.Component{constructor(e){super(e),F()(this,["handleOk","handleScopeOptionSelection","handleCancel","handleChange","handleKeyPress","handleCloudVariableOptionChange"]),this.state={isAddingCloudVariableScratchSafe:e.vm&&e.vm.runtime.getNumberOfCloudVariables()=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const Bt=e=>{const{containerRef:t,dragOver:n}=e,a=At(e,It);return o.a.createElement(at.a,Dt({className:qe()(Rt.a.blocks,{[Rt.a.dragOver]:n})},a,{componentRef:t}))};Bt.propTypes={containerRef:i.a.func,dragOver:i.a.bool};var Nt=Bt,Lt=n(124),zt=[{tag:"scratch",intlLabel:"Scratch"},{tag:"tw",intlLabel:"TurboWarp"}],Ut=n(367),qt=n.n(Ut),Wt=n(773),Ht=n.n(Wt),Gt=n(774),Vt=n.n(Gt);const Kt=["className","intl","isPlaying","onClick","onMouseDown","onMouseEnter","onMouseLeave","setButtonRef"];function Xt(){return(Xt=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const Yt=Object(m.g)({play:{id:"gui.playButton.play",defaultMessage:"Play"},stop:{id:"gui.playButton.stop",defaultMessage:"Stop"}}),Jt=e=>{let{className:t,intl:n,isPlaying:a,onClick:r,onMouseDown:i,onMouseEnter:s,onMouseLeave:l,setButtonRef:c}=e,d=Qt(e,Kt);const u=a?n.formatMessage(Yt.stop):n.formatMessage(Yt.play);return o.a.createElement("div",Xt({"aria-label":u,className:qe()(qt.a.playButton,t,{[qt.a.playing]:a}),onClick:r,onMouseDown:i,onMouseEnter:s,onMouseLeave:l,ref:c},d),o.a.createElement("img",{className:qt.a.playIcon,draggable:!1,src:a?Vt.a:Ht.a}))};Jt.propTypes={className:i.a.string,intl:m.i,isPlaying:i.a.bool.isRequired,onClick:i.a.func.isRequired,onMouseDown:i.a.func.isRequired,onMouseEnter:i.a.func.isRequired,onMouseLeave:i.a.func.isRequired,setButtonRef:i.a.func.isRequired};var Zt=Object(m.h)(Jt);class $t extends o.a.Component{constructor(e){super(e),F()(this,["handleClick","handleMouseDown","handleMouseEnter","handleMouseLeave","handleTouchStart","setButtonRef"]),this.state={touchStarted:!1}}getDerivedStateFromProps(e,t){return t.touchStarted&&!e.isPlaying?{touchStarted:!1}:null}componentDidMount(){this.buttonRef.addEventListener("touchstart",this.handleTouchStart)}componentWillUnmount(){this.buttonRef.removeEventListener("touchstart",this.handleTouchStart)}handleClick(e){e.stopPropagation()}handleMouseDown(e){e.preventDefault(),this.props.isPlaying?(this.props.onStop(),this.state.touchstarted&&this.setState({touchStarted:!1})):(this.props.onPlay(),this.state.touchstarted&&this.setState({touchStarted:!1}))}handleTouchStart(e){this.props.isPlaying?(e.preventDefault(),this.setState({touchStarted:!1}),this.props.onStop()):(e.preventDefault(),this.setState({touchStarted:!0}),this.props.onPlay())}handleMouseEnter(e){e.preventDefault(),this.props.isPlaying||this.props.onPlay()}handleMouseLeave(){this.props.isPlaying&&!this.state.touchstarted&&this.props.onStop()}setButtonRef(e){this.buttonRef=e}render(){const{className:e,isPlaying:t,onPlay:n,onStop:a}=this.props;return o.a.createElement(Zt,{className:e,isPlaying:t,onClick:this.handleClick,onMouseDown:this.handleMouseDown,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,setButtonRef:this.setButtonRef})}}$t.propTypes={className:i.a.string,isPlaying:i.a.bool.isRequired,onPlay:i.a.func.isRequired,onStop:i.a.func.isRequired};var en=$t,tn=n(39),nn=n.n(tn),an=n(775),on=n.n(an),rn=n(776),sn=n.n(rn),ln=n(777),cn=n.n(ln),dn=n(778),un=n.n(dn);const pn=Object(m.g)({favorite:{id:"tw.favorite",defaultMessage:"Favorite"},unfavorite:{id:"tw.unfavorite",defaultMessage:"Unfavorite"}});class mn extends o.a.PureComponent{render(){const e=this.props.intl.formatMessage(this.props.favorite?pn.unfavorite:pn.favorite),t=o.a.createElement("button",{className:qe()(nn.a.favoriteContainer,{[nn.a.active]:this.props.favorite}),onClick:this.props.onFavorite},o.a.createElement("img",{src:this.props.favorite?un.a:cn.a,className:nn.a.favoriteIcon,draggable:!1,alt:e,title:e}));return this.props.featured?o.a.createElement("div",{className:qe()(nn.a.libraryItem,nn.a.featuredItem,{[nn.a.disabled]:this.props.disabled},"string"==typeof this.props.extensionId?nn.a.libraryItemExtension:null,this.props.hidden?nn.a.hidden:null),onClick:this.props.onClick},o.a.createElement("div",{className:nn.a.featuredImageContainer},this.props.disabled?o.a.createElement("div",{className:nn.a.comingSoonText},o.a.createElement(m.b,{defaultMessage:"Coming Soon",id:"gui.extensionLibrary.comingSoon"})):null,o.a.createElement("img",{className:nn.a.featuredImage,loading:"lazy",draggable:!1,src:this.props.iconURL})),this.props.insetIconURL?o.a.createElement("div",{className:nn.a.libraryItemInsetImageContainer},o.a.createElement("img",{className:nn.a.libraryItemInsetImage,src:this.props.insetIconURL,draggable:!1})):null,o.a.createElement("div",{className:"string"==typeof this.props.extensionId?qe()(nn.a.featuredExtensionText,nn.a.featuredText):nn.a.featuredText},o.a.createElement("span",{className:nn.a.libraryItemName},this.props.name),o.a.createElement("br",null),o.a.createElement("span",{className:nn.a.featuredDescription},this.props.description)),(this.props.docsURI||this.props.samples)&&o.a.createElement("div",{className:nn.a.extensionLinks},this.props.docsURI&&o.a.createElement("a",{href:this.props.docsURI,target:"_blank",rel:"noreferrer"},o.a.createElement(m.b,{defaultMessage:"Documentation",id:"tw.documentation"})),this.props.samples&&o.a.createElement("a",{href:this.props.samples[0].href,target:"_blank",rel:"noreferrer"},o.a.createElement(m.b,{defaultMessage:"Sample project",id:"tw.sample"}))),this.props.credits&&this.props.credits.length>0&&o.a.createElement("div",{className:nn.a.extensionLinks},o.a.createElement("div",null,o.a.createElement(m.b,{defaultMessage:"Created by:",id:"tw.createdBy"})," ",this.props.credits.map((e,t)=>o.a.createElement(o.a.Fragment,{key:t},e,t!==this.props.credits.length-1&&", ")))),this.props.bluetoothRequired||this.props.internetConnectionRequired||this.props.collaborator?o.a.createElement("div",{className:nn.a.featuredExtensionMetadata},o.a.createElement("div",{className:nn.a.featuredExtensionRequirement},this.props.bluetoothRequired||this.props.internetConnectionRequired?o.a.createElement("div",null,o.a.createElement("div",null,o.a.createElement(m.b,{defaultMessage:"Requires",id:"gui.extensionLibrary.requires"})),o.a.createElement("div",{className:nn.a.featuredExtensionMetadataDetail},this.props.bluetoothRequired?o.a.createElement("img",{src:on.a,draggable:!1}):null,this.props.internetConnectionRequired?o.a.createElement("img",{src:sn.a,draggable:!1}):null)):null),o.a.createElement("div",{className:nn.a.featuredExtensionCollaboration},this.props.collaborator?o.a.createElement("div",null,o.a.createElement("div",null,o.a.createElement(m.b,{defaultMessage:"Collaboration with",id:"gui.extensionLibrary.collaboration"})),o.a.createElement("div",{className:nn.a.featuredExtensionMetadataDetail},this.props.collaborator)):null)):null,t):o.a.createElement(at.a,{className:qe()(nn.a.libraryItem,{[nn.a.hidden]:this.props.hidden}),role:"button",tabIndex:"0",onBlur:this.props.onBlur,onClick:this.props.onClick,onFocus:this.props.onFocus,onKeyPress:this.props.onKeyPress,onMouseEnter:this.props.showPlayButton?null:this.props.onMouseEnter,onMouseLeave:this.props.showPlayButton?null:this.props.onMouseLeave},o.a.createElement(at.a,{className:nn.a.libraryItemImageContainerWrapper},o.a.createElement(at.a,{className:nn.a.libraryItemImageContainer,onMouseEnter:this.props.showPlayButton?this.props.onMouseEnter:null,onMouseLeave:this.props.showPlayButton?this.props.onMouseLeave:null},o.a.createElement("img",{className:nn.a.libraryItemImage,loading:"lazy",src:this.props.iconURL,draggable:!1}))),o.a.createElement("span",{className:nn.a.libraryItemName},this.props.name),this.props.showPlayButton?o.a.createElement(en,{isPlaying:this.props.isPlaying,onPlay:this.props.onPlay,onStop:this.props.onStop}):null,t)}}mn.propTypes={intl:m.i,bluetoothRequired:i.a.bool,collaborator:i.a.string,description:i.a.oneOfType([i.a.string,i.a.node]),disabled:i.a.bool,extensionId:i.a.string,featured:i.a.bool,hidden:i.a.bool,iconURL:i.a.string,insetIconURL:i.a.string,internetConnectionRequired:i.a.bool,isPlaying:i.a.bool,name:i.a.oneOfType([i.a.string,i.a.node]),credits:i.a.arrayOf(i.a.oneOfType([i.a.string,i.a.node])),docsURI:i.a.string,samples:i.a.arrayOf(i.a.shape({href:i.a.string,text:i.a.string})),favorite:i.a.bool,onFavorite:i.a.func,onBlur:i.a.func.isRequired,onClick:i.a.func.isRequired,onFocus:i.a.func.isRequired,onKeyPress:i.a.func.isRequired,onMouseEnter:i.a.func.isRequired,onMouseLeave:i.a.func.isRequired,onPlay:i.a.func.isRequired,onStop:i.a.func.isRequired,showPlayButton:i.a.bool},mn.defaultProps={disabled:!1,showPlayButton:!1};var hn=mn;const gn=Object(m.g)({incompatible:{id:"tw.confirmIncompatibleExtension",defaultMessage:"This extension is incompatible with Scratch. Projects made with it cannot be uploaded to the Scratch website. Are you sure you want to enable it?"}});class bn extends o.a.PureComponent{constructor(e){super(e),F()(this,["handleBlur","handleClick","handleFavorite","handleFocus","handleKeyPress","handleMouseEnter","handleMouseLeave","handlePlay","handleStop","rotateIcon","startRotatingIcons","stopRotatingIcons"]),this.state={iconIndex:0,isRotatingIcon:!1}}componentWillUnmount(){clearInterval(this.intervalId)}handleBlur(e){this.handleMouseLeave(e)}handleClick(e){e.target.closest("a")||(this.props.favorite||!this.props.incompatibleWithScratch||confirm(this.props.intl.formatMessage(gn.incompatible)))&&(this.props.disabled||(this.props.href?window.open(this.props.href):this.props.onSelect(this.props.id)),e.preventDefault())}handleFavorite(e){e.stopPropagation(),this.props.onFavorite(this.props.id)}handleFocus(e){this.props.showPlayButton||this.handleMouseEnter(e)}handleKeyPress(e){" "!==e.key&&"Enter"!==e.key||(e.preventDefault(),this.props.onSelect(this.props.id))}handleMouseEnter(){this.props.showPlayButton||(this.props.onMouseEnter(this.props.id),this.props.icons&&this.props.icons.length&&(this.stopRotatingIcons(),this.setState({isRotatingIcon:!0},this.startRotatingIcons)))}handleMouseLeave(){this.props.showPlayButton||(this.props.onMouseLeave(this.props.id),this.props.icons&&this.props.icons.length&&this.setState({isRotatingIcon:!1},this.stopRotatingIcons))}handlePlay(){this.props.onMouseEnter(this.props.id)}handleStop(){this.props.onMouseLeave(this.props.id)}startRotatingIcons(){this.rotateIcon(),this.intervalId=setInterval(this.rotateIcon,300)}stopRotatingIcons(){this.intervalId&&(this.intervalId=clearInterval(this.intervalId))}rotateIcon(){const e=(this.state.iconIndex+1)%this.props.icons.length;this.setState({iconIndex:e})}curIconMd5(){const e=this.props.iconMd5;if(this.props.icons&&this.state.isRotatingIcon&&this.state.iconIndex{const{className:t,onChange:n,onClear:a,placeholderText:r,filterQuery:i,inputClassName:s}=e;return o.a.createElement("div",{className:qe()(t,En.a.filter,{[En.a.isActive]:i.length>0})},o.a.createElement("img",{className:En.a.filterIcon,src:yn.a}),o.a.createElement("input",{className:qe()(En.a.filterInput,s),placeholder:r,type:"text",value:i,onChange:n}),o.a.createElement("div",{className:En.a.xIconWrapper,onClick:a},o.a.createElement("img",{className:En.a.xIcon,src:kn.a})))};xn.propTypes={className:i.a.string,filterQuery:i.a.string,inputClassName:i.a.string,onChange:i.a.func,onClear:i.a.func,placeholderText:i.a.string},xn.defaultProps={placeholderText:"Search"};var Cn=xn,On=n(368),Fn=n.n(On);const jn=["active","iconClassName","className","tag","intlLabel"];function Mn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Pn(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const Dn=e=>{let{active:t,iconClassName:n,className:a,tag:r,intlLabel:i}=e,s=In(e,jn);return o.a.createElement(ot.a,Rn({className:qe()(Fn.a.tagButton,a,{[Fn.a.active]:t}),iconClassName:qe()(Fn.a.tagButtonIcon,n)},s),"string"==typeof i?i:o.a.createElement(m.b,i))};Dn.propTypes=Pn(Pn({},ot.a.propTypes),{},{active:i.a.bool,intlLabel:i.a.oneOfType([i.a.shape({defaultMessage:i.a.string,description:i.a.string,id:i.a.string}),i.a.string]).isRequired,tag:i.a.string.isRequired}),Dn.defaultProps={active:!1};var An=Dn;function Bn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Nn(e){for(var t=1;to.a.createElement("hr",{className:Gn.a.separator}),Kn=n(108),Xn=n.n(Kn);function Qn(){return(Qn=Object.assign||function(e){for(var t=1;t{this.setState({canDisplay:!0})}),this.props.setStopHandler&&this.props.setStopHandler(this.handlePlayingEnd)}componentDidUpdate(e,t){if(t.filterQuery===this.state.filterQuery&&t.selectedTag===this.state.selectedTag||this.scrollToTop(),this.state.favorites!==t.favorites)try{localStorage.setItem(this.getFavoriteStorageKey(),JSON.stringify(this.state.favorites))}catch(e){}}handleSelect(e){this.handleClose(),this.props.onItemSelected(this.getFilteredData()[e])}readFavoritesFromStorage(){let e;try{e=JSON.parse(localStorage.getItem(this.getFavoriteStorageKey()))}catch(e){}return Array.isArray(e)||(e=[]),e}getFavoriteStorageKey(){return"tw:library-favorites:".concat(this.props.id)}handleFavorite(e){const t=this.getFilteredData()[e][this.props.persistableKey];this.setState(e=>({favorites:e.favorites.includes(t)?e.favorites.filter(e=>e!==t):[...e.favorites,t]}))}handleClose(){this.props.onRequestClose()}handleTagClick(e){null===this.state.playingItem?this.setState({filterQuery:"",selectedTag:e.toLowerCase()}):(this.props.onItemMouseLeave(this.getFilteredData()[[this.state.playingItem]]),this.setState({filterQuery:"",playingItem:null,selectedTag:e.toLowerCase()}))}handleMouseEnter(e){this.props.onItemMouseEnter&&this.state.playingItem!==e&&(this.props.onItemMouseEnter(this.getFilteredData()[e]),this.setState({playingItem:e}))}handleMouseLeave(e){this.props.onItemMouseLeave&&(this.props.onItemMouseLeave(this.getFilteredData()[e]),this.setState({playingItem:null}))}handlePlayingEnd(){null!==this.state.playingItem&&this.setState({playingItem:null})}handleFilterChange(e){null===this.state.playingItem?this.setState({filterQuery:e.target.value,selectedTag:ea.tag}):(this.props.onItemMouseLeave(this.getFilteredData()[[this.state.playingItem]]),this.setState({filterQuery:e.target.value,playingItem:null,selectedTag:ea.tag}))}handleFilterClear(){this.setState({filterQuery:""})}getFilteredData(){if("all"===this.state.selectedTag&&!this.state.filterQuery){const e=this.props.data.filter(e=>this.state.initialFavorites.includes(e[this.props.persistableKey])).map(e=>Jn(Jn({},e),{},{key:"favorite-".concat(e[this.props.persistableKey])}));return e.length&&e.push("---"),[...e,...this.props.data]}const e=[],t=[];for(const n of this.props.data)"---"===n||(this.state.initialFavorites.includes(n[this.props.persistableKey])?e.push(n):t.push(n));let n=e.concat(t);return"all"!==this.state.selectedTag&&(n=n.filter(e=>e.tags&&e.tags.map(e=>e.toLowerCase()).includes(this.state.selectedTag))),this.state.filterQuery&&(n=n.filter(e=>{const t=[...e.tags];return e.name&&("string"==typeof e.name?t.push(e.name):t.push(this.props.intl.formatMessage(e.name.props))),e.description&&t.push(e.description),t.join("\n").toLowerCase().includes(this.state.filterQuery.toLowerCase())})),n}scrollToTop(){this.filteredDataRef.scrollTop=0}setFilteredDataRef(e){this.filteredDataRef=e}render(){return o.a.createElement(St,{fullScreen:!0,contentLabel:this.props.title,id:this.props.id,onRequestClose:this.handleClose},(this.props.filterable||this.props.tags)&&o.a.createElement("div",{className:Xn.a.filterBar},this.props.filterable&&o.a.createElement(Cn,{className:qe()(Xn.a.filterBarItem,Xn.a.filter),filterQuery:this.state.filterQuery,inputClassName:Xn.a.filterInput,placeholderText:this.props.intl.formatMessage($n.filterPlaceholder),onChange:this.handleFilterChange,onClear:this.handleFilterClear}),this.props.filterable&&this.props.tags&&o.a.createElement(wn.a,{className:qe()(Xn.a.filterBarItem,Xn.a.divider)}),this.props.tags&&o.a.createElement("div",{className:Xn.a.tagWrapper},ta.concat(this.props.tags).map((e,t)=>o.a.createElement(qn,Qn({active:this.state.selectedTag===e.tag.toLowerCase(),className:qe()(Xn.a.filterBarItem,Xn.a.tagButton,e.className),key:"tag-button-".concat(t),onClick:this.handleTagClick},e))))),o.a.createElement("div",{className:qe()(Xn.a.libraryScrollGrid,{[Xn.a.withFilterBar]:this.props.filterable||this.props.tags}),ref:this.setFilteredDataRef},this.state.canDisplay&&this.props.data?this.getFilteredData().map((e,t)=>"---"===e?o.a.createElement(Vn,{key:t}):o.a.createElement(fn,{bluetoothRequired:e.bluetoothRequired,collaborator:e.collaborator,description:e.description,disabled:e.disabled,extensionId:e.extensionId,href:e.href,featured:e.featured,hidden:e.hidden,iconMd5:e.costumes?e.costumes[0].md5ext:e.md5ext,iconRawURL:e.rawURL,icons:e.costumes,id:t,incompatibleWithScratch:e.incompatibleWithScratch,favorite:this.state.favorites.includes(e[this.props.persistableKey]),onFavorite:this.handleFavorite,insetIconURL:e.insetIconURL,internetConnectionRequired:e.internetConnectionRequired,isPlaying:this.state.playingItem===t,key:e.key||("string"==typeof e.name?e.name:e.rawURL),name:e.name,credits:e.credits,samples:e.samples,docsURI:e.docsURI,showPlayButton:this.props.showPlayButton,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,onSelect:this.handleSelect})):o.a.createElement("div",{className:Xn.a.spinnerWrapper},o.a.createElement(Wn.a,{large:!0,level:"primary"}))))}}na.propTypes={data:i.a.oneOfType([i.a.arrayOf(i.a.oneOfType([i.a.shape({md5:i.a.string,name:i.a.oneOfType([i.a.string,i.a.node]),rawURL:i.a.string}),i.a.string])),i.a.instanceOf(Promise)]),filterable:i.a.bool,id:i.a.string.isRequired,persistableKey:i.a.string,intl:m.i.isRequired,onItemMouseEnter:i.a.func,onItemMouseLeave:i.a.func,onItemSelected:i.a.func,onRequestClose:i.a.func,setStopHandler:i.a.func,showPlayButton:i.a.bool,tags:i.a.arrayOf(i.a.shape(qn.propTypes)),title:i.a.string.isRequired},na.defaultProps={filterable:!0,persistableKey:"name",showPlayButton:!1};var aa=Object(m.h)(na),oa=n(348),ra=n.n(oa);function ia(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function sa(e){for(var t=1;t"object"==typeof e?sa({rawURL:e.iconURL||ra.a},e):e;let ua=null;class pa extends o.a.PureComponent{constructor(e){super(e),F()(this,["handleItemSelect"]),this.state={gallery:ua,galleryError:null,galleryTimedOut:!1}}componentDidMount(){if(!this.state.gallery){const e=setTimeout(()=>{this.setState({galleryTimedOut:!0})},750);(async()=>{const e=await fetch("https://extensions.turbowarp.org/generated-metadata/extensions-v0.json");if(!e.ok)throw new Error("HTTP status ".concat(e.status));return(await e.json()).extensions.map(e=>({name:e.name,nameTranslations:e.nameTranslations||{},description:e.description,descriptionTranslations:e.descriptionTranslations||{},extensionId:e.id,extensionURL:"https://extensions.turbowarp.org/".concat(e.slug,".js"),iconURL:"https://extensions.turbowarp.org/".concat(e.image||"images/unknown.svg"),tags:["tw"],credits:[...e.by||[],...e.original||[]].map(e=>e.link?o.a.createElement("a",{href:e.link,target:"_blank",rel:"noreferrer"},e.name):e.name),docsURI:e.docs?"https://extensions.turbowarp.org/".concat(e.slug):null,samples:e.samples?e.samples.map(e=>({href:"".concat("","editor?project_url=https://extensions.turbowarp.org/samples/").concat(encodeURIComponent(e),".sb3"),text:e})):null,incompatibleWithScratch:!0,featured:!0}))})().then(t=>{ua=t,this.setState({gallery:t}),clearTimeout(e)}).catch(t=>{M.default.error(t),this.setState({galleryError:t}),clearTimeout(e)})}}handleItemSelect(e){if(e.href)return;const t=e.extensionId;if("custom_extension"===t)return void this.props.onOpenCustomExtensionModal();if("procedures_enable_return"===t)return this.props.onEnableProcedureReturns(),void this.props.onCategorySelected("myBlocks");const n=e.extensionURL?e.extensionURL:t;e.disabled||(this.props.vm.extensionManager.isExtensionLoaded(t)?this.props.onCategorySelected(t):this.props.vm.extensionManager.loadExtensionURL(n).then(()=>{this.props.onCategorySelected(t)}).catch(e=>{M.default.error(e),alert(e)}))}render(){let e=null;if(this.state.gallery||this.state.galleryError||this.state.galleryTimedOut)if(e=Lt.a.map(da),e.push("---"),this.state.gallery){e.push(da(Lt.d));const t=this.props.intl.locale;e.push(...this.state.gallery.map(e=>((e,t)=>sa(sa({},e),{},{name:e.nameTranslations[t]||e.name,description:e.descriptionTranslations[t]||e.description}))(e,t)).map(da))}else this.state.galleryError?e.push(da(Lt.b)):e.push(da(Lt.c));return o.a.createElement(aa,{data:e,filterable:!0,persistableKey:"extensionId",id:"extensionLibrary",tags:zt,title:this.props.intl.formatMessage(ca.extensionTitle),visible:this.props.visible,onItemSelected:this.handleItemSelect,onRequestClose:this.props.onRequestClose})}}pa.propTypes={intl:m.i.isRequired,onCategorySelected:i.a.func,onEnableProcedureReturns:i.a.func,onOpenCustomExtensionModal:i.a.func,onRequestClose:i.a.func,visible:i.a.bool,vm:i.a.instanceOf(p.a).isRequired};var ma=Object(m.h)(pa),ha=n(783),ga=n.n(ha),ba=n(784),fa=n.n(ba),wa=n(785),va=n.n(wa),ya=n(66),_a=n.n(ya);const ka=Object(m.g)({myblockModalTitle:{id:"gui.customProcedures.myblockModalTitle",defaultMessage:"Make a Block"}}),Sa=e=>o.a.createElement(St,{className:_a.a.modalContent,contentLabel:e.intl.formatMessage(ka.myblockModalTitle),onRequestClose:e.onCancel},o.a.createElement(at.a,{className:_a.a.workspace,componentRef:e.componentRef}),o.a.createElement(at.a,{className:_a.a.body},o.a.createElement("div",{className:_a.a.optionsRow},o.a.createElement("div",{className:_a.a.optionCard,role:"button",tabIndex:"0",onClick:e.onAddTextNumber},o.a.createElement("img",{className:_a.a.optionIcon,src:fa.a}),o.a.createElement("div",{className:_a.a.optionTitle},o.a.createElement(m.b,{defaultMessage:"Add an input",id:"gui.customProcedures.addAnInputNumberText"})),o.a.createElement("div",{className:_a.a.optionDescription},o.a.createElement(m.b,{defaultMessage:"number or text",id:"gui.customProcedures.numberTextType"}))),o.a.createElement("div",{className:_a.a.optionCard,role:"button",tabIndex:"0",onClick:e.onAddBoolean},o.a.createElement("img",{className:_a.a.optionIcon,src:ga.a}),o.a.createElement("div",{className:_a.a.optionTitle},o.a.createElement(m.b,{defaultMessage:"Add an input",id:"gui.customProcedures.addAnInputBoolean"})),o.a.createElement("div",{className:_a.a.optionDescription},o.a.createElement(m.b,{defaultMessage:"boolean",id:"gui.customProcedures.booleanType"}))),o.a.createElement("div",{className:_a.a.optionCard,role:"button",tabIndex:"0",onClick:e.onAddLabel},o.a.createElement("img",{className:_a.a.optionIcon,src:va.a}),o.a.createElement("div",{className:_a.a.optionTitle},o.a.createElement(m.b,{defaultMessage:"Add a label",id:"gui.customProcedures.addALabel"})))),o.a.createElement("div",{className:_a.a.checkboxRow},o.a.createElement("label",null,o.a.createElement("input",{checked:e.warp,type:"checkbox",onChange:e.onToggleWarp}),o.a.createElement(m.b,{defaultMessage:"Run without screen refresh",id:"gui.customProcedures.runWithoutScreenRefresh"}))),o.a.createElement(at.a,{className:_a.a.buttonRow},o.a.createElement("button",{className:_a.a.cancelButton,onClick:e.onCancel},o.a.createElement(m.b,{defaultMessage:"Cancel",id:"gui.customProcedures.cancel"})),o.a.createElement("button",{className:_a.a.okButton,onClick:e.onOk},o.a.createElement(m.b,{defaultMessage:"OK",id:"gui.customProcedures.ok"})))));Sa.propTypes={componentRef:i.a.func.isRequired,intl:m.i,onAddBoolean:i.a.func.isRequired,onAddLabel:i.a.func.isRequired,onAddTextNumber:i.a.func.isRequired,onCancel:i.a.func.isRequired,onOk:i.a.func.isRequired,onToggleWarp:i.a.func.isRequired,warp:i.a.bool.isRequired};var Ea=Object(m.h)(Sa);class xa extends o.a.Component{constructor(e){super(e),F()(this,["handleAddLabel","handleAddBoolean","handleAddTextNumber","handleToggleWarp","handleCancel","handleOk","setBlocks"]),this.state={rtlOffset:0,warp:!1}}componentWillUnmount(){this.workspace&&this.workspace.dispose()}setBlocks(e){if(!e)return;this.blocks=e;const t=$e()({},xa.defaultOptions,this.props.options,{rtl:this.props.isRtl}),n=tt.a.get(),a=n.Blocks.defaultToolbox;n.Blocks.defaultToolbox=null,this.workspace=n.inject(this.blocks,t),n.Blocks.defaultToolbox=a,this.mutationRoot=this.workspace.newBlock("procedures_declaration"),this.mutationRoot.setMovable(!1),this.mutationRoot.setDeletable(!1),this.mutationRoot.contextMenu=!1,this.workspace.addChangeListener(()=>{this.mutationRoot.onChangeFn();const e=this.workspace.getMetrics(),{x:t,y:n}=this.mutationRoot.getRelativeToSurfaceXY(),a=e.viewHeight/2-this.mutationRoot.height/2-n;let o;if(this.props.isRtl){const n=e.viewWidth/2-this.mutationRoot.width/2+25,r=t-2*(t-this.state.rtlOffset);if(r===n)return;o=r-n;const i=e.viewWidth/2;if(0===t)return o=this.mutationRoot.widthe.viewWidth&&(o=o+this.mutationRoot.width-e.viewWidth)}else o=e.viewWidth/2-this.mutationRoot.width/2-t,this.mutationRoot.width>e.viewWidth&&(o=e.viewWidth-this.mutationRoot.width-t);this.mutationRoot.moveBy(o,a)}),this.mutationRoot.domToMutation(this.props.mutator),this.mutationRoot.initSvg(),this.mutationRoot.render(),this.setState({warp:this.mutationRoot.getWarp()}),setTimeout(()=>{this.mutationRoot.focusLastEditor_()})}handleCancel(){this.props.onRequestClose()}handleOk(){const e=this.mutationRoot?this.mutationRoot.mutationToDom(!0):null;this.props.onRequestClose(e)}handleAddLabel(){this.mutationRoot&&this.mutationRoot.addLabelExternal()}handleAddBoolean(){this.mutationRoot&&this.mutationRoot.addBooleanExternal()}handleAddTextNumber(){this.mutationRoot&&this.mutationRoot.addStringNumberExternal()}handleToggleWarp(){if(this.mutationRoot){const e=!this.mutationRoot.getWarp();this.mutationRoot.setWarp(e),this.setState({warp:e})}}render(){return o.a.createElement(Ea,{componentRef:this.setBlocks,warp:this.state.warp,onAddBoolean:this.handleAddBoolean,onAddLabel:this.handleAddLabel,onAddTextNumber:this.handleAddTextNumber,onCancel:this.handleCancel,onOk:this.handleOk,onToggleWarp:this.handleToggleWarp})}}xa.propTypes={isRtl:i.a.bool,mutator:i.a.instanceOf(Element),onRequestClose:i.a.func.isRequired,options:i.a.shape({media:i.a.string,zoom:i.a.shape({controls:i.a.bool,wheel:i.a.bool,startScale:i.a.number}),comments:i.a.bool,collapse:i.a.bool})},xa.defaultOptions={zoom:{controls:!1,wheel:!1,startScale:.9},comments:!1,collapse:!1,scrollbars:!0},xa.defaultProps={options:xa.defaultOptions};var Ca=Object(l.b)(e=>({isRtl:e.locales.isRtl,mutator:e.scratchGui.customProcedures.mutator}))(xa),Oa=n(22);function Fa(){return(Fa=Object.assign||function(e){for(var t=1;ti&&ea&&n({dragInfo:e.scratchGui.assetDrag}),()=>({}))(n)}},Ma={SOUND:"SOUND",COSTUME:"COSTUME",SPRITE:"SPRITE",CODE:"CODE",BACKPACK_SOUND:"BACKPACK_SOUND",BACKPACK_COSTUME:"BACKPACK_COSTUME",BACKPACK_SPRITE:"BACKPACK_SPRITE",BACKPACK_CODE:"BACKPACK_CODE"},Pa=n(68),Ta=n.n(Pa),Ra=n(46),Ia=n.n(Ra);var Da=(e,t,n,a)=>({init:function(){const e={type:a,inputsInline:!0,category:t.name,colour:t.color1,colourSecondary:t.color2,colourTertiary:t.color3};(n.blockIconURI||t.blockIconURI)&&(e.extensions=["scratch_extension"]),this.jsonInit(e),this.blockInfoText="{}",this.needsBlockInfoUpdate=!0},mutationToDom:function(){const e=document.createElement("mutation");return e.setAttribute("blockInfo",this.blockInfoText),e},domToMutation:function(t){const n=t.getAttribute("blockInfo");if(!n)return;if(!this.needsBlockInfoUpdate)throw new Error("Attempted to update block info twice");delete this.needsBlockInfoUpdate,this.blockInfoText=n;const a=JSON.parse(n);switch(a.blockType){case Ia.a.COMMAND:case Ia.a.CONDITIONAL:case Ia.a.LOOP:this.setOutputShape(e.OUTPUT_SHAPE_SQUARE),this.setPreviousStatement(!0),this.setNextStatement(!a.isTerminal);break;case Ia.a.REPORTER:this.setOutput(!0),this.setOutputShape(e.OUTPUT_SHAPE_ROUND),a.disableMonitor||this.setCheckboxInFlyout(!0);break;case Ia.a.BOOLEAN:this.setOutput(!0),this.setOutputShape(e.OUTPUT_SHAPE_HEXAGONAL);break;case Ia.a.HAT:case Ia.a.EVENT:this.setOutputShape(e.OUTPUT_SHAPE_SQUARE),this.setNextStatement(!0)}(a.color1||a.color2||a.color3)&&this.setColour(a.color1,a.color2,a.color3);const o=a.text,r=[];let i=0;const s=o.replace(/\[(.+?)]/g,(e,t)=>{switch(a.arguments[t].type){case Ta.a.STRING:r.push({type:"input_value",name:t});break;case Ta.a.BOOLEAN:r.push({type:"input_value",name:t,check:"Boolean"})}return"%".concat(++i)});this.interpolate_(s,r)}}),Aa=n(194),Ba=n(450),Na=n.n(Ba);var La=()=>o.a.createElement("div",{className:Na.a.container},o.a.createElement("div",{className:Na.a.spinner})),za=n(341);var Ua=function(e){class t extends o.a.Component{constructor(e){super(e),this.state={loaded:tt.a.isLoaded(),error:null},this.state.loaded||tt.a.load().then(()=>{this.setState({loaded:!0})}).catch(e=>{M.default.error(e),this.setState({error:e})})}handleReload(){location.reload()}render(){return null!==this.state.error?o.a.createElement(za.a,{errorMessage:"lazy scratch-blocks: ".concat(this.state.error),onReload:this.handleReload}):this.state.loaded?o.a.createElement(e,this.props):o.a.createElement(La,null)}}return t},qa=n(287),Wa=n(178),Ha=n(230),Ga=n(195),Va=n(288);const Ka=["anyModalVisible","canUseCloud","customStageSize","customProceduresVisible","extensionLibraryVisible","options","stageSize","vm","isRtl","isVisible","onActivateColorPicker","onOpenConnectionModal","onOpenSoundRecorder","onOpenCustomExtensionModal","updateToolboxState","onActivateCustomProcedures","onRequestCloseExtensionLibrary","onRequestCloseCustomProcedures","toolboxXML","updateMetrics","workspaceMetrics"];function Xa(){return(Xa=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const Ya=Object(m.g)({PROCEDURES_RETURN:{id:"tw.blocks.PROCEDURES_RETURN",defaultMessage:"return {v}"},PROCEDURES_TO_REPORTER:{id:"tw.blocks.PROCEDURES_TO_REPORTER",defaultMessage:"Change To Reporter"},PROCEDURES_TO_STATEMENT:{id:"tw.blocks.PROCEDURES_TO_STATEMENT",defaultMessage:"Change To Statement"},PROCEDURES_DOCS:{id:"tw.blocks.PROCEDURES_DOCS",defaultMessage:"How to use return"}}),Ja=(e,t,n)=>{const a=e[t];e[t]=function(...e){const t=a.apply(this,e);return n.apply(this,t),t}},Za=ja([Ma.BACKPACK_CODE])(Nt);class $a extends o.a.Component{constructor(e){super(e),this.ScratchBlocks=nt(e.vm),window.ScratchBlocks=this.ScratchBlocks,Aa.a.blockly=this.ScratchBlocks,Aa.a.blocklyCallbacks.forEach(e=>e()),Aa.a.blocklyCallbacks.length=0,F()(this,["attachVM","detachVM","getToolboxXML","handleCategorySelected","handleConnectionModalStart","handleDrop","handleStatusButtonUpdate","handleOpenSoundRecorder","handlePromptStart","handlePromptCallback","handlePromptClose","handleCustomProceduresClose","onScriptGlowOn","onScriptGlowOff","onBlockGlowOn","onBlockGlowOff","handleMonitorsUpdate","handleExtensionAdded","handleBlocksInfoUpdate","onTargetsUpdate","onVisualReport","onWorkspaceUpdate","onWorkspaceMetricsChange","setBlocks","setLocale","handleEnableProcedureReturns"]),this.ScratchBlocks.prompt=this.handlePromptStart,this.ScratchBlocks.statusButtonCallback=this.handleConnectionModalStart,this.ScratchBlocks.recordSoundCallback=this.handleOpenSoundRecorder,this.state={prompt:null},this.onTargetsUpdate=Je()(this.onTargetsUpdate,100),this.toolboxUpdateQueue=[]}componentDidMount(){this.props.vm.setCompilerOptions({warpTimer:!0}),this.props.vm.setInEditor(!1),this.ScratchBlocks.FieldColourSlider.activateEyedropper_=this.props.onActivateColorPicker,this.ScratchBlocks.Procedures.externalProcedureDefCallback=this.props.onActivateCustomProcedures,this.ScratchBlocks.ScratchMsgs.setLocale(this.props.locale);const e=this.ScratchBlocks.Msg;e.PROCEDURES_RETURN=this.props.intl.formatMessage(Ya.PROCEDURES_RETURN,{v:"%1"}),e.PROCEDURES_TO_REPORTER=this.props.intl.formatMessage(Ya.PROCEDURES_TO_REPORTER),e.PROCEDURES_TO_STATEMENT=this.props.intl.formatMessage(Ya.PROCEDURES_TO_STATEMENT),e.PROCEDURES_DOCS=this.props.intl.formatMessage(Ya.PROCEDURES_DOCS);const t=$e()({},$a.defaultOptions,this.props.options,{rtl:this.props.isRtl,toolbox:this.props.toolboxXML});this.workspace=this.ScratchBlocks.inject(this.blocks,t);const n=this.workspace.getFlyout().getWorkspace(),a=e=>()=>this.ScratchBlocks.Variables.createVariable(this.workspace,null,e);n.registerButtonCallback("MAKE_A_VARIABLE",a("")),n.registerButtonCallback("MAKE_A_LIST",a("list")),n.registerButtonCallback("MAKE_A_PROCEDURE",()=>{this.ScratchBlocks.Procedures.createProcedureDefCallback_(this.workspace)}),n.registerButtonCallback("EXTENSION_CALLBACK",e=>{this.props.vm.handleExtensionButtonPress(e.callbackData_)}),n.registerButtonCallback("OPEN_EXTENSION_DOCS",e=>{const t=e.callbackData_,n=new URL(t);"http:"!==n.protocol&&"https:"!==n.protocol||window.open(t,"_blank")}),n.registerButtonCallback("OPEN_RETURN_DOCS",()=>{window.open("https://docs.turbowarp.org/return","_blank")}),this._renderedToolboxXML=this.props.toolboxXML,this.setToolboxRefreshEnabled=this.workspace.setToolboxRefreshEnabled.bind(this.workspace),this.workspace.setToolboxRefreshEnabled=()=>{this.setToolboxRefreshEnabled(!1)},Ja(this.workspace,"translate",this.onWorkspaceMetricsChange),Ja(this.workspace,"zoom",this.onWorkspaceMetricsChange),this.attachVM(),this.props.isVisible&&this.setLocale();for(const e of this.props.vm.runtime._blockInfo)this.handleExtensionAdded(e)}shouldComponentUpdate(e,t){return this.state.prompt!==t.prompt||this.props.isVisible!==e.isVisible||this._renderedToolboxXML!==e.toolboxXML||this.props.extensionLibraryVisible!==e.extensionLibraryVisible||this.props.customProceduresVisible!==e.customProceduresVisible||this.props.locale!==e.locale||this.props.anyModalVisible!==e.anyModalVisible||this.props.stageSize!==e.stageSize||this.props.customStageSize!==e.customStageSize}componentDidUpdate(e){this.props.anyModalVisible&&!e.anyModalVisible&&this.ScratchBlocks.hideChaff(),this.props.isVisible&&this.props.toolboxXML!==this._renderedToolboxXML&&this.requestToolboxUpdate(),this.props.isVisible!==e.isVisible?this.props.isVisible?(this.workspace.setVisible(!0),e.locale!==this.props.locale||this.props.locale!==this.props.vm.getLocale()?this.setLocale():(this.props.vm.refreshWorkspace(),this.requestToolboxUpdate()),window.dispatchEvent(new Event("resize"))):this.workspace.setVisible(!1):this.props.stageSize===e.stageSize&&this.props.customStageSize===e.customStageSize||window.dispatchEvent(new Event("resize"))}componentWillUnmount(){this.detachVM(),this.workspace.dispose(),clearTimeout(this.toolboxUpdateTimeout),this.props.vm.setInEditor(!1)}requestToolboxUpdate(){clearTimeout(this.toolboxUpdateTimeout),this.toolboxUpdateTimeout=setTimeout(()=>{this.updateToolbox()},0)}setLocale(){this.ScratchBlocks.ScratchMsgs.setLocale(this.props.locale),this.props.vm.setLocale(this.props.locale,this.props.messages).then(()=>{this.workspace.getFlyout().setRecyclingEnabled(!1),this.props.vm.refreshWorkspace(),this.requestToolboxUpdate(),this.withToolboxUpdates(()=>{this.workspace.getFlyout().setRecyclingEnabled(!0)})})}updateToolbox(){this.toolboxUpdateTimeout=!1;const e=this.workspace.toolbox_.getSelectedCategoryId(),t=this.workspace.toolbox_.getCategoryScrollOffset();this.workspace.updateToolbox(this.props.toolboxXML),this._renderedToolboxXML=this.props.toolboxXML,this.workspace.toolboxRefreshEnabled_=!0;const n=this.workspace.toolbox_.getCategoryPositionById(e);te())}withToolboxUpdates(e){this.toolboxUpdateTimeout?this.toolboxUpdateQueue.push(e):e()}attachVM(){this.workspace.addChangeListener(this.props.vm.blockListener),this.flyoutWorkspace=this.workspace.getFlyout().getWorkspace(),this.flyoutWorkspace.addChangeListener(this.props.vm.flyoutBlockListener),this.flyoutWorkspace.addChangeListener(this.props.vm.monitorBlockListener),this.props.vm.addListener("SCRIPT_GLOW_ON",this.onScriptGlowOn),this.props.vm.addListener("SCRIPT_GLOW_OFF",this.onScriptGlowOff),this.props.vm.addListener("BLOCK_GLOW_ON",this.onBlockGlowOn),this.props.vm.addListener("BLOCK_GLOW_OFF",this.onBlockGlowOff),this.props.vm.addListener("VISUAL_REPORT",this.onVisualReport),this.props.vm.addListener("workspaceUpdate",this.onWorkspaceUpdate),this.props.vm.addListener("targetsUpdate",this.onTargetsUpdate),this.props.vm.addListener("MONITORS_UPDATE",this.handleMonitorsUpdate),this.props.vm.addListener("EXTENSION_ADDED",this.handleExtensionAdded),this.props.vm.addListener("BLOCKSINFO_UPDATE",this.handleBlocksInfoUpdate),this.props.vm.addListener("PERIPHERAL_CONNECTED",this.handleStatusButtonUpdate),this.props.vm.addListener("PERIPHERAL_DISCONNECTED",this.handleStatusButtonUpdate)}detachVM(){this.props.vm.removeListener("SCRIPT_GLOW_ON",this.onScriptGlowOn),this.props.vm.removeListener("SCRIPT_GLOW_OFF",this.onScriptGlowOff),this.props.vm.removeListener("BLOCK_GLOW_ON",this.onBlockGlowOn),this.props.vm.removeListener("BLOCK_GLOW_OFF",this.onBlockGlowOff),this.props.vm.removeListener("VISUAL_REPORT",this.onVisualReport),this.props.vm.removeListener("workspaceUpdate",this.onWorkspaceUpdate),this.props.vm.removeListener("targetsUpdate",this.onTargetsUpdate),this.props.vm.removeListener("MONITORS_UPDATE",this.handleMonitorsUpdate),this.props.vm.removeListener("EXTENSION_ADDED",this.handleExtensionAdded),this.props.vm.removeListener("BLOCKSINFO_UPDATE",this.handleBlocksInfoUpdate),this.props.vm.removeListener("PERIPHERAL_CONNECTED",this.handleStatusButtonUpdate),this.props.vm.removeListener("PERIPHERAL_DISCONNECTED",this.handleStatusButtonUpdate)}updateToolboxBlockValue(e,t){this.withToolboxUpdates(()=>{const n=this.workspace.getFlyout().getWorkspace().getBlockById(e);n&&n.inputList[0].fieldRow[0].setValue(t)})}onTargetsUpdate(){this.props.vm.editingTarget&&this.workspace.getFlyout()&&["glide","move","set"].forEach(e=>{this.updateToolboxBlockValue("".concat(e,"x"),Math.round(this.props.vm.editingTarget.x).toString()),this.updateToolboxBlockValue("".concat(e,"y"),Math.round(this.props.vm.editingTarget.y).toString())})}onWorkspaceMetricsChange(){const e=this.props.vm.editingTarget;e&&e.id&&setTimeout(()=>{this.props.updateMetrics({targetID:e.id,scrollX:this.workspace.scrollX,scrollY:this.workspace.scrollY,scale:this.workspace.scale})},0)}onScriptGlowOn(e){this.workspace.glowStack(e.id,!0)}onScriptGlowOff(e){this.workspace.glowStack(e.id,!1)}onBlockGlowOn(e){this.workspace.glowBlock(e.id,!0)}onBlockGlowOff(e){this.workspace.glowBlock(e.id,!1)}onVisualReport(e){this.workspace.reportValue(e.id,e.value)}getToolboxXML(){try{let{editingTarget:e,runtime:t}=this.props.vm;const n=t.getTargetForStage();e||(e=n);const a=n.getCostumes(),o=e.getCostumes(),r=e.getSounds(),i=this.props.vm.runtime.getBlocksXML(e);return Object(et.a)(!1,e.isStage,e.id,i,o[o.length-1].name,a[a.length-1].name,r.length>0?r[r.length-1].name:"")}catch(e){return null}}onWorkspaceUpdate(e){const t=this.getToolboxXML();t&&this.props.updateToolboxState(t),this.props.vm.editingTarget&&!this.props.workspaceMetrics.targets[this.props.vm.editingTarget.id]&&this.onWorkspaceMetricsChange(),this.workspace.removeChangeListener(this.props.vm.blockListener);const n=this.ScratchBlocks.Xml.textToDom(e.xml);try{this.ScratchBlocks.Xml.clearWorkspaceAndLoadFromXml(n,this.workspace)}catch(e){e.message&&(e.message="Workspace Update Error: ".concat(e.message)),M.default.error(e)}if(this.workspace.addChangeListener(this.props.vm.blockListener),this.props.vm.editingTarget&&this.props.workspaceMetrics.targets[this.props.vm.editingTarget.id]){const{scrollX:e,scrollY:t,scale:n}=this.props.workspaceMetrics.targets[this.props.vm.editingTarget.id];this.workspace.scrollX=e,this.workspace.scrollY=t,this.workspace.scale=n,this.workspace.resize()}this.workspace.clearUndo()}handleMonitorsUpdate(e){const t=this.workspace.getFlyout();for(const n of e.values()){const e=n.get("id"),a=n.get("visible");t.setCheckboxState(e,a);const o=this.props.vm.runtime.monitorBlocks.getBlock(e);o&&(o.isMonitored=a)}}handleExtensionAdded(e){const t=t=>{if(t&&t.length>0){const n=[],a=[];t.forEach(e=>{e.info&&e.info.isDynamic?a.push(e):e.json&&n.push(e.json)}),this.ScratchBlocks.defineBlocksWithJsonArray(n),a.forEach(t=>{const n="".concat(e.id,"_").concat(t.info.opcode),a=Da(this.ScratchBlocks,e,t,n);this.ScratchBlocks.Blocks[n]=a})}};t(Object.getOwnPropertyNames(e.customFieldTypes).map(t=>e.customFieldTypes[t].scratchBlocksDefinition)),t(e.menus),t(e.blocks);const n=this.getToolboxXML();n&&this.props.updateToolboxState(n)}handleBlocksInfoUpdate(e){this.handleExtensionAdded(e)}handleCategorySelected(e){const t=Lt.a.find(t=>t.extensionId===e);t&&t.launchPeripheralConnectionFlow&&this.handleConnectionModalStart(e),this.withToolboxUpdates(()=>{this.workspace.toolbox_.setSelectedCategoryById(e)})}setBlocks(e){this.blocks=e}handlePromptStart(e,t,n,a,o){const r={prompt:{callback:n,message:e,defaultValue:t}};r.prompt.title=a||this.ScratchBlocks.Msg.VARIABLE_MODAL_TITLE,r.prompt.varType="string"==typeof o?o:this.ScratchBlocks.SCALAR_VARIABLE_TYPE,r.prompt.showVariableOptions=o!==this.ScratchBlocks.BROADCAST_MESSAGE_VARIABLE_TYPE&&r.prompt.title!==this.ScratchBlocks.Msg.RENAME_VARIABLE_MODAL_TITLE&&r.prompt.title!==this.ScratchBlocks.Msg.RENAME_LIST_MODAL_TITLE,r.prompt.showCloudOption=o===this.ScratchBlocks.SCALAR_VARIABLE_TYPE&&this.props.canUseCloud,this.setState(r)}handleConnectionModalStart(e){this.props.onOpenConnectionModal(e)}handleStatusButtonUpdate(){this.ScratchBlocks.refreshStatusButtons(this.workspace)}handleOpenSoundRecorder(){this.props.onOpenSoundRecorder()}handlePromptCallback(e,t){this.state.prompt.callback(e,this.props.vm.runtime.getAllVarNamesOfType(this.state.prompt.varType),t),this.handlePromptClose()}handlePromptClose(){this.setState({prompt:null})}handleCustomProceduresClose(e){this.props.onRequestCloseCustomProcedures(e);const t=this.workspace;t.refreshToolboxSelection_(),t.toolbox_.scrollToCategoryById("myBlocks")}handleDrop(e){fetch(e.payload.bodyUrl).then(e=>e.json()).then(e=>this.props.vm.shareBlocksToTarget(e,this.props.vm.editingTarget.id)).then(()=>{this.props.vm.refreshWorkspace(),this.updateToolbox()})}handleEnableProcedureReturns(){this.workspace.enableProcedureReturns(),this.requestToolboxUpdate()}render(){const e=this.props,{anyModalVisible:t,canUseCloud:n,customStageSize:a,customProceduresVisible:r,extensionLibraryVisible:i,options:s,stageSize:l,vm:c,isRtl:d,isVisible:u,onActivateColorPicker:p,onOpenConnectionModal:m,onOpenSoundRecorder:h,onOpenCustomExtensionModal:g,updateToolboxState:b,onActivateCustomProcedures:f,onRequestCloseExtensionLibrary:w,onRequestCloseCustomProcedures:v,toolboxXML:y,updateMetrics:_,workspaceMetrics:k}=e,S=Qa(e,Ka);return o.a.createElement(o.a.Fragment,null,o.a.createElement(Za,Xa({componentRef:this.setBlocks,onDrop:this.handleDrop},S)),this.state.prompt?o.a.createElement(Pt,{defaultValue:this.state.prompt.defaultValue,isStage:c.runtime.getEditingTarget().isStage,showListMessage:this.state.prompt.varType===this.ScratchBlocks.LIST_VARIABLE_TYPE,label:this.state.prompt.message,showCloudOption:this.state.prompt.showCloudOption,showVariableOptions:this.state.prompt.showVariableOptions,title:this.state.prompt.title,vm:c,onCancel:this.handlePromptClose,onOk:this.handlePromptCallback}):null,i?o.a.createElement(ma,{vm:c,onCategorySelected:this.handleCategorySelected,onEnableProcedureReturns:this.handleEnableProcedureReturns,onRequestClose:w,onOpenCustomExtensionModal:this.props.onOpenCustomExtensionModal}):null,r?o.a.createElement(Ca,{options:{media:s.media},onRequestClose:this.handleCustomProceduresClose}):null)}}$a.propTypes={intl:m.i,anyModalVisible:i.a.bool,canUseCloud:i.a.bool,customStageSize:i.a.shape({width:i.a.number,height:i.a.number}),customProceduresVisible:i.a.bool,extensionLibraryVisible:i.a.bool,isRtl:i.a.bool,isVisible:i.a.bool,locale:i.a.string.isRequired,messages:i.a.objectOf(i.a.string),onActivateColorPicker:i.a.func,onActivateCustomProcedures:i.a.func,onOpenConnectionModal:i.a.func,onOpenSoundRecorder:i.a.func,onOpenCustomExtensionModal:i.a.func,onRequestCloseCustomProcedures:i.a.func,onRequestCloseExtensionLibrary:i.a.func,options:i.a.shape({media:i.a.string,zoom:i.a.shape({controls:i.a.bool,wheel:i.a.bool,startScale:i.a.number}),colours:i.a.shape({workspace:i.a.string,flyout:i.a.string,toolbox:i.a.string,toolboxSelected:i.a.string,scrollbar:i.a.string,scrollbarHover:i.a.string,insertionMarker:i.a.string,insertionMarkerOpacity:i.a.number,fieldShadow:i.a.string,dragShadowOpacity:i.a.number}),comments:i.a.bool,collapse:i.a.bool}),stageSize:i.a.oneOf(Object.keys(Oa.c)).isRequired,toolboxXML:i.a.string,updateMetrics:i.a.func,updateToolboxState:i.a.func,vm:i.a.instanceOf(p.a).isRequired,workspaceMetrics:i.a.shape({targets:i.a.objectOf(i.a.object)})},$a.defaultOptions={zoom:{controls:!0,wheel:!0,startScale:Oa.a},grid:{spacing:40,length:2,colour:"#ddd"},colours:{workspace:"#F9F9F9",flyout:"#F9F9F9",toolbox:"#FFFFFF",toolboxSelected:"#E9EEF2",scrollbar:"#CECDCE",scrollbarHover:"#CECDCE",insertionMarker:"#000000",insertionMarkerOpacity:.2,fieldShadow:"rgba(255, 255, 255, 0.3)",dragShadowOpacity:.6},comments:!0,collapse:!1,sounds:!1},$a.defaultProps={isVisible:!0,options:$a.defaultOptions};var eo=Object(m.h)(Object(h.a)("Blocks")(Object(l.b)(e=>({anyModalVisible:Object.keys(e.scratchGui.modals).some(t=>e.scratchGui.modals[t])||e.scratchGui.mode.isFullScreen,customStageSize:e.scratchGui.customStageSize,extensionLibraryVisible:e.scratchGui.modals.extensionLibrary,isRtl:e.locales.isRtl,locale:e.locales.locale,messages:e.locales.messages,toolboxXML:e.scratchGui.toolbox.toolboxXML,customProceduresVisible:e.scratchGui.customProcedures.active,workspaceMetrics:e.scratchGui.workspaceMetrics}),e=>({onActivateColorPicker:t=>e(Object(Wa.a)(t)),onActivateCustomProcedures:(t,n)=>e(Object(Ha.a)(t,n)),onOpenConnectionModal:t=>{e(Object(Ga.c)(t)),e(Object(f.s)())},onOpenSoundRecorder:()=>{e(Object(b.d)(b.c)),e(Object(f.B)())},onOpenCustomExtensionModal:()=>e(Object(f.u)()),onRequestCloseExtensionLibrary:()=>{e(Object(f.e)())},onRequestCloseCustomProcedures:t=>{e(Object(Ha.c)(t))},updateToolboxState:t=>{e(Object(qa.c)(t))},updateMetrics:t=>{e(Object(Va.b)(t))}}))(Ua($a)))),to=n(144),no=n(281),ao=n(136);const oo=function(){let e,t;return function(n){if(e===n.assetId)return t;if(e=n.assetId,n.assetType===P.a.AssetType.ImageVector){const e=n.decodeText();if(e.match('font-family(?!="none")')){const n=Object(ao.inlineSvgFonts)(e);t="data:image/svg+xml;utf8,".concat(encodeURIComponent(n))}else t=n.encodeDataURI()}else t=n.encodeDataURI();return t}}(),ro=e=>e.touches&&e.touches[0]?{x:e.touches[0].clientX,y:e.touches[0].clientY}:e.changedTouches&&e.changedTouches[0]?{x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY}:{x:e.clientX,y:e.clientY};class io{static get STATE_UNIDENTIFIED(){return"unidentified"}static get STATE_SCROLL(){return"scroll"}static get STATE_DRAG(){return"drag"}constructor({onDrag:e=(()=>{}),onDragEnd:t=(()=>{}),touchDragAngle:n=70,distanceThreshold:a=3}){this._onDrag=e,this._onDragEnd=t,this._touchDragAngle=n,this._distanceThreshold=a,this._initialOffset=null,this._gestureState=io.STATE_UNIDENTIFIED,F()(this,["start","gestureInProgress","reset","_handleMove","_handleEnd"])}start(e){"number"==typeof e.button&&0!==e.button||(this._initialOffset=ro(e),this._bindListeners())}gestureInProgress(){return this._gestureState!==io.STATE_UNIDENTIFIED}reset(){this._unbindListeners(),this._initialOffset=null,this._gestureState=io.STATE_UNIDENTIFIED}_bindListeners(){window.addEventListener("mouseup",this._handleEnd),window.addEventListener("mousemove",this._handleMove),window.addEventListener("touchend",this._handleEnd),window.addEventListener("touchmove",this._handleMove,{passive:!1})}_unbindListeners(){window.removeEventListener("mouseup",this._handleEnd),window.removeEventListener("mousemove",this._handleMove),window.removeEventListener("touchend",this._handleEnd),window.removeEventListener("touchmove",this._handleMove,{passive:!1})}_handleMove(e){if(this._isScroll())return;const t=ro(e);if(!this.gestureInProgress()){const n=t.x-this._initialOffset.x,a=t.y-this._initialOffset.y;if(Math.sqrt(n*n+a*a)90&&(e=180-e),e>this._touchDragAngle?this._gestureState=io.STATE_SCROLL:this._gestureState=io.STATE_DRAG}else this._gestureState=io.STATE_DRAG}this._isDrag()&&(this._onDrag(t,this._initialOffset),e.preventDefault())}_handleEnd(){this.reset(),this._onDragEnd()}_isDrag(){return this._gestureState===io.STATE_DRAG}_isScroll(){return this._gestureState===io.STATE_SCROLL}}var so=io,lo=n(369),co=n.n(lo),uo=n(786),po=n.n(uo);const mo=e=>o.a.createElement("div",{"aria-label":"Delete",className:qe()(co.a.deleteButton,e.className),role:"button",tabIndex:e.tabIndex,onClick:e.onClick},o.a.createElement("div",{className:co.a.deleteButtonVisible},o.a.createElement("img",{className:co.a.deleteIcon,src:po.a})));mo.propTypes={className:i.a.string,onClick:i.a.func.isRequired,tabIndex:i.a.number},mo.defaultProps={tabIndex:0};var ho=mo,go=n(129),bo=n.n(go),fo=n(146),wo=n(182),vo=n.n(wo);function yo(){return(yo=Object.assign||function(e){for(var t=1;to.a.createElement(fo.a,yo({},e,{className:vo.a.contextMenu})),ko=e=>o.a.createElement(fo.c,yo({},e,{attributes:{className:vo.a.menuItem}})),So=e=>o.a.createElement(fo.c,yo({},e,{attributes:{className:qe()(vo.a.menuItem,vo.a.menuItemBordered)}})),Eo=e=>o.a.createElement(fo.c,yo({},e,{attributes:{className:qe()(vo.a.menuItem,vo.a.menuItemBordered,vo.a.menuItemDanger)}}));let xo=0;const Co=e=>o.a.createElement(fo.b,{attributes:{className:qe()(e.className,bo.a.spriteSelectorItem,{[bo.a.isSelected]:e.selected}),onClick:e.onClick,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,onMouseDown:e.onMouseDown,onTouchStart:e.onMouseDown},disable:e.preventContextMenu,id:"".concat(e.name,"-").concat(xo),ref:e.componentRef},void 0===e.number?null:o.a.createElement("div",{className:bo.a.number},e.number),e.costumeURL?o.a.createElement("div",{className:bo.a.spriteImageOuter},o.a.createElement("div",{className:bo.a.spriteImageInner},o.a.createElement("img",{className:bo.a.spriteImage,draggable:!1,src:e.costumeURL}))):null,o.a.createElement("div",{className:bo.a.spriteInfo},o.a.createElement("div",{className:bo.a.spriteName},e.name),e.details?o.a.createElement("div",{className:bo.a.spriteDetails},e.details):null),e.selected&&e.onDeleteButtonClick?o.a.createElement(ho,{className:bo.a.deleteButton,onClick:e.onDeleteButtonClick}):null,e.onDuplicateButtonClick||e.onDeleteButtonClick||e.onExportButtonClick?o.a.createElement(_o,{id:"".concat(e.name,"-").concat(xo++)},e.onDuplicateButtonClick?o.a.createElement(ko,{onClick:e.onDuplicateButtonClick},o.a.createElement(m.b,{defaultMessage:"duplicate",id:"gui.spriteSelectorItem.contextMenuDuplicate"})):null,e.onExportButtonClick?o.a.createElement(ko,{onClick:e.onExportButtonClick},o.a.createElement(m.b,{defaultMessage:"export",id:"gui.spriteSelectorItem.contextMenuExport"})):null,e.onRenameButtonClick?o.a.createElement(ko,{onClick:e.onRenameButtonClick},o.a.createElement(m.b,{defaultMessage:"rename",id:"tw.spriteSelectorItem.rename"})):null,e.onDeleteButtonClick?o.a.createElement(Eo,{onClick:e.onDeleteButtonClick},o.a.createElement(m.b,{defaultMessage:"delete",id:"gui.spriteSelectorItem.contextMenuDelete"})):null):null);Co.propTypes={className:i.a.string,componentRef:i.a.func,costumeURL:i.a.string,details:i.a.string,name:i.a.any,number:i.a.number,onClick:i.a.func,onDeleteButtonClick:i.a.func,onDuplicateButtonClick:i.a.func,onExportButtonClick:i.a.func,onRenameButtonClick:i.a.func,onMouseDown:i.a.func,onMouseEnter:i.a.func,onMouseLeave:i.a.func,preventContextMenu:i.a.bool,selected:i.a.bool.isRequired};var Oo=Co;const Fo=["asset","id","index","onClick","onDeleteButtonClick","onDuplicateButtonClick","onExportButtonClick","onRenameButtonClick","dragPayload","receivedBlocks","costumeURL","vm"];function jo(){return(jo=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class Po extends o.a.PureComponent{constructor(e){super(e),F()(this,["getCostumeData","setRef","handleClick","handleDelete","handleDuplicate","handleExport","handleRename","handleMouseEnter","handleMouseLeave","handleMouseDown","handleDragEnd","handleDrag","handleTouchEnd"]),this.dragRecognizer=new so({onDrag:this.handleDrag,onDragEnd:this.handleDragEnd})}componentDidMount(){document.addEventListener("touchend",this.handleTouchEnd)}componentWillUnmount(){document.removeEventListener("touchend",this.handleTouchEnd),this.dragRecognizer.reset()}getCostumeData(){return this.props.costumeURL?this.props.costumeURL:this.props.asset?oo(this.props.asset):null}handleDragEnd(){this.props.dragging&&this.props.onDrag({img:null,currentOffset:null,dragging:!1,dragType:null,index:null}),setTimeout(()=>{this.noClick=!1})}handleDrag(e){this.props.onDrag({img:this.getCostumeData(),currentOffset:e,dragging:!0,dragType:this.props.dragType,index:this.props.index,payload:this.props.dragPayload}),this.noClick=!0}handleTouchEnd(e){const{x:t,y:n}=ro(e),{top:a,left:o,bottom:r,right:i}=this.ref.getBoundingClientRect();t>=o&&t<=i&&n>=a&&n<=r&&this.handleMouseEnter()}handleMouseDown(e){this.dragRecognizer.start(e)}handleClick(e){e.preventDefault(),this.noClick||this.props.onClick(this.props.id)}handleDelete(e){e.stopPropagation(),this.props.onDeleteButtonClick(this.props.id)}handleDuplicate(e){e.stopPropagation(),this.props.onDuplicateButtonClick(this.props.id)}handleExport(e){e.stopPropagation(),this.props.onExportButtonClick(this.props.id)}handleRename(e){e.stopPropagation(),this.props.onRenameButtonClick(this.props.id)}handleMouseLeave(){this.props.dispatchSetHoveredSprite(null)}handleMouseEnter(){this.props.dispatchSetHoveredSprite(this.props.id)}setRef(e){this.ref=e&&e.elem}render(){const e=this.props,{asset:t,id:n,index:a,onClick:r,onDeleteButtonClick:i,onDuplicateButtonClick:s,onExportButtonClick:l,onRenameButtonClick:c,dragPayload:d,receivedBlocks:u,costumeURL:p,vm:m}=e,h=Mo(e,Fo);return o.a.createElement(Oo,jo({componentRef:this.setRef,costumeURL:this.getCostumeData(),preventContextMenu:this.dragRecognizer.gestureInProgress(),onClick:this.handleClick,onDeleteButtonClick:i?this.handleDelete:null,onDuplicateButtonClick:s?this.handleDuplicate:null,onExportButtonClick:l?this.handleExport:null,onRenameButtonClick:c?this.handleRename:null,onMouseDown:this.handleMouseDown,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave},h))}}Po.propTypes={asset:i.a.any,costumeURL:i.a.string,dispatchSetHoveredSprite:i.a.func.isRequired,dragPayload:i.a.any,dragType:i.a.string,dragging:i.a.bool,id:i.a.any,index:i.a.number,name:i.a.any,onClick:i.a.func,onDeleteButtonClick:i.a.func,onRenameButtonClick:i.a.func,onDrag:i.a.func.isRequired,onDuplicateButtonClick:i.a.func,onExportButtonClick:i.a.func,receivedBlocks:i.a.bool.isRequired,selected:i.a.bool,vm:i.a.instanceOf(p.a).isRequired};var To=Object(l.b)((e,{id:t})=>({dragging:e.scratchGui.assetDrag.dragging,receivedBlocks:e.scratchGui.hoveredTarget.receivedBlocks&&e.scratchGui.hoveredTarget.sprite===t,vm:e.scratchGui.vm}),e=>({dispatchSetHoveredSprite:t=>{e(Object(to.c)(t))},onDrag:t=>e(Object(no.c)(t))}))(Po),Ro=n(70),Io=n.n(Ro),Do=n(80),Ao=n.n(Do);class Bo extends o.a.Component{constructor(e){super(e),F()(this,["clickDelayer","handleClosePopover","handleToggleOpenState","handleTouchStart","handleTouchOutside","setButtonRef","setContainerRef"]),this.state={isOpen:!1,forceHide:!1},this.mainTooltipId="tooltip-".concat(Math.random())}componentDidMount(){this.buttonRef.addEventListener("touchstart",this.handleTouchStart),document.addEventListener("touchstart",this.handleTouchOutside)}shouldComponentUpdate(e,t){return t.isOpen!==this.state.isOpen||t.forceHide!==this.state.forceHide||e.title!==this.props.title}componentWillUnmount(){this.buttonRef.removeEventListener("touchstart",this.handleTouchStart),document.removeEventListener("touchstart",this.handleTouchOutside)}handleClosePopover(){this.closeTimeoutId=setTimeout(()=>{this.setState({isOpen:!1}),this.closeTimeoutId=null},300)}handleToggleOpenState(){this.closeTimeoutId?(clearTimeout(this.closeTimeoutId),this.closeTimeoutId=null):this.state.isOpen||this.setState({isOpen:!0,forceHide:!1})}handleTouchOutside(e){this.state.isOpen&&!this.containerRef.contains(e.target)&&(this.setState({isOpen:!1}),Io.a.hide())}clickDelayer(e){return t=>{Io.a.hide(),e&&e(t),this.buttonRef.blur(),this.setState({forceHide:!0,isOpen:!1},()=>{setTimeout(()=>this.setState({forceHide:!1}))})}}handleTouchStart(e){this.state.isOpen||(e.preventDefault(),this.handleToggleOpenState())}setButtonRef(e){this.buttonRef=e}setContainerRef(e){this.containerRef=e}render(){const{className:e,img:t,title:n,moreButtons:a,tooltipPlace:r,onClick:i}=this.props;return o.a.createElement("div",{className:qe()(Ao.a.menuContainer,e,{[Ao.a.expanded]:this.state.isOpen,[Ao.a.forceHidden]:this.state.forceHide}),ref:this.setContainerRef,onMouseEnter:this.handleToggleOpenState,onMouseLeave:this.handleClosePopover},o.a.createElement("button",{"aria-label":n,className:qe()(Ao.a.button,Ao.a.mainButton),"data-for":this.mainTooltipId,"data-tip":n,ref:this.setButtonRef,onClick:this.clickDelayer(i)},o.a.createElement("img",{className:Ao.a.mainIcon,draggable:!1,src:t})),o.a.createElement(Io.a,{className:Ao.a.tooltip,effect:"solid",id:this.mainTooltipId,place:r||"left"}),o.a.createElement("div",{className:Ao.a.moreButtonsOuter},o.a.createElement("div",{className:Ao.a.moreButtons},(a||[]).map(({img:e,title:t,onClick:n,fileAccept:a,fileChange:i,fileInput:s,fileMultiple:l},c)=>{const d=!n,u=s,p="".concat(this.mainTooltipId,"-").concat(t);return o.a.createElement("div",{key:"".concat(p,"-").concat(c)},o.a.createElement("button",{"aria-label":t,className:qe()(Ao.a.button,Ao.a.moreButton,{[Ao.a.comingSoon]:d}),"data-for":p,"data-tip":t,onClick:u?n:this.clickDelayer(n)},o.a.createElement("img",{className:Ao.a.moreIcon,draggable:!1,src:e}),u?o.a.createElement("input",{accept:a,className:Ao.a.fileInput,multiple:l,ref:s,type:"file",onChange:i}):null),o.a.createElement(Io.a,{className:qe()(Ao.a.tooltip,{[Ao.a.comingSoonTooltip]:d}),effect:"solid",id:p,place:r||"left"}))}))))}}Bo.propTypes={className:i.a.string,img:i.a.string,moreButtons:i.a.arrayOf(i.a.shape({img:i.a.string,title:i.a.node.isRequired,onClick:i.a.func,fileAccept:i.a.string,fileChange:i.a.func,fileInput:i.a.func,fileMultiple:i.a.bool})),onClick:i.a.func.isRequired,title:i.a.node.isRequired,tooltipPlace:i.a.string};var No=Bo;class Lo extends o.a.Component{constructor(e){super(e),F()(this,["setRef"])}componentDidMount(){this.props.onAddSortable(this.ref)}componentWillUnmount(){this.props.onRemoveSortable(this.ref)}setRef(e){this.ref=e}render(){return o.a.createElement("div",{className:this.props.className,ref:this.setRef,style:{order:this.props.index}},this.props.children)}}Lo.propTypes={children:i.a.node.isRequired,className:i.a.string,index:i.a.number.isRequired,onAddSortable:i.a.func.isRequired,onRemoveSortable:i.a.func.isRequired};var zo=Lo;function Uo(){return(Uo=Object.assign||function(e){for(var t=1;te&&e.getBoundingClientRect()),this.boxes.sort((e,t)=>e.top===t.top?(e.left-t.left)*(this.props.isRtl?-1:1):e.top-t.top),!this.ref)throw new Error("The containerRef must be assigned to the sortable area");this.containerBox=this.ref.getBoundingClientRect()}else if(!e.dragInfo.dragging&&this.props.dragInfo.dragging){const e=this.getMouseOverIndex();null!==e&&this.props.onDrop(Object.assign({},this.props.dragInfo,{newIndex:e}))}}handleAddSortable(e){this.sortableRefs.push(e)}handleRemoveSortable(e){const t=this.sortableRefs.indexOf(e);this.sortableRefs=this.sortableRefs.slice(0,t).concat(this.sortableRefs.slice(t+1))}getOrdering(e,t,n){let a=Array(this.props.items.length).fill(0).map((e,t)=>t);const o=e=>"number"==typeof e&&!isNaN(e);return o(t)&&o(n)&&(a=a.slice(0,t).concat(a.slice(t+1)),a.splice(n,0,t)),a}getMouseOverIndex(){let e=null;if(this.props.dragInfo.currentOffset){const{x:t,y:n}=this.props.dragInfo.currentOffset,{top:a,left:o,bottom:r,right:i}=this.containerBox;t>=o&&t<=i&&n>=a&&n<=r&&(e=0===this.boxes.length?0:(({x:e,y:t},n,a)=>{if(0===n.length)return null;let o=null;const r=Math.min.apply(null,n.map(e=>e.left)),i=Math.max.apply(null,n.map(e=>e.right)),s=Math.min.apply(null,n.map(e=>e.top)),l=Math.max.apply(null,n.map(e=>e.bottom));for(let c=0;c=u&&e<=p&&t>=m&&t<=h){o=c;break}}return o})(this.props.dragInfo.currentOffset,this.boxes,this.props.isRtl))}return e}setRef(e){this.ref=e}render(){const{dragInfo:{index:t,dragType:n},items:a}=this.props,r=this.getMouseOverIndex(),i=this.getOrdering(a,t,r);return o.a.createElement(e,Uo({containerRef:this.setRef,draggingIndex:t,draggingType:n,mouseOverIndex:r,ordering:i,onAddSortable:this.handleAddSortable,onRemoveSortable:this.handleRemoveSortable},this.props))}}t.propTypes={dragInfo:i.a.shape({currentOffset:i.a.shape({x:i.a.number,y:i.a.number}),dragType:i.a.string,dragging:i.a.bool,index:i.a.number}),items:i.a.arrayOf(i.a.shape({url:i.a.string,name:i.a.string.isRequired})),onClose:i.a.func,onDrop:i.a.func,isRtl:i.a.bool};return Object(l.b)(e=>({dragInfo:e.scratchGui.assetDrag,isRtl:e.locales.isRtl}),()=>({}))(t)},Wo=n(237),Ho=n.n(Wo);const Go=e=>{const{buttons:t,containerRef:n,dragType:a,isRtl:r,items:i,selectedItemIndex:s,draggingIndex:l,draggingType:c,ordering:d,onAddSortable:u,onRemoveSortable:p,onDeleteClick:m,onDuplicateClick:h,onExportClick:g,onItemClick:b}=e,f=c===a;let w=null;if(t.length>0){const{img:e,title:n,onClick:a}=t[0],i=t.slice(1);w=o.a.createElement(at.a,{className:Ho.a.newButtons},o.a.createElement(No,{img:e,moreButtons:i,title:n,tooltipPlace:r?"left":"right",onClick:a}))}return o.a.createElement(at.a,{className:Ho.a.wrapper,componentRef:n},o.a.createElement(at.a,{className:Ho.a.listArea},i.map((e,t)=>o.a.createElement(zo,{id:e.name,index:f?d.indexOf(t):t,key:e.name,onAddSortable:u,onRemoveSortable:p},o.a.createElement(To,{asset:e.asset,className:qe()(Ho.a.listItem,{[Ho.a.placeholder]:f&&t===l}),costumeURL:e.url,details:e.details,dragPayload:e.dragPayload,dragType:a,id:t,index:t,name:e.name,number:t+1,selected:t===s,onClick:b,onDeleteButtonClick:m,onDuplicateButtonClick:h,onExportButtonClick:g})))),w)};Go.propTypes={buttons:i.a.arrayOf(i.a.shape({title:i.a.string.isRequired,img:i.a.string.isRequired,onClick:i.a.func})),containerRef:i.a.func,dragType:i.a.oneOf(Object.keys(Ma)),draggingIndex:i.a.number,draggingType:i.a.oneOf(Object.keys(Ma)),isRtl:i.a.bool,items:i.a.arrayOf(i.a.shape({url:i.a.string,name:i.a.any})),onAddSortable:i.a.func,onDeleteClick:i.a.func,onDuplicateClick:i.a.func,onExportClick:i.a.func,onItemClick:i.a.func.isRequired,onRemoveSortable:i.a.func,ordering:i.a.arrayOf(i.a.number),selectedItemIndex:i.a.number.isRequired};var Vo=qo(Go),Ko=n(370),Xo=n.n(Ko);function Qo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Yo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Jo(){return(Jo=Object.assign||function(e){for(var t=1;to.a.createElement(at.a,{className:Xo.a.wrapper},o.a.createElement(Vo,Jo({className:Xo.a.selector},e)),o.a.createElement(at.a,{className:Xo.a.detailArea},e.children));Zo.propTypes=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class or extends o.a.Component{constructor(e){super(e),F()(this,["handleUpdateImage","handleUpdateName","handleUpdateFonts"]),this.state={fonts:this.props.vm.runtime.fontManager.getFonts()}}componentDidMount(){this.props.vm.runtime.fontManager.on("change",this.handleUpdateFonts)}shouldComponentUpdate(e,t){return this.props.imageId!==e.imageId||this.props.rtl!==e.rtl||this.props.name!==e.name||this.props.isDark!==e.isDark||this.props.customStageSize!==e.customStageSize||this.state.fonts!==t.fonts}componentWillUnmount(){this.props.vm.runtime.fontManager.off("change",this.handleUpdateFonts)}handleUpdateFonts(){this.setState({fonts:this.props.vm.runtime.fontManager.getFonts()})}handleUpdateName(e){this.props.vm.renameCostume(this.props.selectedCostumeIndex,e)}handleUpdateImage(e,t,n,a){e?this.props.vm.updateSvg(this.props.selectedCostumeIndex,t,n,a):this.props.vm.updateBitmap(this.props.selectedCostumeIndex,t,n,a,2)}render(){if(!this.props.imageId)return null;const e=this.props,{selectedCostumeIndex:t,vm:n}=e,a=ar(e,tr);return o.a.createElement(er.default,nr({},a,{image:n.getCostume(t),onUpdateImage:this.handleUpdateImage,onUpdateName:this.handleUpdateName,fontInlineFn:ao.inlineSvgFonts,theme:this.props.isDark?"dark":"light",customFonts:this.state.fonts,width:this.props.customStageSize.width,height:this.props.customStageSize.height}))}}or.propTypes={customStageSize:i.a.shape({width:i.a.width,height:i.a.number}),onManageFonts:i.a.func.isRequired,imageFormat:i.a.string.isRequired,imageId:i.a.string.isRequired,isDark:i.a.bool,name:i.a.string,rotationCenterX:i.a.number,rotationCenterY:i.a.number,rtl:i.a.bool,selectedCostumeIndex:i.a.number.isRequired,vm:i.a.instanceOf(p.a)};var rr=Object(h.a)("paint")(Object(l.b)((e,{selectedCostumeIndex:t})=>{const n=e.scratchGui.vm.editingTarget.id,a=e.scratchGui.vm.editingTarget.sprite,o=t({onManageFonts:()=>e(Object(f.w)())}))(or));var ir=e=>{e.x=Math.floor(200*Math.random()-100),e.y=Math.floor(100*Math.random()-50)},sr=(e,t="image/bmp")=>new Promise(n=>{const a=e instanceof String?e:window.URL.createObjectURL(new Blob([e],{type:t})),o=document.createElement("canvas"),r=o.getContext("2d"),i=document.createElement("img");i.addEventListener("load",()=>{o.width=i.naturalWidth,o.height=i.naturalHeight,r.drawImage(i,0,0);const e=o.toDataURL("image/png");window.URL.revokeObjectURL(a),n(e)}),i.setAttribute("src",a)}),lr=n(787),cr=n(105);var dr=e=>{try{const t=new Uint8Array(e),n=(new cr.TextDecoder).decode(t),a=(new DOMParser).parseFromString(n,"text/xml"),o=a.children[0];if("100%"===o.height.baseVal.valueAsString&&"100%"===o.width.baseVal.valueAsString){o.removeAttribute("height"),o.removeAttribute("width");const e=a.documentElement.outerHTML;return(new cr.TextEncoder).encode(e).buffer}return e}catch(t){return e}},ur=n(439),pr=n.n(ur),mr=n(349);let hr;if(!n.n(mr).a.msie){const e=void 0===document.ontouchstart?"mousedown":"touchstart",t=()=>{document.removeEventListener(e,t);try{hr=new(window.AudioContext||window.webkitAudioContext),pr()(hr)}catch(e){M.default.error("could not create shared audio context; sound-related features will not be available",e)}};document.addEventListener(e,t)}var gr=function(){return hr},br=n(225),fr=n.n(br);var wr=e=>(new gr).decodeAudioData(e).then(e=>{const t=[];for(let n=0;n{if(o===r.length)return void(e.value=null);const i=r[o],s=new FileReader;s.onload=()=>{const e=i.type,n=i.name.split(".",1)[0];t(s.result,e,n,o,r.length),a(o+1,r)},s.onerror=n,s.readAsArrayBuffer(i)};a(0,e.files)},yr=function(e,t,n,a){const o=e.createAsset(t,n,a,null,!0);return{name:null,dataFormat:n,asset:o,md5:"".concat(o.assetId,".").concat(n),assetId:o.assetId}},_r=function e(t,n,a,o,r=(()=>{})){const i=a.runtime.storage;let s=null,l=null;switch(n){case"image/svg+xml":t=ao.sanitizeSvg.sanitizeByteStream(t),s=i.DataFormat.SVG,l=i.AssetType.ImageVector,t=dr(t);break;case"image/jpeg":s=i.DataFormat.JPG,l=i.AssetType.ImageBitmap;break;case"image/bmp":return void sr(t).then(t=>{e(t,"image/png",a,o)});case"image/png":s=i.DataFormat.PNG,l=i.AssetType.ImageBitmap;break;case"image/webp":return void sr(t,"image/webp").then(t=>{e(t,"image/png",a,o)});case"image/gif":{let n=[];return void((e,t)=>{const n=document.createElement("canvas"),a=n.getContext("2d"),o=new lr.GifReader(new Uint8Array(e)),r=o.numFrames();n.width=o.width,n.height=o.height;let i=a.createImageData(n.width,n.height),s=a.createImageData(n.width,n.height);const l=e=>{const c=[];o.decodeAndBlitFrameRGBA(e,c);const{x:d,y:u,width:p,height:m,disposal:h}=o.frameInfo(e);for(let e=0;e{l(e+1)})};l(0)})(t,(t,i,s)=>{e(i,"image/png",a,e=>{n=n.concat(e),t===s-1&&o(n)},r)})}default:return void r("Encountered unexpected file type: ".concat(n))}const c=new ao.BitmapAdapter;if(c.setStageSize){const e=a.runtime.stageWidth,t=a.runtime.stageHeight;c.setStageSize(e,t)}const d=function(e){const t=yr(i,l,s,e);o([t])};s===i.DataFormat.SVG?d(new Uint8Array(t)):c.importBitmap(t,n).then(d).catch(r)},kr=e=>({name:e,md5:"cd21514d0531fdffb22204e0ec5ed84a.svg",rotationCenterX:0,rotationCenterY:0,bitmapResolution:1,skinId:null});var Sr=n(89),Er=n(88),xr=n(122),Cr=n(788),Or=n.n(Cr),Fr=n(789),jr=n.n(Fr),Mr=n(169),Pr=n.n(Mr),Tr=n(226),Rr=n.n(Tr),Ir=n(170),Dr=n.n(Ir),Ar=n(171),Br=n.n(Ar);const Nr=e=>{let t=null;return()=>t||e().then(e=>t=e.default)},Lr=Nr(()=>n.e(79).then(n.t.bind(null,1823,3))),zr=Nr(()=>n.e(80).then(n.t.bind(null,1824,3))),Ur=Nr(()=>n.e(81).then(n.t.bind(null,1825,3))),qr=Nr(()=>n.e(82).then(n.t.bind(null,1826,3)));function Wr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Hr(e){for(var t=1;tt?this.props.vm.addCostumeFromLibrary(e.md5,e):this.props.vm.addCostume(e.md5,e,n)))}handleNewBlankCostume(){const e=this.props.vm.editingTarget.isStage?this.props.intl.formatMessage(Vr.backdrop,{index:1}):this.props.intl.formatMessage(Vr.costume,{index:1});this.handleNewCostume(kr(e))}async handleSurpriseCostume(){const e=await zr(),t=e[Math.floor(Math.random()*e.length)],n={name:t.name,md5:t.md5ext,rotationCenterX:t.rotationCenterX,rotationCenterY:t.rotationCenterY,bitmapResolution:t.bitmapResolution,skinId:null};this.handleNewCostume(n,!0)}async handleSurpriseBackdrop(){const e=await Lr(),t=e[Math.floor(Math.random()*e.length)],n={name:t.name,md5:t.md5ext,rotationCenterX:t.rotationCenterX,rotationCenterY:t.rotationCenterY,bitmapResolution:t.bitmapResolution,skinId:null};this.handleNewCostume(n)}handleCostumeUpload(e){const t=this.props.vm,n=this.props.vm.editingTarget.id;this.props.onShowImporting(),vr(e.target,(e,a,o,r,i)=>{_r(e,a,t,e=>{e.forEach((e,t)=>{e.name="".concat(o).concat(t?t+1:"")}),this.handleNewCostume(e,!1,n).then(()=>{r===i-1&&this.props.onCloseImporting()})},this.props.onCloseImporting)},this.props.onCloseImporting)}handleFileUploadClick(){this.fileInput.click()}handleDrop(e){if(e.dragType===Ma.COSTUME){const t=this.props.vm.editingTarget.sprite,n=t.costumes[this.state.selectedCostumeIndex];this.props.vm.reorderCostume(this.props.vm.editingTarget.id,e.index,e.newIndex),this.setState({selectedCostumeIndex:t.costumes.indexOf(n)})}else e.dragType===Ma.BACKPACK_COSTUME?this.props.vm.addCostume(e.payload.body,{name:e.payload.name}):e.dragType===Ma.BACKPACK_SOUND&&(this.props.onActivateSoundsTab(),this.props.vm.addSound({md5:e.payload.body,name:e.payload.name}))}setFileInput(e){this.fileInput=e}formatCostumeDetails(e,t){const n=t||1;return"".concat(Math.ceil(e[0]/n)," x ").concat(Math.ceil(e[1]/n))}render(){const{dispatchUpdateRestore:e,intl:t,isRtl:n,onNewLibraryBackdropClick:a,onNewLibraryCostumeClick:r,vm:i}=this.props;if(!i.editingTarget)return null;const s=i.editingTarget.isStage,l=i.editingTarget.sprite,c=s?Vr.addLibraryBackdropMsg:Vr.addLibraryCostumeMsg,d=s?Vr.addFileBackdropMsg:Vr.addFileCostumeMsg,u=s?this.handleSurpriseBackdrop:this.handleSurpriseCostume,p=s?a:r,m=s?Or.a:jr.a,h=l.costumes?l.costumes.map(e=>({name:e.name,asset:e.asset,details:e.size?this.formatCostumeDetails(e.size,e.bitmapResolution):null,dragPayload:e})):[];return o.a.createElement($o,{buttons:[{title:t.formatMessage(c),img:m,onClick:p},{title:t.formatMessage(d),img:Pr.a,onClick:this.handleFileUploadClick,fileAccept:".svg, .png, .bmp, .jpg, .jpeg, .jfif, .webp, .gif",fileChange:this.handleCostumeUpload,fileInput:this.setFileInput,fileMultiple:!0},{title:t.formatMessage(Vr.addSurpriseCostumeMsg),img:Dr.a,onClick:u},{title:t.formatMessage(Vr.addBlankCostumeMsg),img:Rr.a,onClick:this.handleNewBlankCostume},{title:t.formatMessage(c),img:Br.a,onClick:p}],dragType:Ma.COSTUME,isRtl:n,items:h,selectedItemIndex:this.state.selectedCostumeIndex,onDeleteClick:l&&l.costumes&&l.costumes.length>1?this.handleDeleteCostume:null,onDrop:this.handleDrop,onDuplicateClick:this.handleDuplicateCostume,onExportClick:this.handleExportCostume,onItemClick:this.handleSelectCostume},l.costumes?o.a.createElement(rr,{selectedCostumeIndex:this.state.selectedCostumeIndex,isDark:this.props.isDark}):null)}}Kr.propTypes={dispatchUpdateRestore:i.a.func,editingTarget:i.a.string,intl:m.i,isDark:i.a.bool,isRtl:i.a.bool,onActivateSoundsTab:i.a.func.isRequired,onCloseImporting:i.a.func.isRequired,onNewLibraryBackdropClick:i.a.func.isRequired,onNewLibraryCostumeClick:i.a.func.isRequired,onShowImporting:i.a.func.isRequired,sprites:i.a.shape({id:i.a.shape({costumes:i.a.arrayOf(i.a.shape({url:i.a.string,name:i.a.string.isRequired,skinId:i.a.number}))})}),stage:i.a.shape({sounds:i.a.arrayOf(i.a.shape({name:i.a.string.isRequired}))}),vm:i.a.instanceOf(p.a)};var Xr=Object(h.a)("Costume Tab")(Object(m.h)(Object(l.b)(e=>({editingTarget:e.scratchGui.targets.editingTarget,isRtl:e.locales.isRtl,sprites:e.scratchGui.targets.sprites,stage:e.scratchGui.targets.stage,dragging:e.scratchGui.assetDrag.dragging}),e=>({onActivateSoundsTab:()=>e(Object(b.d)(b.c)),onNewLibraryBackdropClick:t=>{t.preventDefault(),e(Object(f.r)())},onNewLibraryCostumeClick:t=>{t.preventDefault(),e(Object(f.t)())},dispatchUpdateRestore:t=>{e(Object(xr.c)(t))},onCloseImporting:()=>e(Object(se.c)("importingAsset")),onShowImporting:()=>e(Object(se.i)("importingAsset"))}))(Kr))),Qr=Object(m.g)({all:{id:"gui.libraryTags.all",defaultMessage:"All"},animals:{id:"gui.libraryTags.animals",defaultMessage:"Animals"},dance:{id:"gui.libraryTags.dance",defaultMessage:"Dance"},effects:{id:"gui.libraryTags.effects",defaultMessage:"Effects"},fantasy:{id:"gui.libraryTags.fantasy",defaultMessage:"Fantasy"},fashion:{id:"gui.libraryTags.fashion",defaultMessage:"Fashion"},food:{id:"gui.libraryTags.food",defaultMessage:"Food"},indoors:{id:"gui.libraryTags.indoors",defaultMessage:"Indoors"},loops:{id:"gui.libraryTags.loops",defaultMessage:"Loops"},music:{id:"gui.libraryTags.music",defaultMessage:"Music"},notes:{id:"gui.libraryTags.notes",defaultMessage:"Notes"},outdoors:{id:"gui.libraryTags.outdoors",defaultMessage:"Outdoors"},patterns:{id:"gui.libraryTags.patterns",defaultMessage:"Patterns"},people:{id:"gui.libraryTags.people",defaultMessage:"People"},percussion:{id:"gui.libraryTags.percussion",defaultMessage:"Percussion"},space:{id:"gui.libraryTags.space",defaultMessage:"Space"},sports:{id:"gui.libraryTags.sports",defaultMessage:"Sports"},underwater:{id:"gui.libraryTags.underwater",defaultMessage:"Underwater"},voice:{id:"gui.libraryTags.voice",defaultMessage:"Voice"},wacky:{id:"gui.libraryTags.wacky",defaultMessage:"Wacky"},animation:{id:"gui.libraryTags.animation",defaultMessage:"Animation"},art:{id:"gui.libraryTags.art",defaultMessage:"Art"},games:{id:"gui.libraryTags.games",defaultMessage:"Games"},stories:{id:"gui.libraryTags.stories",defaultMessage:"Stories"},letters:{id:"gui.libraryTags.letters",defaultMessage:"Letters"}}),Yr=[{tag:"animals",intlLabel:Qr.animals},{tag:"people",intlLabel:Qr.people},{tag:"fantasy",intlLabel:Qr.fantasy},{tag:"dance",intlLabel:Qr.dance},{tag:"music",intlLabel:Qr.music},{tag:"sports",intlLabel:Qr.sports},{tag:"food",intlLabel:Qr.food},{tag:"fashion",intlLabel:Qr.fashion},{tag:"letters",intlLabel:Qr.letters}];const Jr=Object(m.g)({libraryTitle:{id:"gui.spriteLibrary.chooseASprite",defaultMessage:"Choose a Sprite"}});class Zr extends o.a.PureComponent{constructor(e){super(e),F()(this,["handleItemSelect"]),this.state={data:qr()}}componentDidMount(){this.state.data.then&&this.state.data.then(e=>this.setState({data:e}))}handleItemSelect(e){ir(e),this.props.vm.addSprite(JSON.stringify(e)).then(()=>{this.props.onActivateBlocksTab()})}render(){return o.a.createElement(aa,{data:this.state.data.then?null:this.state.data,id:"spriteLibrary",tags:Yr,title:this.props.intl.formatMessage(Jr.libraryTitle),onItemSelected:this.handleItemSelect,onRequestClose:this.props.onRequestClose})}}Zr.propTypes={intl:m.i.isRequired,onActivateBlocksTab:i.a.func.isRequired,onRequestClose:i.a.func,vm:i.a.instanceOf(p.a).isRequired};var $r=Object(m.h)(Zr),ei=n(294),ti=n.n(ei);const ni=e=>o.a.createElement("label",{className:e.above?ti.a.inputGroupColumn:ti.a.inputGroup},o.a.createElement("span",{className:e.secondary?ti.a.inputLabelSecondary:ti.a.inputLabel},e.text),e.children);ni.propTypes={above:i.a.bool,children:i.a.node,secondary:i.a.bool,text:i.a.oneOfType([i.a.string,i.a.node]).isRequired},ni.defaultProps={above:!1,secondary:!1};var ai=ni,oi=n(114),ri=n(137),ii=n(223),si=n.n(ii),li=n(206),ci=n.n(li),di=n(790),ui=n.n(di),pi=n(791),mi=n.n(pi);class hi extends o.a.Component{constructor(e){super(e),F()(this,["handleMouseDown","handleMouseMove","containerRef","handleRef","unbindMouseEvents"])}componentDidMount(){this.handleElement.addEventListener("mousedown",this.handleMouseDown),this.handleElement.addEventListener("touchstart",this.handleMouseDown)}componentWillUnmount(){this.unbindMouseEvents(),this.handleElement.removeEventListener("mousedown",this.handleMouseDown),this.handleElement.removeEventListener("touchstart",this.handleMouseDown)}directionToMouseEvent(e){const{x:t,y:n}=ro(e),a=this.containerElement.getBoundingClientRect(),o=a.top+a.height/2,r=a.left+a.width/2;return Math.atan2(n-o,t-r)*(180/Math.PI)+90}gaugePath(e,t){const n=t*(Math.PI/180),a=[];return a.push("M ".concat(e," 0")),a.push("L ".concat(e," ").concat(e)),a.push("L ".concat(e+e*Math.sin(n)," ").concat(e-e*Math.cos(n))),a.push("A ".concat(e," ").concat(e," 0 0 ").concat(t<0?1:0," ").concat(e," 0")),a.push("Z"),a.join(" ")}handleMouseMove(e){this.props.onChange(this.directionToMouseEvent(e)+this.directionOffset),e.preventDefault()}unbindMouseEvents(){window.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("mouseup",this.unbindMouseEvents),window.removeEventListener("touchmove",this.handleMouseMove),window.removeEventListener("touchend",this.unbindMouseEvents)}handleMouseDown(e){this.directionOffset=this.props.direction-this.directionToMouseEvent(e),window.addEventListener("mousemove",this.handleMouseMove),window.addEventListener("mouseup",this.unbindMouseEvents),window.addEventListener("touchmove",this.handleMouseMove),window.addEventListener("touchend",this.unbindMouseEvents),e.preventDefault()}containerRef(e){this.containerElement=e}handleRef(e){this.handleElement=e}render(){const{direction:e,radius:t}=this.props;return o.a.createElement("div",{className:ci.a.container},o.a.createElement("div",{className:ci.a.dialContainer,ref:this.containerRef,style:{width:"".concat(2*t,"px"),height:"".concat(2*t,"px")}},o.a.createElement("img",{className:ci.a.dialFace,draggable:!1,src:ui.a}),o.a.createElement("svg",{className:ci.a.gauge,height:2*t,width:2*t},o.a.createElement("path",{className:ci.a.gaugePath,d:this.gaugePath(t,e)})),o.a.createElement("img",{className:ci.a.dialHandle,draggable:!1,ref:this.handleRef,src:mi.a,style:{top:"".concat(t-t*Math.cos(e*(Math.PI/180)),"px"),left:"".concat(t+t*Math.sin(e*(Math.PI/180)),"px"),transform:"rotate(".concat(e,"deg)")}})))}}hi.propTypes={direction:i.a.number,onChange:i.a.func.isRequired,radius:i.a.number},hi.defaultProps={direction:90,radius:56};var gi=hi,bi=n(183),fi=n.n(bi),wi=n(792),vi=n.n(wi),yi=n(793),_i=n.n(yi),ki=n(794),Si=n.n(ki);const Ei=Object(ri.a)(oi.a),xi=o.a.createElement(m.b,{defaultMessage:"Direction",id:"gui.SpriteInfo.direction"}),Ci="all around",Oi="left-right",Fi="don't rotate",ji=Object(m.g)({allAround:{id:"gui.directionPicker.rotationStyles.allAround",defaultMessage:"All Around"},leftRight:{id:"gui.directionPicker.rotationStyles.leftRight",defaultMessage:"Left/Right"},dontRotate:{id:"gui.directionPicker.rotationStyles.dontRotate",defaultMessage:"Do not rotate"}}),Mi=e=>o.a.createElement(ai,{secondary:!0,above:e.labelAbove,text:xi},o.a.createElement(si.a,{body:o.a.createElement("div",null,o.a.createElement(gi,{direction:e.direction,onChange:e.onChangeDirection}),o.a.createElement("div",{className:fi.a.buttonRow},o.a.createElement("button",{className:qe()(fi.a.iconButton,{[fi.a.active]:e.rotationStyle===Ci}),title:e.intl.formatMessage(ji.allAround),onClick:e.onClickAllAround},o.a.createElement("img",{draggable:!1,src:vi.a})),o.a.createElement("button",{className:qe()(fi.a.iconButton,{[fi.a.active]:e.rotationStyle===Oi}),title:e.intl.formatMessage(ji.leftRight),onClick:e.onClickLeftRight},o.a.createElement("img",{draggable:!1,src:_i.a})),o.a.createElement("button",{className:qe()(fi.a.iconButton,{[fi.a.active]:e.rotationStyle===Fi}),title:e.intl.formatMessage(ji.dontRotate),onClick:e.onClickDontRotate},o.a.createElement("img",{draggable:!1,src:Si.a})))),isOpen:e.popoverOpen,preferPlace:"above",onOuterAction:e.onClosePopover},o.a.createElement(Ei,{small:!0,disabled:e.disabled,label:xi,tabIndex:"0",type:"text",value:e.disabled?"":e.direction,onFocus:e.onOpenPopover,onSubmit:e.onChangeDirection})));Mi.propTypes={direction:i.a.number,disabled:i.a.bool.isRequired,intl:m.i,labelAbove:i.a.bool,onChangeDirection:i.a.func.isRequired,onClickAllAround:i.a.func.isRequired,onClickDontRotate:i.a.func.isRequired,onClickLeftRight:i.a.func.isRequired,onClosePopover:i.a.func.isRequired,onOpenPopover:i.a.func.isRequired,popoverOpen:i.a.bool.isRequired,rotationStyle:i.a.string},Mi.defaultProps={labelAbove:!1};const Pi=Object(m.h)(Mi);class Ti extends o.a.Component{constructor(e){super(e),F()(this,["handleOpenPopover","handleClosePopover","handleClickLeftRight","handleClickDontRotate","handleClickAllAround"]),this.state={popoverOpen:!1}}handleOpenPopover(){this.setState({popoverOpen:!0})}handleClosePopover(){this.setState({popoverOpen:!1})}handleClickAllAround(){this.props.onChangeRotationStyle(Ci)}handleClickLeftRight(){this.props.onChangeRotationStyle(Oi)}handleClickDontRotate(){this.props.onChangeRotationStyle(Fi)}render(){return o.a.createElement(Pi,{direction:this.props.direction,disabled:this.props.disabled,labelAbove:this.props.labelAbove,popoverOpen:this.state.popoverOpen&&!this.props.disabled,rotationStyle:this.props.rotationStyle,onChangeDirection:this.props.onChangeDirection,onClickAllAround:this.handleClickAllAround,onClickDontRotate:this.handleClickDontRotate,onClickLeftRight:this.handleClickLeftRight,onClosePopover:this.handleClosePopover,onOpenPopover:this.handleOpenPopover})}}Ti.propTypes={direction:i.a.number,disabled:i.a.bool,labelAbove:i.a.bool,onChangeDirection:i.a.func,onChangeRotationStyle:i.a.func,rotationStyle:i.a.string};var Ri=Ti;const Ii=["ab","ca","de","el","it","ja","ja-Hira","ko","hu","ru","vi"];var Di=n(31),Ai=n.n(Di),Bi=n(795),Ni=n.n(Bi),Li=n(796),zi=n.n(Li),Ui=n(797),qi=n.n(Ui),Wi=n(798),Hi=n.n(Wi);const Gi=Object(ri.a)(oi.a),Vi=Object(m.g)({spritePlaceholder:{id:"gui.SpriteInfo.spritePlaceholder",defaultMessage:"Name"}});class Ki extends o.a.Component{shouldComponentUpdate(e){return this.props.rotationStyle!==e.rotationStyle||this.props.disabled!==e.disabled||this.props.name!==e.name||this.props.stageSize!==e.stageSize||this.props.visible!==e.visible||Math.round(this.props.direction)!==Math.round(e.direction)||Math.round(this.props.size)!==Math.round(e.size)||Math.round(this.props.x)!==Math.round(e.x)||Math.round(this.props.y)!==Math.round(e.y)}render(){const{stageSize:e}=this.props,t=o.a.createElement(m.b,{defaultMessage:"Sprite",id:"gui.SpriteInfo.sprite"}),n=o.a.createElement(m.b,{defaultMessage:"Show",id:"gui.SpriteInfo.show"}),a=o.a.createElement(m.b,{defaultMessage:"Size",id:"gui.SpriteInfo.size"}),r=(i=this.props.intl.locale,-1!==Ii.indexOf(i));var i;const s=o.a.createElement(Gi,{className:qe()(Ai.a.spriteInput,{[Ai.a.columnInput]:r}),disabled:this.props.disabled,placeholder:this.props.intl.formatMessage(Vi.spritePlaceholder),tabIndex:"0",type:"text",value:this.props.disabled?"":this.props.name,onSubmit:this.props.onChangeName}),l=o.a.createElement("div",{className:Ai.a.group},e===Oa.c.large?o.a.createElement("div",{className:Ai.a.iconWrapper},o.a.createElement("img",{"aria-hidden":"true",className:qe()(Ai.a.xIcon,Ai.a.icon),src:Ni.a})):null,o.a.createElement(ai,{text:"x"},o.a.createElement(Gi,{small:!0,disabled:this.props.disabled,placeholder:"x",tabIndex:"0",type:"text",value:this.props.disabled?"":Math.round(this.props.x),onSubmit:this.props.onChangeX}))),c=o.a.createElement("div",{className:Ai.a.group},e===Oa.c.large?o.a.createElement("div",{className:Ai.a.iconWrapper},o.a.createElement("img",{"aria-hidden":"true",className:qe()(Ai.a.yIcon,Ai.a.icon),src:zi.a})):null,o.a.createElement(ai,{text:"y"},o.a.createElement(Gi,{small:!0,disabled:this.props.disabled,placeholder:"y",tabIndex:"0",type:"text",value:this.props.disabled?"":Math.round(this.props.y),onSubmit:this.props.onChangeY})));return e===Oa.c.small?o.a.createElement(at.a,{className:Ai.a.spriteInfo},o.a.createElement("div",{className:qe()(Ai.a.row,Ai.a.rowPrimary)},o.a.createElement("div",{className:Ai.a.group},s)),o.a.createElement("div",{className:qe()(Ai.a.row,Ai.a.rowSecondary)},l,c)):o.a.createElement(at.a,{className:Ai.a.spriteInfo},o.a.createElement("div",{className:qe()(Ai.a.row,Ai.a.rowPrimary)},o.a.createElement("div",{className:Ai.a.group},o.a.createElement(ai,{above:r,text:t},s)),l,c),o.a.createElement("div",{className:qe()(Ai.a.row,Ai.a.rowSecondary)},o.a.createElement("div",{className:r?Ai.a.column:Ai.a.group},e===Oa.c.large?o.a.createElement(ai,{secondary:!0,text:n}):null,o.a.createElement("div",{className:Ai.a.radioWrapper},o.a.createElement("div",{className:qe()(Ai.a.radio,Ai.a.radioFirst,Ai.a.iconWrapper,{[Ai.a.isActive]:this.props.visible&&!this.props.disabled,[Ai.a.isDisabled]:this.props.disabled}),tabIndex:"0",onClick:this.props.onClickVisible,onKeyPress:this.props.onPressVisible},o.a.createElement("img",{className:Ai.a.icon,src:qi.a})),o.a.createElement("div",{className:qe()(Ai.a.radio,Ai.a.radioLast,Ai.a.iconWrapper,{[Ai.a.isActive]:!this.props.visible&&!this.props.disabled,[Ai.a.isDisabled]:this.props.disabled}),tabIndex:"0",onClick:this.props.onClickNotVisible,onKeyPress:this.props.onPressNotVisible},o.a.createElement("img",{className:Ai.a.icon,src:Hi.a})))),o.a.createElement("div",{className:qe()(Ai.a.group,Ai.a.largerInput)},o.a.createElement(ai,{secondary:!0,above:r,text:a},o.a.createElement(Gi,{small:!0,disabled:this.props.disabled,label:a,tabIndex:"0",type:"text",value:this.props.disabled?"":Math.round(this.props.size),onSubmit:this.props.onChangeSize}))),o.a.createElement("div",{className:qe()(Ai.a.group,Ai.a.largerInput)},o.a.createElement(Ri,{direction:Math.round(this.props.direction),disabled:this.props.disabled,labelAbove:r,rotationStyle:this.props.rotationStyle,onChangeDirection:this.props.onChangeDirection,onChangeRotationStyle:this.props.onChangeRotationStyle}))))}}Ki.propTypes={direction:i.a.oneOfType([i.a.string,i.a.number]),disabled:i.a.bool,intl:m.i,name:i.a.string,onChangeDirection:i.a.func,onChangeName:i.a.func,onChangeRotationStyle:i.a.func,onChangeSize:i.a.func,onChangeX:i.a.func,onChangeY:i.a.func,onClickNotVisible:i.a.func,onClickVisible:i.a.func,onPressNotVisible:i.a.func,onPressVisible:i.a.func,rotationStyle:i.a.string,size:i.a.oneOfType([i.a.string,i.a.number]),stageSize:i.a.oneOf(Object.keys(Oa.c)).isRequired,visible:i.a.bool,x:i.a.oneOfType([i.a.string,i.a.number]),y:i.a.oneOfType([i.a.string,i.a.number])};var Xi=Object(m.h)(Ki);function Qi(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Yi(e){for(var t=1;tt}render(){return this._lastRenderTime=Date.now(),this._lastRenderedValue=this.props[e],o.a.createElement(n,this.props)}}return a}},ns=n(116),as=n.n(ns);const os=ts("asset",500)(To),rs=function(e){const{containerRef:t,editingTarget:n,draggingIndex:a,draggingType:r,hoveredTarget:i,onDeleteSprite:s,onDuplicateSprite:l,onExportSprite:c,onSelectSprite:d,onAddSortable:u,onRemoveSortable:p,ordering:m,raised:h,selectedId:g,items:b}=e,f=r===Ma.SPRITE;return o.a.createElement(at.a,{className:qe()(as.a.scrollWrapper,{[as.a.scrollWrapperDragging]:r===Ma.BACKPACK_SPRITE}),componentRef:t},o.a.createElement(at.a,{className:as.a.itemsWrapper},b.map((e,t)=>{const b=i.sprite===e.id&&e.id!==n&&i.receivedBlocks;let w=!b&&h&&e.id!==n;return w=w||[Ma.COSTUME,Ma.SOUND,Ma.BACKPACK_COSTUME,Ma.BACKPACK_SOUND,Ma.BACKPACK_CODE].includes(r),o.a.createElement(zo,{className:qe()(as.a.spriteWrapper,{[as.a.placeholder]:f&&t===a}),index:f?m.indexOf(t):t,key:e.name,onAddSortable:u,onRemoveSortable:p},o.a.createElement(os,{asset:e.costume&&e.costume.asset,className:qe()(as.a.sprite,{[as.a.raised]:w,[as.a.receivedBlocks]:b}),dragPayload:e.id,dragType:Ma.SPRITE,id:e.id,index:t,key:e.id,name:e.name,selected:e.id===g,onClick:d,onDeleteButtonClick:s,onDuplicateButtonClick:l,onExportButtonClick:c}))})))};rs.propTypes={containerRef:i.a.func,draggingIndex:i.a.number,draggingType:i.a.oneOf(Object.keys(Ma)),editingTarget:i.a.string,hoveredTarget:i.a.shape({hoveredSprite:i.a.string,receivedBlocks:i.a.bool,sprite:i.a.string}),items:i.a.arrayOf(i.a.shape({costume:i.a.shape({url:i.a.string,name:i.a.string,bitmapResolution:i.a.number,rotationCenterX:i.a.number,rotationCenterY:i.a.number}),name:i.a.any,order:i.a.number})),onAddSortable:i.a.func,onDeleteSprite:i.a.func,onDuplicateSprite:i.a.func,onExportSprite:i.a.func,onRemoveSortable:i.a.func,onSelectSprite:i.a.func,ordering:i.a.arrayOf(i.a.number),raised:i.a.bool,selectedId:i.a.string};var is=qo(rs),ss=n(107);const ls=["editingTarget","hoveredTarget","intl","onChangeSpriteDirection","onChangeSpriteName","onChangeSpriteRotationStyle","onChangeSpriteSize","onChangeSpriteVisibility","onChangeSpriteX","onChangeSpriteY","onDrop","onDeleteSprite","onDuplicateSprite","onExportSprite","onFileUploadClick","onNewSpriteClick","onPaintSpriteClick","onSelectSprite","onSpriteUpload","onSurpriseSpriteClick","raised","selectedId","spriteFileInput","sprites","stageSize"];function cs(){return(cs=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const us=Object(m.g)({addSpriteFromLibrary:{id:"gui.spriteSelector.addSpriteFromLibrary",defaultMessage:"Choose a Sprite"},addSpriteFromPaint:{id:"gui.spriteSelector.addSpriteFromPaint",defaultMessage:"Paint"},addSpriteFromSurprise:{id:"gui.spriteSelector.addSpriteFromSurprise",defaultMessage:"Surprise"},addSpriteFromFile:{id:"gui.spriteSelector.addSpriteFromFile",defaultMessage:"Upload Sprite"}}),ps=function(e){const{editingTarget:t,hoveredTarget:n,intl:a,onChangeSpriteDirection:r,onChangeSpriteName:i,onChangeSpriteRotationStyle:s,onChangeSpriteSize:l,onChangeSpriteVisibility:c,onChangeSpriteX:d,onChangeSpriteY:u,onDrop:p,onDeleteSprite:m,onDuplicateSprite:h,onExportSprite:g,onFileUploadClick:b,onNewSpriteClick:f,onPaintSpriteClick:w,onSelectSprite:v,onSpriteUpload:y,onSurpriseSpriteClick:_,raised:k,selectedId:S,spriteFileInput:E,sprites:x,stageSize:C}=e,O=ds(e,ls);let F=x[S],j=!1;return void 0===F&&(F={},j=!0),o.a.createElement(at.a,cs({className:as.a.spriteSelector},O),o.a.createElement(es,{direction:F.direction,disabled:j,name:F.name,rotationStyle:F.rotationStyle,size:F.size,stageSize:C,visible:F.visible,x:F.x,y:F.y,onChangeDirection:r,onChangeName:i,onChangeRotationStyle:s,onChangeSize:l,onChangeVisibility:c,onChangeX:d,onChangeY:u}),o.a.createElement(is,{editingTarget:t,hoveredTarget:n,items:Object.keys(x).map(e=>x[e]),raised:k,selectedId:S,onDeleteSprite:m,onDrop:p,onDuplicateSprite:h,onExportSprite:g,onSelectSprite:v}),o.a.createElement(No,{className:as.a.addButton,img:ra.a,moreButtons:[{title:a.formatMessage(us.addSpriteFromFile),img:Pr.a,onClick:b,fileAccept:".svg, .png, .bmp, .jpg, .jpeg, .jfif, .webp, .sprite2, .sprite3, .gif",fileChange:y,fileInput:E,fileMultiple:!0},{title:a.formatMessage(us.addSpriteFromSurprise),img:Dr.a,onClick:_},{title:a.formatMessage(us.addSpriteFromPaint),img:Rr.a,onClick:w},{title:a.formatMessage(us.addSpriteFromLibrary),img:Br.a,onClick:f}],title:a.formatMessage(us.addSpriteFromLibrary),tooltipPlace:Object(ss.b)(a.locale)?"right":"left",onClick:f}))};ps.propTypes={editingTarget:i.a.string,hoveredTarget:i.a.shape({hoveredSprite:i.a.string,receivedBlocks:i.a.bool}),intl:m.i.isRequired,onChangeSpriteDirection:i.a.func,onChangeSpriteName:i.a.func,onChangeSpriteRotationStyle:i.a.func,onChangeSpriteSize:i.a.func,onChangeSpriteVisibility:i.a.func,onChangeSpriteX:i.a.func,onChangeSpriteY:i.a.func,onDeleteSprite:i.a.func,onDrop:i.a.func,onDuplicateSprite:i.a.func,onExportSprite:i.a.func,onFileUploadClick:i.a.func,onNewSpriteClick:i.a.func,onPaintSpriteClick:i.a.func,onSelectSprite:i.a.func,onSpriteUpload:i.a.func,onSurpriseSpriteClick:i.a.func,raised:i.a.bool,selectedId:i.a.string,spriteFileInput:i.a.func,sprites:i.a.shape({id:i.a.shape({costume:i.a.shape({url:i.a.string,name:i.a.string.isRequired,bitmapResolution:i.a.number.isRequired,rotationCenterX:i.a.number.isRequired,rotationCenterY:i.a.number.isRequired}),name:i.a.string.isRequired,order:i.a.number.isRequired})}),stageSize:i.a.oneOf(Object.keys(Oa.c)).isRequired};var ms=Object(m.h)(ps);var hs=e=>new Promise((t,n)=>{const a=new Image;a.onload=()=>{const e=document.createElement("canvas"),n=e.getContext("2d");a.height<1||a.width<1?e.width=e.height=96:(a.height>a.width?(e.height=96,e.width=96/a.height*a.width):(e.width=96,e.height=96/a.width*a.height),n.drawImage(a,0,0,e.width,e.height));const o=e.toDataURL("image/png").replace("data:image/png;base64,","");t(o)},a.onerror=e=>{n(e)},a.src=e});var gs=(e,t)=>{const n=t.getExportedCostumeBase64(e),a=e.dataFormat,o={type:"costume",name:e.name,mime:"",body:"",thumbnail:""};switch(a){case"svg":o.mime="image/svg+xml",o.body=n;break;case"png":o.mime="image/png",o.body=n;break;case"jpg":o.mime="image/jpeg",o.body=n;break;default:alert("Cannot serialize for format: ".concat(a))}const r=oo(e.asset);return hs(r).then(e=>(o.thumbnail=e,o))},bs=n(440),fs=n.n(bs);const ws=e=>{const t=e.asset.encodeDataURI(),n=e.dataFormat,a={type:"sound",name:e.name,thumbnail:fs.a,mime:"",body:""};switch(n){case"wav":a.mime="audio/x-wav",a.body=t.replace("data:audio/x-wav;base64,","");break;case"mp3":a.mime="audio/mp3",a.body=t.replace("data:audio/x-wav;base64,","");break;default:alert("Cannot serialize for format: ".concat(n))}return new Promise(e=>e(a))};var vs=(e,t)=>{const n=t.runtime.getTargetById(e);return n?t.exportSprite(e,"base64").then(e=>{const t={type:"sprite",name:n.sprite.name,mime:"application/zip",body:e,thumbnail:""},a=n.sprite.costumes[n.currentCostume].asset.encodeDataURI();return hs(a).then(e=>(t.thumbnail=e,t))}):null},ys=n(799),_s=n.n(ys),ks=n(800);var Ss=({blockObjects:e,topBlockId:t})=>{const n={type:"script",name:"code",mime:"application/json",body:ks.Base64.encode(JSON.stringify(e))};return function(e){const t=tt.a.get().getMainWorkspace().getBlockById(e).getSvgRoot().cloneNode(!0);return new Promise(e=>{setTimeout(()=>{t.style.display="",t.innerHTML=t.innerHTML.replace(/ /g," ");const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.appendChild(t),document.body.appendChild(n);const a=10+("hat"===t.getAttribute("data-shapes")?16:0);t.setAttribute("transform","translate(".concat(10," ").concat(a,")"));const o=t.getBoundingClientRect();n.setAttribute("width",o.width+20),n.setAttribute("height",o.height+20),_s()(n,{recursive:!0,properties:["fill","font-family","font-size","font-weight"]});const r=(new XMLSerializer).serializeToString(n);n.parentNode.removeChild(n),e("data:image/svg+xml;utf-8,".concat(encodeURIComponent(r)))},10)})}(t).then(hs).then(e=>(n.thumbnail=e,n))},Es=n(160),xs=n.n(Es);const Cs=e=>{const t=atob(e),n=t.length,a=new Uint8Array(n);for(let e=0;e{let t="";const n=new Uint8Array(e),a=n.byteLength;for(let e=0;e{let t;if(e.id="".concat(e.id),"sound"===e.type?e.thumbnailUrl="data:;base64,".concat(fs.a):e.thumbnailUrl="data:;base64,".concat(Os(e.thumbnailData)),"script"===e.type?e.bodyUrl="data:application/json;base64,".concat(Os(e.bodyData)):"sprite"===e.type?e.bodyUrl="data:application/zip;base64,".concat(Os(e.bodyData)):"costume"===e.type?"image/svg+xml"===e.mime?t=P.a.AssetType.ImageVector:"image/png"!==e.mime&&"image/jpeg"!==e.mime||(t=P.a.AssetType.ImageBitmap):"sound"===e.type&&(t=P.a.AssetType.Sound),t){const n=t.runtimeFormat,a=e.bodyMD5,o="".concat(a,".").concat(n);e.body=o,P.a.builtinHelper._store(t,n,new Uint8Array(e.bodyData),a)}return e};let Ts;const Rs=()=>new Promise((e,t)=>{if(Ts)return void e(Ts);if(!window.indexedDB)return void t(new Error("indexedDB is not supported"));const n=indexedDB.open("TW_Backpack",1);n.onupgradeneeded=e=>{e.target.result.createObjectStore("backpack",{keyPath:"id",autoIncrement:!0})},n.onsuccess=t=>{Ts=t.target.result,e(Ts)},n.onerror=()=>{t(new Error("DB error: ".concat(n.error)))}});var Is=async({limit:e,offset:t})=>{const n=await Rs();return new Promise((a,o)=>{const r=n.transaction("backpack","readonly");r.onerror=()=>{o(new Error("Transaction error: ".concat(r.error)))};const i=r.objectStore("backpack"),s=[],l=i.openCursor(null,"prev");let c=!0;l.onsuccess=n=>{const o=n.target.result;c&&(c=!1,o&&0!==t)?o.advance(t):o&&s.length{const r=await Rs();return new Promise((i,s)=>{const l=r.transaction("backpack","readwrite");l.onerror=()=>{s(new Error("Transaction error: ".concat(l.error)))};const c=l.objectStore("backpack"),d=Cs(a),u=xs()(d),p={type:e,mime:t,name:n,bodyData:d,bodyMD5:u,thumbnailData:Cs(o)},m=c.put(p);m.onsuccess=()=>{p.id=m.result,i(Ps(p))}})},As=async({id:e})=>{e=+e;const t=await Rs();return new Promise((n,a)=>{const o=t.transaction("backpack","readwrite");o.onerror=()=>{a(new Error("Transaction error: ".concat(o.error)))};o.objectStore("backpack").delete(e).onsuccess=()=>{n()}})},Bs=async({id:e,name:t})=>{e=+e;const n=await Rs();return new Promise((a,o)=>{const r=n.transaction("backpack","readwrite");r.onerror=()=>{o(new Error("Transaction error: ".concat(r.error)))};const i=r.objectStore("backpack"),s=i.get(e);s.onsuccess=()=>{const e=js(js({},s.result),{},{name:t});i.put(e).onsuccess=()=>{a(Ps(e))}}})};const Ns=(e,t)=>Object.assign({},e,{thumbnailUrl:"".concat(t,"/").concat(e.thumbnail),bodyUrl:"".concat(t,"/").concat(e.body)}),Ls=(e,t)=>new Promise((n,a)=>{re()({uri:t,responseType:e},(e,t)=>e||200!==t.statusCode?a(new Error(t.status)):n(t.body))}),zs=Ls.bind(null,"json"),Us=Ls.bind(null,"arraybuffer");var qs=n(130),Ws=n.n(qs),Hs=n(801),Gs=n.n(Hs);const Vs=["backdropCount","containerRef","dragOver","fileInputRef","intl","selected","raised","receivedBlocks","url","onBackdropFileUploadClick","onBackdropFileUpload","onClick","onMouseEnter","onMouseLeave","onNewBackdropClick","onSurpriseBackdropClick","onEmptyBackdropClick"];function Ks(){return(Ks=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const Qs=Object(m.g)({addBackdropFromLibrary:{id:"gui.spriteSelector.addBackdropFromLibrary",defaultMessage:"Choose a Backdrop"},addBackdropFromPaint:{id:"gui.stageSelector.addBackdropFromPaint",defaultMessage:"Paint"},addBackdropFromSurprise:{id:"gui.stageSelector.addBackdropFromSurprise",defaultMessage:"Surprise"},addBackdropFromFile:{id:"gui.stageSelector.addBackdropFromFile",defaultMessage:"Upload Backdrop"}}),Ys=e=>{const{backdropCount:t,containerRef:n,dragOver:a,fileInputRef:r,intl:i,selected:s,raised:l,receivedBlocks:c,url:d,onBackdropFileUploadClick:u,onBackdropFileUpload:p,onClick:h,onMouseEnter:g,onMouseLeave:b,onNewBackdropClick:f,onSurpriseBackdropClick:w,onEmptyBackdropClick:v}=e,y=Xs(e,Vs);return o.a.createElement(at.a,Ks({className:qe()(Ws.a.stageSelector,{[Ws.a.isSelected]:s,[Ws.a.raised]:l||a,[Ws.a.receivedBlocks]:c}),componentRef:n,onClick:h,onMouseEnter:g,onMouseLeave:b},y),o.a.createElement("div",{className:Ws.a.header},o.a.createElement("div",{className:Ws.a.headerTitle},o.a.createElement(m.b,{defaultMessage:"Stage",id:"gui.stageSelector.stage"}))),d?o.a.createElement("img",{className:Ws.a.costumeCanvas,src:d}):null,o.a.createElement("div",{className:Ws.a.label},o.a.createElement(m.b,{defaultMessage:"Backdrops",id:"gui.stageSelector.backdrops"})),o.a.createElement("div",{className:Ws.a.count},t),o.a.createElement(No,{className:Ws.a.addButton,img:Gs.a,moreButtons:[{title:i.formatMessage(Qs.addBackdropFromFile),img:Pr.a,onClick:u,fileAccept:".svg, .png, .bmp, .jpg, .jpeg, .jfif, .webp, .gif",fileChange:p,fileInput:r,fileMultiple:!0},{title:i.formatMessage(Qs.addBackdropFromSurprise),img:Dr.a,onClick:w},{title:i.formatMessage(Qs.addBackdropFromPaint),img:Rr.a,onClick:v},{title:i.formatMessage(Qs.addBackdropFromLibrary),img:Br.a,onClick:f}],title:i.formatMessage(Qs.addBackdropFromLibrary),tooltipPlace:Object(ss.b)(i.locale)?"right":"left",onClick:f}))};Ys.propTypes={backdropCount:i.a.number.isRequired,containerRef:i.a.func,dragOver:i.a.bool,fileInputRef:i.a.func,intl:m.i.isRequired,onBackdropFileUpload:i.a.func,onBackdropFileUploadClick:i.a.func,onClick:i.a.func,onEmptyBackdropClick:i.a.func,onMouseEnter:i.a.func,onMouseLeave:i.a.func,onNewBackdropClick:i.a.func,onSurpriseBackdropClick:i.a.func,raised:i.a.bool.isRequired,receivedBlocks:i.a.bool.isRequired,selected:i.a.bool.isRequired,url:i.a.string};var Js=Object(m.h)(Ys);function Zs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function $s(e){for(var t=1;t=o&&t<=i&&n>=a&&n<=r&&this.handleMouseEnter()}addBackdropFromLibraryItem(e,t=!0){const n={name:e.name,md5:e.md5ext,rotationCenterX:e.rotationCenterX,rotationCenterY:e.rotationCenterY,bitmapResolution:e.bitmapResolution,skinId:null};this.handleNewBackdrop(n,t)}handleClick(){this.props.onSelect(this.props.id)}handleNewBackdrop(e,t=!0){const n=Array.isArray(e)?e:[e];return Promise.all(n.map(e=>this.props.vm.addBackdrop(e.md5,e))).then(()=>{if(t)return this.props.onActivateTab(b.b)})}async handleSurpriseBackdrop(e){e.stopPropagation();const t=await Lr(),n=t[Math.floor(Math.random()*t.length)];this.addBackdropFromLibraryItem(n,!1)}handleEmptyBackdrop(e){e.stopPropagation(),this.props.vm.setEditingTarget(this.props.id),this.handleNewBackdrop(kr(this.props.intl.formatMessage(Sr.a.backdrop,{index:1})))}handleBackdropUpload(e){const t=this.props.vm;this.props.onShowImporting(),vr(e.target,(e,n,a,o,r)=>{_r(e,n,t,e=>{this.props.vm.setEditingTarget(this.props.id),e.forEach((e,t)=>{e.name="".concat(a).concat(t?t+1:"")}),this.handleNewBackdrop(e).then(()=>{o===r-1&&this.props.onCloseImporting()})},this.props.onCloseImporting)},this.props.onCloseImporting)}handleFileUploadClick(e){e.stopPropagation(),this.fileInput.click()}handleMouseEnter(){this.props.dispatchSetHoveredSprite(this.props.id)}handleMouseLeave(){this.props.dispatchSetHoveredSprite(null)}handleDrop(e){e.dragType===Ma.COSTUME?this.props.vm.shareCostumeToTarget(e.index,this.props.id):e.dragType===Ma.SOUND?this.props.vm.shareSoundToTarget(e.index,this.props.id):e.dragType===Ma.BACKPACK_COSTUME?this.props.vm.addCostume(e.payload.body,{name:e.payload.name},this.props.id):e.dragType===Ma.BACKPACK_SOUND?this.props.vm.addSound({md5:e.payload.body,name:e.payload.name},this.props.id):e.dragType===Ma.BACKPACK_CODE&&zs(e.payload.bodyUrl).then(e=>{this.props.vm.shareBlocksToTarget(e,this.props.id),this.props.vm.refreshWorkspace()})}setFileInput(e){this.fileInput=e}setRef(e){this.ref=e}render(){const e=v()(this.props,["asset","dispatchSetHoveredSprite","id","intl","onActivateTab","onSelect","onShowImporting","onCloseImporting"]);return o.a.createElement(nl,tl({componentRef:this.setRef,fileInputRef:this.setFileInput,onBackdropFileUpload:this.handleBackdropUpload,onBackdropFileUploadClick:this.handleFileUploadClick,onClick:this.handleClick,onDrop:this.handleDrop,onEmptyBackdropClick:this.handleEmptyBackdrop,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,onSurpriseBackdropClick:this.handleSurpriseBackdrop},e))}}al.propTypes=$s($s({},Js.propTypes),{},{id:i.a.string,intl:m.i.isRequired,onCloseImporting:i.a.func,onSelect:i.a.func,onShowImporting:i.a.func});var ol=Object(m.h)(Object(l.b)((e,{asset:t,id:n})=>({url:t&&t.encodeDataURI(),vm:e.scratchGui.vm,receivedBlocks:e.scratchGui.hoveredTarget.receivedBlocks&&e.scratchGui.hoveredTarget.sprite===n,raised:e.scratchGui.blockDrag}),e=>({onNewBackdropClick:t=>{t.stopPropagation(),e(Object(f.r)())},onActivateTab:t=>{e(Object(b.d)(t))},dispatchSetHoveredSprite:t=>{e(Object(to.c)(t))},onCloseImporting:()=>e(Object(se.c)("importingAsset")),onShowImporting:()=>e(Object(se.i)("importingAsset"))}))(al)),rl=n(452),il=n.n(rl);const sl=["editingTarget","fileInputRef","hoveredTarget","spriteLibraryVisible","onActivateBlocksTab","onChangeSpriteDirection","onChangeSpriteName","onChangeSpriteRotationStyle","onChangeSpriteSize","onChangeSpriteVisibility","onChangeSpriteX","onChangeSpriteY","onDeleteSprite","onDrop","onDuplicateSprite","onExportSprite","onFileUploadClick","onNewSpriteClick","onPaintSpriteClick","onRequestCloseSpriteLibrary","onSelectSprite","onSpriteUpload","onSurpriseSpriteClick","raiseSprites","stage","stageSize","sprites","vm"];function ll(){return(ll=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const dl=e=>{let{editingTarget:t,fileInputRef:n,hoveredTarget:a,spriteLibraryVisible:r,onActivateBlocksTab:i,onChangeSpriteDirection:s,onChangeSpriteName:l,onChangeSpriteRotationStyle:c,onChangeSpriteSize:d,onChangeSpriteVisibility:u,onChangeSpriteX:p,onChangeSpriteY:m,onDeleteSprite:h,onDrop:g,onDuplicateSprite:b,onExportSprite:f,onFileUploadClick:w,onNewSpriteClick:v,onPaintSpriteClick:y,onRequestCloseSpriteLibrary:_,onSelectSprite:k,onSpriteUpload:S,onSurpriseSpriteClick:E,raiseSprites:x,stage:C,stageSize:O,sprites:F,vm:j}=e,M=cl(e,sl);return o.a.createElement("div",ll({className:il.a.targetPane},M),o.a.createElement(ms,{editingTarget:t,hoveredTarget:a,raised:x,selectedId:t,spriteFileInput:n,sprites:F,stageSize:O,onChangeSpriteDirection:s,onChangeSpriteName:l,onChangeSpriteRotationStyle:c,onChangeSpriteSize:d,onChangeSpriteVisibility:u,onChangeSpriteX:p,onChangeSpriteY:m,onDeleteSprite:h,onDrop:g,onDuplicateSprite:b,onExportSprite:f,onFileUploadClick:w,onNewSpriteClick:v,onPaintSpriteClick:y,onSelectSprite:k,onSpriteUpload:S,onSurpriseSpriteClick:E}),o.a.createElement("div",{className:il.a.stageSelectorWrapper},C.id&&o.a.createElement(ol,{asset:C.costume&&C.costume.asset,backdropCount:C.costumeCount,id:C.id,selected:C.id===t,onSelect:k}),o.a.createElement("div",null,r?o.a.createElement($r,{vm:j,onActivateBlocksTab:i,onRequestClose:_}):null)))},ul=i.a.shape({costume:i.a.shape({asset:i.a.object,url:i.a.string,name:i.a.string.isRequired,bitmapResolution:i.a.number,rotationCenterX:i.a.number,rotationCenterY:i.a.number}),costumeCount:i.a.number,direction:i.a.number,id:i.a.string,name:i.a.string,order:i.a.number,size:i.a.number,visibility:i.a.bool,x:i.a.number,y:i.a.number});dl.propTypes={editingTarget:i.a.string,extensionLibraryVisible:i.a.bool,fileInputRef:i.a.func,hoveredTarget:i.a.shape({hoveredSprite:i.a.string,receivedBlocks:i.a.bool}),onActivateBlocksTab:i.a.func.isRequired,onChangeSpriteDirection:i.a.func,onChangeSpriteName:i.a.func,onChangeSpriteRotationStyle:i.a.func,onChangeSpriteSize:i.a.func,onChangeSpriteVisibility:i.a.func,onChangeSpriteX:i.a.func,onChangeSpriteY:i.a.func,onDeleteSprite:i.a.func,onDrop:i.a.func,onDuplicateSprite:i.a.func,onExportSprite:i.a.func,onFileUploadClick:i.a.func,onNewSpriteClick:i.a.func,onPaintSpriteClick:i.a.func,onRequestCloseExtensionLibrary:i.a.func,onRequestCloseSpriteLibrary:i.a.func,onSelectSprite:i.a.func,onSpriteUpload:i.a.func,onSurpriseSpriteClick:i.a.func,raiseSprites:i.a.bool,spriteLibraryVisible:i.a.bool,sprites:i.a.objectOf(ul),stage:ul,stageSize:i.a.oneOf(Object.keys(Oa.c)).isRequired,vm:i.a.instanceOf(p.a)};var pl=dl;const ml=["dispatchUpdateRestore","isRtl","onActivateTab","onCloseImporting","onHighlightTarget","onReceivedBlocks","onShowImporting","workspaceMetrics"];function hl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function gl(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function bl(){return(bl=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class wl extends o.a.Component{constructor(e){super(e),F()(this,["handleActivateBlocksTab","handleBlockDragEnd","handleChangeSpriteRotationStyle","handleChangeSpriteDirection","handleChangeSpriteName","handleChangeSpriteSize","handleChangeSpriteVisibility","handleChangeSpriteX","handleChangeSpriteY","handleDeleteSprite","handleDrop","handleDuplicateSprite","handleExportSprite","handleNewSprite","handleSelectSprite","handleSurpriseSpriteClick","handlePaintSpriteClick","handleFileUploadClick","handleSpriteUpload","setFileInput"])}componentDidMount(){this.props.vm.addListener("BLOCK_DRAG_END",this.handleBlockDragEnd)}componentWillUnmount(){this.props.vm.removeListener("BLOCK_DRAG_END",this.handleBlockDragEnd)}handleChangeSpriteDirection(e){this.props.vm.postSpriteInfo({direction:e})}handleChangeSpriteRotationStyle(e){this.props.vm.postSpriteInfo({rotationStyle:e})}handleChangeSpriteName(e){this.props.vm.renameSprite(this.props.editingTarget,e)}handleChangeSpriteSize(e){this.props.vm.postSpriteInfo({size:e})}handleChangeSpriteVisibility(e){this.props.vm.postSpriteInfo({visible:e})}handleChangeSpriteX(e){this.props.vm.postSpriteInfo({x:e})}handleChangeSpriteY(e){this.props.vm.postSpriteInfo({y:e})}handleDeleteSprite(e){const t=this.props.vm.deleteSprite(e);this.props.dispatchUpdateRestore({restoreFun:()=>t().then(this.handleActivateBlocksTab),deletedItem:"Sprite"})}handleDuplicateSprite(e){this.props.vm.duplicateSprite(e)}handleExportSprite(e){const t=this.props.vm.runtime.getTargetById(e).getName(),n=document.createElement("a");document.body.appendChild(n),this.props.vm.exportSprite(e).then(e=>{Object(Er.a)("".concat(t,".sprite3"),e)})}handleSelectSprite(e){this.props.vm.setEditingTarget(e),this.props.stage&&e!==this.props.stage.id&&this.props.onHighlightTarget(e)}async handleSurpriseSpriteClick(){const e=(await qr()).filter(e=>-1===e.tags.indexOf("letters")&&-1===e.tags.indexOf("numbers")),t=e[Math.floor(Math.random()*e.length)];ir(t),this.props.vm.addSprite(JSON.stringify(t)).then(this.handleActivateBlocksTab)}handlePaintSpriteClick(){const e=this.props.intl.formatMessage,t=(n=e(Sr.a.sprite,{index:1}),e(Sr.a.pop),a=e(Sr.a.costume,{index:1}),{objName:n,sounds:[],costumes:[{costumeName:a,baseLayerID:-1,baseLayerMD5:"cd21514d0531fdffb22204e0ec5ed84a.svg",bitmapResolution:1,rotationCenterX:0,rotationCenterY:0}],currentCostumeIndex:0,scratchX:36,scratchY:28,scale:1,direction:90,rotationStyle:"normal",isDraggable:!1,visible:!0,spriteInfo:{}});var n,a;this.props.vm.addSprite(JSON.stringify(t)).then(()=>{setTimeout(()=>{this.props.onActivateTab(b.b)})})}handleActivateBlocksTab(){this.props.onActivateTab(b.a)}handleNewSprite(e){return this.props.vm.addSprite(e).then(this.handleActivateBlocksTab).catch(e=>{M.default.error(e)})}handleFileUploadClick(){this.fileInput.click()}handleSpriteUpload(e){const t=this.props.vm;this.props.onShowImporting(),vr(e.target,(e,n,a,o,r)=>{!function(e,t,n,a,o,r=(()=>{})){switch(t){case"":case"application/zip":return void o(new Uint8Array(e));case"image/svg+xml":case"image/png":case"image/bmp":case"image/jpeg":case"image/webp":case"image/gif":return void _r(e,t,a,e=>{e.forEach((e,t)=>{e.name="".concat(n).concat(t?t+1:"")});const t={name:n,isStage:!1,x:0,y:0,visible:!0,size:100,rotationStyle:"all around",direction:90,draggable:!1,currentCostume:0,blocks:{},variables:{},costumes:e,sounds:[]};ir(t),o(JSON.stringify(t))},r);default:r("Encountered unexpected file type: ".concat(t))}}(e,n,a,t,e=>{this.handleNewSprite(e).then(()=>{o===r-1&&this.props.onCloseImporting()}).catch(this.props.onCloseImporting)},this.props.onCloseImporting)},this.props.onCloseImporting)}setFileInput(e){this.fileInput=e}handleBlockDragEnd(e){this.props.hoveredTarget.sprite&&this.props.hoveredTarget.sprite!==this.props.editingTarget&&(this.shareBlocks(e,this.props.hoveredTarget.sprite,this.props.editingTarget),this.props.onReceivedBlocks(!0))}shareBlocks(e,t,n){const a=e.find(e=>e.topLevel);if(a){let e;e=this.props.workspaceMetrics.targets[t]?this.props.workspaceMetrics.targets[t]:{scrollX:0,scrollY:0,scale:Oa.a};const{scrollX:n,scrollY:o,scale:r}=e,i=30-o;let s;s=this.props.isRtl?n+30:30-n,a.x=s/r,a.y=i/r}return this.props.vm.shareBlocksToTarget(e,t,n)}handleDrop(e){const{sprite:t}=this.props.hoveredTarget;e.dragType===Ma.SPRITE?this.props.vm.reorderTarget(e.index+1,e.newIndex+1):e.dragType===Ma.BACKPACK_SPRITE?Us(e.payload.bodyUrl).then(e=>this.props.vm.addSprite(e)):t&&(e.dragType===Ma.COSTUME?this.props.vm.shareCostumeToTarget(e.index,t):t&&e.dragType===Ma.SOUND?this.props.vm.shareSoundToTarget(e.index,t):e.dragType===Ma.BACKPACK_COSTUME?this.props.vm.addCostume(e.payload.body,{name:e.payload.name},t):e.dragType===Ma.BACKPACK_SOUND?this.props.vm.addSound({md5:e.payload.body,name:e.payload.name},t):e.dragType===Ma.BACKPACK_CODE&&zs(e.payload.bodyUrl).then(e=>this.shareBlocks(e,t)).then(()=>this.props.vm.refreshWorkspace()))}render(){const e=this.props,{dispatchUpdateRestore:t,isRtl:n,onActivateTab:a,onCloseImporting:r,onHighlightTarget:i,onReceivedBlocks:s,onShowImporting:l,workspaceMetrics:c}=e,d=fl(e,ml);return o.a.createElement(pl,bl({},d,{fileInputRef:this.setFileInput,onActivateBlocksTab:this.handleActivateBlocksTab,onChangeSpriteDirection:this.handleChangeSpriteDirection,onChangeSpriteName:this.handleChangeSpriteName,onChangeSpriteRotationStyle:this.handleChangeSpriteRotationStyle,onChangeSpriteSize:this.handleChangeSpriteSize,onChangeSpriteVisibility:this.handleChangeSpriteVisibility,onChangeSpriteX:this.handleChangeSpriteX,onChangeSpriteY:this.handleChangeSpriteY,onDeleteSprite:this.handleDeleteSprite,onDrop:this.handleDrop,onDuplicateSprite:this.handleDuplicateSprite,onExportSprite:this.handleExportSprite,onFileUploadClick:this.handleFileUploadClick,onPaintSpriteClick:this.handlePaintSpriteClick,onSelectSprite:this.handleSelectSprite,onSpriteUpload:this.handleSpriteUpload,onSurpriseSpriteClick:this.handleSurpriseSpriteClick}))}}const vl=pl.propTypes,{onSelectSprite:yl,onActivateBlocksTab:_l}=vl,kl=fl(vl,["onSelectSprite","onActivateBlocksTab"]);wl.propTypes=function(e){for(var t=1;t({editingTarget:e.scratchGui.targets.editingTarget,hoveredTarget:e.scratchGui.hoveredTarget,isRtl:e.locales.isRtl,spriteLibraryVisible:e.scratchGui.modals.spriteLibrary,sprites:e.scratchGui.targets.sprites,stage:e.scratchGui.targets.stage,raiseSprites:e.scratchGui.blockDrag,workspaceMetrics:e.scratchGui.workspaceMetrics}),e=>({onNewSpriteClick:t=>{t.preventDefault(),e(Object(f.C)())},onRequestCloseSpriteLibrary:()=>{e(Object(f.l)())},onActivateTab:t=>{e(Object(b.d)(t))},onReceivedBlocks:t=>{e(Object(to.d)(t))},dispatchUpdateRestore:t=>{e(Object(xr.c)(t))},onHighlightTarget:t=>{e(Object(ge.b)(t))},onCloseImporting:()=>e(Object(se.c)("importingAsset")),onShowImporting:()=>e(Object(se.i)("importingAsset"))}))(wl)),El=n(802),xl=n.n(El),Cl=n(803),Ol=n.n(Cl),Fl=n(804),jl=n.n(Fl),Ml=n(805),Pl=n.n(Ml);const Tl=function(e,t,n,a=.55){const o=n-t;if(0===o)return 0;let r=0;for(let a=t;a{const i={format:"",dataFormat:"wav",rate:n,sampleCount:t.length},s=e.runtime.storage;i.asset=s.createAsset(s.AssetType.Sound,s.DataFormat.WAV,new Uint8Array(r),null,!0),i.assetId=i.asset.assetId,i.md5="".concat(i.assetId,".").concat(i.dataFormat),i.name=a,e.addSound(i).then(()=>{o&&o()})})};var Dl=n(207),Al=n.n(Dl);const Bl=e=>{const{level:t,width:n,height:a}=e,r=(a-50)/19,i=((19-Math.floor(19*t))*(r+2.5)+1.25)/a;return o.a.createElement("div",{className:Al.a.maskContainer,style:{height:"".concat(a,"px")}},o.a.createElement("svg",{className:Al.a.container,height:a,width:n},Array(19).fill(0).map((e,t)=>o.a.createElement("rect",{className:t<11?Al.a.green:t<16?Al.a.yellow:Al.a.red,height:r,key:t,rx:3,ry:3,width:n-2,x:1,y:a-(2.5+r)*(t+1)}))),o.a.createElement("div",{className:Al.a.mask,style:{transform:"scaleY(".concat(i,")")}}))};Bl.propTypes={height:i.a.number,level:i.a.number,width:i.a.number};var Nl=Bl,Ll=n(453),zl=n.n(Ll);class Ul extends o.a.PureComponent{render(){const{width:e,height:t,data:n}=this.props,a=Math.ceil(n.length/e),r=1===a?n.slice(0):n.filter((e,t)=>t%a==0);1===r.length&&r.push(r[0]);const i=r.length-1,s=[...r.map((n,a)=>[e*(a/i),t*n/2]),...r.reverse().map((n,a)=>[e*(1-a/i),-t*n/2])],l=s.map(([e,t],n)=>{const[a,o]=s[no.a.createElement(at.a,null,o.a.createElement(at.a,{className:Hl.a.visualizationContainer},o.a.createElement(at.a,{className:Hl.a.meterContainer},o.a.createElement(Nl,{height:172,level:e.level,width:20})),o.a.createElement(at.a,{className:Hl.a.waveformContainer},e.levels?o.a.createElement(ql,{data:e.levels,height:150,level:0,width:440}):o.a.createElement("span",{className:Hl.a.helpText},e.listening?e.intl.formatMessage(Kl.beginRecord):e.intl.formatMessage(Kl.permission,{arrow:e.isRtl?"↗️  ":"↖️  "})))),o.a.createElement(at.a,{className:Hl.a.mainButtonRow},o.a.createElement("button",{className:Hl.a.mainButton,disabled:!e.listening,onClick:e.recording?e.onStopRecording:e.onRecord},e.recording?o.a.createElement("img",{draggable:!1,src:Vl.a}):o.a.createElement("svg",{className:Hl.a.recordButton,height:"52",width:"52"},o.a.createElement("circle",{className:Hl.a.recordButtonCircle,cx:"26",cy:"26",r:"25"}),o.a.createElement("circle",{className:Hl.a.recordButtonCircleOutline,cx:"26",cy:"26",r:27+5*e.level})),o.a.createElement("div",{className:Hl.a.helpText},o.a.createElement("span",{className:Hl.a.recordingText},e.recording?e.intl.formatMessage(Kl.stop):e.intl.formatMessage(Kl.record))))));Xl.propTypes={intl:m.i.isRequired,isRtl:i.a.bool,level:i.a.number,levels:i.a.arrayOf(i.a.number),listening:i.a.bool,onRecord:i.a.func.isRequired,onStopRecording:i.a.func.isRequired,recording:i.a.bool};var Ql=Object(m.h)(Xl),Yl=(n(1485),n(350)),Jl=n.n(Yl);var Zl=class{constructor(){this.audioContext=new gr,this.bufferLength=8192,this.userMediaStream=null,this.mediaStreamSource=null,this.sourceNode=null,this.scriptProcessorNode=null,this.recordedSamples=0,this.recording=!1,this.started=!1,this.buffers=[],this.disposed=!1}startListening(e,t,n){try{Jl()({audio:!0}).then(n=>{this.disposed||(this.started=!0,e(),this.attachUserMediaStream(n,t))}).catch(e=>{this.disposed||n(e)})}catch(e){this.disposed||n(e)}}startRecording(){this.recording=!0}attachUserMediaStream(e,t){this.userMediaStream=e,this.mediaStreamSource=this.audioContext.createMediaStreamSource(e),this.sourceNode=this.audioContext.createGain(),this.scriptProcessorNode=this.audioContext.createScriptProcessor(this.bufferLength,1,1),this.scriptProcessorNode.onaudioprocess=e=>{this.recording&&!this.disposed&&this.buffers.push(new Float32Array(e.inputBuffer.getChannelData(0)))},this.analyserNode=this.audioContext.createAnalyser(),this.analyserNode.fftSize=2048;const n=this.analyserNode.frequencyBinCount,a=new Float32Array(n),o=()=>{var e,n;this.disposed||(this.analyserNode.getFloatTimeDomainData(a),t(Tl(e=a,0,e.length,n)),requestAnimationFrame(o))};requestAnimationFrame(o),this.mediaStreamSource.connect(this.sourceNode),this.sourceNode.connect(this.analyserNode),this.analyserNode.connect(this.scriptProcessorNode),this.scriptProcessorNode.connect(this.audioContext.destination)}stop(){const e=new Float32Array(this.buffers.length*this.bufferLength);let t=0;for(let n=0;na&&(null===o&&(o=e+1),r=e+1);let i=Math.max(2,o-2)/this.buffers.length,s=Math.min(this.buffers.length-2,r+2)/this.buffers.length;return i>=s&&(i=0,s=1),{levels:n,samples:e,sampleRate:this.audioContext.sampleRate,trimStart:i,trimEnd:s}}dispose(){this.started&&(this.scriptProcessorNode.onaudioprocess=null,this.scriptProcessorNode.disconnect(),this.analyserNode.disconnect(),this.sourceNode.disconnect(),this.mediaStreamSource.disconnect(),this.userMediaStream.getAudioTracks()[0].stop()),this.disposed=!0}};const $l=["onRecord","onStopRecording"];function ec(){return(ec=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const nc=Object(m.g)({alertMsg:{id:"gui.recordingStep.alertMsg",defaultMessage:"Could not start recording"}});class ac extends o.a.Component{constructor(e){super(e),F()(this,["handleRecord","handleStopRecording","handleStarted","handleLevelUpdate","handleRecordingError"]),this.state={listening:!1,level:0,levels:null}}componentDidMount(){this.audioRecorder=new Zl,this.audioRecorder.startListening(this.handleStarted,this.handleLevelUpdate,this.handleRecordingError)}componentWillUnmount(){this.audioRecorder.dispose()}handleStarted(){this.setState({listening:!0})}handleRecordingError(e){M.default.error(e),alert(this.props.intl.formatMessage(nc.alertMsg))}handleLevelUpdate(e){this.setState({level:e,levels:this.props.recording?(this.state.levels||[]).concat([e]):this.state.levels})}handleRecord(){this.audioRecorder.startRecording(),this.props.onRecord()}handleStopRecording(){const{samples:e,sampleRate:t,levels:n,trimStart:a,trimEnd:o}=this.audioRecorder.stop();this.props.onStopRecording(e,t,n,a,o)}render(){const e=this.props,{onRecord:t,onStopRecording:n}=e,a=tc(e,$l);return o.a.createElement(Ql,ec({level:this.state.level,levels:this.state.levels,listening:this.state.listening,onRecord:this.handleRecord,onStopRecording:this.handleStopRecording},a))}}ac.propTypes={intl:m.i.isRequired,onRecord:i.a.func.isRequired,onStopRecording:i.a.func.isRequired,recording:i.a.bool};var oc=Object(m.h)(ac),rc=n(38),ic=n.n(rc),sc=n(454),lc=n.n(sc);const cc=e=>o.a.createElement(at.a,{className:qe()(ic.a.trimLine,e.handleStyle),onMouseDown:e.onMouseDown,onTouchStart:e.onMouseDown},o.a.createElement(at.a,{className:qe()(ic.a.trimHandle,ic.a.topTrimHandle)},o.a.createElement("img",{src:lc.a,draggable:!1})),o.a.createElement(at.a,{className:qe()(ic.a.trimHandle,ic.a.bottomTrimHandle)},o.a.createElement("img",{src:lc.a,draggable:!1})));cc.propTypes={handleStyle:i.a.string,onMouseDown:i.a.func};var dc=cc;const uc=e=>o.a.createElement("div",{className:ic.a.playheadContainer},o.a.createElement("div",{className:qe()(ic.a.playhead),style:{transform:"translateX(".concat(100*e.playbackPosition,"%)")}}));uc.propTypes={playbackPosition:i.a.number};var pc=uc;const mc=e=>o.a.createElement("div",{className:qe()(ic.a.absolute,ic.a.trimmer),ref:e.containerRef},null===e.trimStart?null:o.a.createElement(at.a,{className:qe()(ic.a.absolute,ic.a.trimBackground,ic.a.startTrimBackground),style:{width:"".concat(100*e.trimStart,"%")},onMouseDown:e.onTrimStartMouseDown,onTouchStart:e.onTrimStartMouseDown},o.a.createElement(at.a,{className:qe()(ic.a.absolute,ic.a.trimBackgroundMask)}),o.a.createElement(dc,{handleStyle:ic.a.leftHandle})),e.playhead?o.a.createElement(pc,{playbackPosition:e.playhead}):null,null===e.trimEnd?null:o.a.createElement(at.a,{className:qe()(ic.a.absolute,ic.a.trimBackground,ic.a.endTrimBackground),style:{left:"".concat(100*e.trimEnd,"%"),width:"".concat(100-100*e.trimEnd,"%")},onMouseDown:e.onTrimEndMouseDown,onTouchStart:e.onTrimEndMouseDown},o.a.createElement(at.a,{className:qe()(ic.a.absolute,ic.a.trimBackgroundMask)}),o.a.createElement(dc,{handleStyle:ic.a.rightHandle})));mc.propTypes={containerRef:i.a.func,onTrimEndMouseDown:i.a.func.isRequired,onTrimStartMouseDown:i.a.func.isRequired,playhead:i.a.number,trimEnd:i.a.number,trimStart:i.a.number};var hc=mc;class gc extends o.a.Component{constructor(e){super(e),F()(this,["handleTrimStartMouseDown","handleTrimEndMouseDown","handleTrimStartMouseMove","handleTrimEndMouseMove","storeRef"]),this.trimStartDragRecognizer=new so({onDrag:this.handleTrimStartMouseMove,touchDragAngle:90,distanceThreshold:0}),this.trimEndDragRecognizer=new so({onDrag:this.handleTrimEndMouseMove,touchDragAngle:90,distanceThreshold:0})}handleTrimStartMouseMove(e,t){const n=(e.x-t.x)/this.containerSize,a=Math.max(0,Math.min(this.props.trimEnd-.01,this.initialTrim+n));this.props.onSetTrimStart(a)}handleTrimEndMouseMove(e,t){const n=(e.x-t.x)/this.containerSize,a=Math.min(1,Math.max(this.props.trimStart+.01,this.initialTrim+n));this.props.onSetTrimEnd(a)}handleTrimStartMouseDown(e){this.containerSize=this.containerElement.getBoundingClientRect().width,this.trimStartDragRecognizer.start(e),this.initialTrim=this.props.trimStart}handleTrimEndMouseDown(e){this.containerSize=this.containerElement.getBoundingClientRect().width,this.trimEndDragRecognizer.start(e),this.initialTrim=this.props.trimEnd}storeRef(e){this.containerElement=e}render(){return o.a.createElement(hc,{containerRef:this.storeRef,playhead:this.props.playhead,trimEnd:this.props.trimEnd,trimStart:this.props.trimStart,onTrimEndMouseDown:this.handleTrimEndMouseDown,onTrimStartMouseDown:this.handleTrimStartMouseDown})}}gc.propTypes={onSetTrimEnd:i.a.func,onSetTrimStart:i.a.func,playhead:i.a.number,trimEnd:i.a.number,trimStart:i.a.number};var bc=gc,fc=n(807),wc=n.n(fc),vc=n(808),yc=n.n(vc),_c=n(809),kc=n.n(_c);const Sc=Object(m.g)({stopMsg:{id:"gui.playbackStep.stopMsg",defaultMessage:"Stop"},playMsg:{id:"gui.playbackStep.playMsg",defaultMessage:"Play"},loadingMsg:{id:"gui.playbackStep.loadingMsg",defaultMessage:"Loading..."},saveMsg:{id:"gui.playbackStep.saveMsg",defaultMessage:"Save"},reRecordMsg:{id:"gui.playbackStep.reRecordMsg",defaultMessage:"Re-record"}}),Ec=e=>o.a.createElement(at.a,null,o.a.createElement(at.a,{className:Hl.a.visualizationContainer},o.a.createElement(at.a,{className:Hl.a.meterContainer},o.a.createElement(Nl,{height:172,level:0,width:20})),o.a.createElement(at.a,{className:Hl.a.waveformContainer},o.a.createElement(ql,{data:e.levels,height:150,level:0,width:480}),o.a.createElement(bc,{playhead:e.playhead,trimEnd:e.trimEnd,trimStart:e.trimStart,onSetTrimEnd:e.onSetTrimEnd,onSetTrimStart:e.onSetTrimStart}))),o.a.createElement(at.a,{className:Hl.a.mainButtonRow},o.a.createElement("button",{className:Hl.a.mainButton,onClick:e.playing?e.onStopPlaying:e.onPlay},o.a.createElement("img",{draggable:!1,src:e.playing?yc.a:kc.a}),o.a.createElement("div",{className:Hl.a.helpText},o.a.createElement("span",{className:Hl.a.playingText},e.playing?e.intl.formatMessage(Sc.stopMsg):e.intl.formatMessage(Sc.playMsg))))),o.a.createElement(at.a,{className:Hl.a.buttonRow},o.a.createElement("button",{className:Hl.a.rerecordButton,onClick:e.onBack},o.a.createElement("img",{draggable:!1,src:wc.a}),e.intl.formatMessage(Sc.reRecordMsg)),o.a.createElement("button",{className:Hl.a.okButton,disabled:e.encoding,onClick:e.onSubmit},e.encoding?e.intl.formatMessage(Sc.loadingMsg):e.intl.formatMessage(Sc.saveMsg))));Ec.propTypes={encoding:i.a.bool.isRequired,intl:m.i.isRequired,levels:i.a.arrayOf(i.a.number).isRequired,onBack:i.a.func.isRequired,onPlay:i.a.func.isRequired,onSetTrimEnd:i.a.func.isRequired,onSetTrimStart:i.a.func.isRequired,onStopPlaying:i.a.func.isRequired,onSubmit:i.a.func.isRequired,playhead:i.a.number,playing:i.a.bool.isRequired,trimEnd:i.a.number.isRequired,trimStart:i.a.number.isRequired};var xc=Object(m.h)(Ec);var Cc=class{constructor(e,t){this.audioContext=new gr,this.buffer=this.audioContext.createBuffer(1,e.length,t),this.buffer.getChannelData(0).set(e),this.source=null,this.startTime=null,this.updateCallback=null,this.trimStart=null,this.trimEnd=null}play(e,t,n,a){this.updateCallback=n,this.trimStart=e,this.trimEnd=t,this.startTime=Date.now();const o=this.buffer.duration*e,r=this.buffer.duration*t-o;this.source=this.audioContext.createBufferSource(),this.source.onended=a,this.source.buffer=this.buffer,this.source.connect(this.audioContext.destination),this.source.start(0,o,r),this.update()}update(){const e=(Date.now()-this.startTime)/1e3/this.buffer.duration;e+this.trimStart=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class Tc extends o.a.Component{constructor(e){super(e),F()(this,["handlePlay","handleStopPlaying"])}componentDidMount(){this.audioBufferPlayer=new Cc(this.props.samples,this.props.sampleRate)}componentWillUnmount(){this.audioBufferPlayer.stop()}handlePlay(){this.audioBufferPlayer.play(this.props.trimStart,this.props.trimEnd,this.props.onSetPlayhead,this.props.onStopPlaying),this.props.onPlay()}handleStopPlaying(){this.audioBufferPlayer.stop(),this.props.onStopPlaying()}render(){const e=this.props,{sampleRate:t,onPlay:n,onStopPlaying:a,onSetPlayhead:r}=e,i=Pc(e,Oc);return o.a.createElement(xc,Mc({onPlay:this.handlePlay,onStopPlaying:this.handleStopPlaying},i))}}Tc.propTypes=function(e){for(var t=1;to.a.createElement(St,{className:Hl.a.modalContent,contentLabel:e.intl.formatMessage(Ic.title),onRequestClose:e.onCancel},o.a.createElement(at.a,{className:Hl.a.body},e.samples?o.a.createElement(Rc,{encoding:e.encoding,levels:e.levels,playhead:e.playhead,playing:e.playing,sampleRate:e.sampleRate,samples:e.samples,trimEnd:e.trimEnd,trimStart:e.trimStart,onBack:e.onBack,onPlay:e.onPlay,onSetPlayhead:e.onSetPlayhead,onSetTrimEnd:e.onSetTrimEnd,onSetTrimStart:e.onSetTrimStart,onStopPlaying:e.onStopPlaying,onSubmit:e.onSubmit}):o.a.createElement(oc,{recording:e.recording,onRecord:e.onRecord,onStopRecording:e.onStopRecording})));Dc.propTypes={encoding:i.a.bool.isRequired,intl:m.i.isRequired,levels:i.a.arrayOf(i.a.number),onBack:i.a.func.isRequired,onCancel:i.a.func.isRequired,onPlay:i.a.func.isRequired,onRecord:i.a.func.isRequired,onSetPlayhead:i.a.func.isRequired,onSetTrimEnd:i.a.func.isRequired,onSetTrimStart:i.a.func.isRequired,onStopPlaying:i.a.func.isRequired,onStopRecording:i.a.func.isRequired,onSubmit:i.a.func.isRequired,playhead:i.a.number,playing:i.a.bool,recording:i.a.bool,sampleRate:i.a.number,samples:i.a.instanceOf(Float32Array),trimEnd:i.a.number.isRequired,trimStart:i.a.number.isRequired};var Ac=Object(m.h)(Dc);class Bc extends o.a.Component{constructor(e){super(e),F()(this,["handleRecord","handleStopRecording","handlePlay","handleStopPlaying","handleBack","handleSubmit","handleCancel","handleSetPlayhead","handleSetTrimStart","handleSetTrimEnd"]),this.state={samples:null,encoding:!1,levels:null,playhead:null,playing:!1,recording:!1,sampleRate:null,trimStart:0,trimEnd:1}}handleRecord(){this.setState({recording:!0})}handleStopRecording(e,t,n,a,o){e.length>0&&this.setState({samples:e,sampleRate:t,levels:n,trimStart:a,trimEnd:o,recording:!1})}handlePlay(){this.setState({playing:!0})}handleStopPlaying(){this.setState({playing:!1,playhead:null})}handleBack(){this.setState({playing:!1,samples:null})}handleSetTrimEnd(e){this.setState({trimEnd:e})}handleSetTrimStart(e){this.setState({trimStart:e})}handleSetPlayhead(e){this.setState({playhead:e})}handleSubmit(){this.setState({encoding:!0},()=>{const e=this.state.samples.length,t=Math.floor(this.state.trimStart*e),n=Math.floor(this.state.trimEnd*e),a=this.state.samples.slice(t,n);Il(this.props.vm,a,this.state.sampleRate,"recording1",()=>{this.props.onClose(),this.props.onNewSound()})})}handleCancel(){this.props.onClose()}render(){return o.a.createElement(Ac,{encoding:this.state.encoding,levels:this.state.levels,playhead:this.state.playhead,playing:this.state.playing,recording:this.state.recording,sampleRate:this.state.sampleRate,samples:this.state.samples,trimEnd:this.state.trimEnd,trimStart:this.state.trimStart,onBack:this.handleBack,onCancel:this.handleCancel,onPlay:this.handlePlay,onRecord:this.handleRecord,onSetPlayhead:this.handleSetPlayhead,onSetTrimEnd:this.handleSetTrimEnd,onSetTrimStart:this.handleSetTrimStart,onStopPlaying:this.handleStopPlaying,onStopRecording:this.handleStopRecording,onSubmit:this.handleSubmit})}}Bc.propTypes={onClose:i.a.func,onNewSound:i.a.func,vm:i.a.instanceOf(p.a)};var Nc=Object(l.b)(e=>({vm:e.scratchGui.vm}),e=>({onClose:()=>{e(Object(f.k)())}}))(Bc);class Lc{static get DELAY_TIME(){return.25}static get TAIL_SECONDS(){return.75}constructor(e,t,n){this.audioContext=e,this.input=this.audioContext.createGain(),this.output=this.audioContext.createGain(),this.effectInput=this.audioContext.createGain(),this.effectInput.gain.value=0,this.effectInput.gain.setValueAtTime(.75,t),this.effectInput.gain.setValueAtTime(0,n),this.delay=this.audioContext.createDelay(1),this.delay.delayTime.value=Lc.DELAY_TIME,this.decay=this.audioContext.createGain(),this.decay.gain.value=.3,this.compressor=this.audioContext.createDynamicsCompressor(),this.compressor.threshold.value=-5,this.compressor.knee.value=15,this.compressor.ratio.value=12,this.compressor.attack.value=0,this.compressor.release.value=.25,this.input.connect(this.effectInput),this.effectInput.connect(this.delay),this.delay.connect(this.compressor),this.input.connect(this.compressor),this.delay.connect(this.decay),this.decay.connect(this.delay),this.compressor.connect(this.output)}}var zc=Lc;var Uc=class{constructor(e,t,n){this.audioContext=e,this.input=this.audioContext.createGain(),this.output=this.audioContext.createGain(),this.passthrough=this.audioContext.createGain(),this.effectInput=this.audioContext.createGain(),this.passthrough.gain.value=1,this.effectInput.gain.value=0,this.passthrough.gain.setValueAtTime(0,t),this.passthrough.gain.setValueAtTime(1,n),this.effectInput.gain.setValueAtTime(1,t),this.effectInput.gain.setValueAtTime(0,n);const a=()=>{const e=this.audioContext.createWaveShaper(),t=(e,t=.2,n=.4,a=.65)=>e<=t?0:e<=n?a*(Math.pow(e-t,2)/(2*n-2*t)):a*e-a*n+a*(Math.pow(e-t,2)/(2*n-2*t)),n=new Float32Array(1024);for(let e=0;e<1024;e++){const a=e/1024*2-1;n[e]=t(a)}return e.curve=n,e},o=this.audioContext.createOscillator();o.frequency.value=50,o.start(0);const r=this.audioContext.createGain();r.gain.value=.5;const i=this.audioContext.createGain();i.gain.value=-1;const s=this.audioContext.createGain();s.gain.value=-1;const l=a(this.audioContext),c=a(this.audioContext),d=this.audioContext.createGain();d.gain.value=-1;const u=this.audioContext.createGain();u.gain.value=-1;const p=a(this.audioContext),m=a(this.audioContext),h=this.audioContext.createDynamicsCompressor();h.threshold.value=-5,h.knee.value=15,h.ratio.value=12,h.attack.value=0,h.release.value=.25;const g=this.audioContext.createBiquadFilter();g.type="highpass",g.frequency.value=1e3,g.gain.value=1.25,this.input.connect(this.effectInput),this.input.connect(this.passthrough),this.passthrough.connect(this.output),this.effectInput.connect(u),this.effectInput.connect(m),u.connect(p),o.connect(r),r.connect(i),r.connect(u),r.connect(m),i.connect(s),i.connect(c),s.connect(l),l.connect(d),c.connect(d),d.connect(h),p.connect(h),m.connect(h),this.effectInput.connect(g),g.connect(h),h.connect(this.output)}};var qc=class{constructor(e,t,n,a){this.audioContext=e,this.input=this.audioContext.createGain(),this.output=this.audioContext.createGain(),this.gain=this.audioContext.createGain(),this.rampLength=.01,this.gain.gain.setValueAtTime(1,Math.max(0,n-this.rampLength)),this.gain.gain.exponentialRampToValueAtTime(t,n),this.gain.gain.setValueAtTime(t,a),this.gain.gain.exponentialRampToValueAtTime(1,a+this.rampLength),this.input.connect(this.gain),this.gain.connect(this.output)}};var Wc=class{constructor(e,t,n,a){this.audioContext=e,this.input=this.audioContext.createGain(),this.output=this.audioContext.createGain(),this.gain=this.audioContext.createGain(),this.gain.gain.setValueAtTime(1,0),t?(this.gain.gain.setValueAtTime(0,n),this.gain.gain.linearRampToValueAtTime(1,a)):(this.gain.gain.setValueAtTime(1,n),this.gain.gain.linearRampToValueAtTime(0,a)),this.gain.gain.setValueAtTime(1,a),this.input.connect(this.gain),this.gain.connect(this.output)}};var Hc=class{constructor(e,t,n){this.audioContext=e,this.input=this.audioContext.createGain(),this.output=this.audioContext.createGain(),this.gain=this.audioContext.createGain(),this.rampLength=.001,this.gain.gain.setValueAtTime(1,Math.max(0,t-this.rampLength)),this.gain.gain.linearRampToValueAtTime(0,t),this.gain.gain.setValueAtTime(0,n),this.gain.gain.linearRampToValueAtTime(1,n+this.rampLength),this.input.connect(this.gain),this.gain.connect(this.output)}};const Gc={ROBOT:"robot",REVERSE:"reverse",LOUDER:"higher",SOFTER:"lower",FASTER:"faster",SLOWER:"slower",ECHO:"echo",FADEIN:"fade in",FADEOUT:"fade out",MUTE:"mute"};var Vc=class{static get effectTypes(){return Gc}constructor(e,t,n,a){this.trimStartSeconds=n*e.length/e.sampleRate,this.trimEndSeconds=a*e.length/e.sampleRate,this.adjustedTrimStartSeconds=this.trimStartSeconds,this.adjustedTrimEndSeconds=this.trimEndSeconds;const o=Math.pow(2,4/12);let r=e.length;const i=Math.floor((this.trimEndSeconds-this.trimStartSeconds)*e.sampleRate);let s=i;const l=r-i;switch(this.playbackRate=1,t){case Gc.ECHO:r=Math.max(r,Math.floor((this.trimEndSeconds+zc.TAIL_SECONDS)*e.sampleRate));break;case Gc.FASTER:this.playbackRate=o,s=Math.floor(i/this.playbackRate),r=l+s;break;case Gc.SLOWER:this.playbackRate=1/o,s=Math.floor(i/this.playbackRate),r=l+s}const c=r/e.sampleRate;if(this.adjustedTrimEndSeconds=this.trimStartSeconds+s/e.sampleRate,this.adjustedTrimStart=this.adjustedTrimStartSeconds/c,this.adjustedTrimEnd=this.adjustedTrimEndSeconds/c,window.OfflineAudioContext)this.audioContext=new window.OfflineAudioContext(1,r,e.sampleRate);else{const t=44100/e.sampleRate;this.audioContext=new window.webkitOfflineAudioContext(1,t*r,44100)}if(t===Gc.REVERSE){const t=e.getChannelData(0),n=this.audioContext.createBuffer(1,e.length,e.sampleRate),a=n.getChannelData(0),o=e.length,r=Math.floor(this.trimStartSeconds*e.sampleRate),i=Math.floor(this.trimEndSeconds*e.sampleRate);let s=0;for(let e=0;e=r&&e{e(t,this.adjustedTrimStart,this.adjustedTrimEnd)}}};const Kc=e=>o.a.createElement("div",{className:qe()(ic.a.absolute,ic.a.selector),ref:e.containerRef,onMouseDown:e.onNewSelectionMouseDown,onTouchStart:e.onNewSelectionMouseDown},null===e.trimStart?null:o.a.createElement(at.a,{className:qe()(ic.a.absolute),style:{left:"".concat(100*e.trimStart,"%"),width:"".concat(100*(e.trimEnd-e.trimStart),"%")}},o.a.createElement(at.a,{className:qe()(ic.a.absolute,ic.a.selectionBackground)}),o.a.createElement(dc,{handleStyle:ic.a.leftHandle,onMouseDown:e.onTrimStartMouseDown}),o.a.createElement(dc,{handleStyle:ic.a.rightHandle,onMouseDown:e.onTrimEndMouseDown})),e.playhead?o.a.createElement(pc,{playbackPosition:e.playhead}):null);Kc.propTypes={containerRef:i.a.func,onNewSelectionMouseDown:i.a.func.isRequired,onTrimEndMouseDown:i.a.func.isRequired,onTrimStartMouseDown:i.a.func.isRequired,playhead:i.a.number,trimEnd:i.a.number,trimStart:i.a.number};var Xc=Kc;class Qc extends o.a.Component{constructor(e){super(e),F()(this,["handleNewSelectionMouseDown","handleTrimStartMouseDown","handleTrimEndMouseDown","handleTrimStartMouseMove","handleTrimEndMouseMove","handleTrimStartMouseUp","handleTrimEndMouseUp","storeRef"]),this.state={trimStart:e.trimStart,trimEnd:e.trimEnd},this.clickStartTime=0,this.trimStartDragRecognizer=new so({onDrag:this.handleTrimStartMouseMove,onDragEnd:this.handleTrimStartMouseUp,touchDragAngle:90,distanceThreshold:0}),this.trimEndDragRecognizer=new so({onDrag:this.handleTrimEndMouseMove,onDragEnd:this.handleTrimEndMouseUp,touchDragAngle:90,distanceThreshold:0})}componentWillReceiveProps(e){const{trimStart:t,trimEnd:n}=this.props;e.trimStart===t&&e.trimEnd===n||this.setState({trimStart:e.trimStart,trimEnd:e.trimEnd})}clearSelection(){this.props.onSetTrim(null,null)}handleNewSelectionMouseDown(e){const{width:t,left:n}=this.containerElement.getBoundingClientRect();this.initialTrimEnd=(ro(e).x-n)/t,this.initialTrimStart=this.initialTrimEnd,this.props.onSetTrim(this.initialTrimStart,this.initialTrimEnd),this.clickStartTime=Date.now(),this.containerSize=t,this.trimEndDragRecognizer.start(e),e.preventDefault()}handleTrimStartMouseMove(e,t){const n=(e.x-t.x)/this.containerSize,a=Math.max(0,Math.min(1,this.initialTrimStart+n));a>this.initialTrimEnd?this.setState({trimStart:this.initialTrimEnd,trimEnd:a}):this.setState({trimStart:a,trimEnd:this.initialTrimEnd})}handleTrimEndMouseMove(e,t){const n=(e.x-t.x)/this.containerSize,a=Math.min(1,Math.max(0,this.initialTrimEnd+n));ao.a.createElement("div",{className:qe()(Zc.a.container,n,t?Zc.a.disabled:null),role:"button",onClick:t?null:r},o.a.createElement("img",{className:Zc.a.icon,draggable:!1,src:e}),o.a.createElement("div",{className:Zc.a.title},a));$c.propTypes={className:i.a.string,disabled:i.a.bool,img:i.a.string,onClick:i.a.func.isRequired,title:i.a.node.isRequired};var ed=$c,td=n(23),nd=n.n(td),ad=n(810),od=n.n(ad),rd=n(811),id=n.n(rd),sd=n(812),ld=n.n(sd),cd=n(813),dd=n.n(cd),ud=n(814),pd=n.n(ud),md=n(815),hd=n.n(md),gd=n(816),bd=n.n(gd),fd=n(817),wd=n.n(fd),vd=n(818),yd=n.n(vd),_d=n(819),kd=n.n(_d),Sd=n(820),Ed=n.n(Sd),xd=n(821),Cd=n.n(xd),Od=n(822),Fd=n.n(Od),jd=n(823),Md=n.n(jd),Pd=n(824),Td=n.n(Pd),Rd=n(825),Id=n.n(Rd),Dd=n(826),Ad=n.n(Dd),Bd=n(827),Nd=n.n(Bd);const Ld=Object(ri.a)(oi.a),zd=Object(m.g)({sound:{id:"gui.soundEditor.sound",defaultMessage:"Sound"},play:{id:"gui.soundEditor.play",defaultMessage:"Play"},stop:{id:"gui.soundEditor.stop",defaultMessage:"Stop"},copy:{id:"gui.soundEditor.copy",defaultMessage:"Copy"},paste:{id:"gui.soundEditor.paste",defaultMessage:"Paste"},copyToNew:{id:"gui.soundEditor.copyToNew",defaultMessage:"Copy to New"},delete:{id:"gui.soundEditor.delete",defaultMessage:"Delete"},save:{id:"gui.soundEditor.save",defaultMessage:"Save"},undo:{id:"gui.soundEditor.undo",defaultMessage:"Undo"},redo:{id:"gui.soundEditor.redo",defaultMessage:"Redo"},faster:{id:"gui.soundEditor.faster",defaultMessage:"Faster"},slower:{id:"gui.soundEditor.slower",defaultMessage:"Slower"},echo:{id:"gui.soundEditor.echo",defaultMessage:"Echo"},robot:{id:"gui.soundEditor.robot",defaultMessage:"Robot"},louder:{id:"gui.soundEditor.louder",defaultMessage:"Louder"},softer:{id:"gui.soundEditor.softer",defaultMessage:"Softer"},reverse:{id:"gui.soundEditor.reverse",defaultMessage:"Reverse"},fadeOut:{id:"gui.soundEditor.fadeOut",defaultMessage:"Fade out"},fadeIn:{id:"gui.soundEditor.fadeIn",defaultMessage:"Fade in"},mute:{id:"gui.soundEditor.mute",defaultMessage:"Mute"}}),Ud=e=>{const t=Math.floor(e/60).toString().padStart(2,"0"),n=(e%60).toFixed(2).padStart(5,"0");return"".concat(t,":").concat(n)},qd=e=>{return o.a.createElement("div",{className:nd.a.editorContainer,ref:e.setRef,onMouseDown:e.onContainerClick},o.a.createElement("div",{className:nd.a.row},o.a.createElement("div",{className:nd.a.inputGroup},o.a.createElement(ai,{text:e.intl.formatMessage(zd.sound)},o.a.createElement(Ld,{tabIndex:"1",type:"text",value:e.name,onSubmit:e.onChangeName,className:nd.a.nameInput})),o.a.createElement("div",{className:nd.a.buttonGroup},o.a.createElement("button",{className:nd.a.button,disabled:!e.canUndo,title:e.intl.formatMessage(zd.undo),onClick:e.onUndo},o.a.createElement("img",{className:nd.a.undoIcon,draggable:!1,src:dd.a})),o.a.createElement("button",{className:nd.a.button,disabled:!e.canRedo,title:e.intl.formatMessage(zd.redo),onClick:e.onRedo},o.a.createElement("img",{className:nd.a.redoIcon,draggable:!1,src:ld.a})))),o.a.createElement("div",{className:nd.a.inputGroup},o.a.createElement(ed,{className:nd.a.toolButton,img:Id.a,title:e.intl.formatMessage(zd.copy),onClick:e.onCopy}),o.a.createElement(ed,{className:nd.a.toolButton,disabled:!1===e.canPaste,img:Ad.a,title:e.intl.formatMessage(zd.paste),onClick:e.onPaste}),o.a.createElement(ed,{className:qe()(nd.a.toolButton,nd.a.flipInRtl),img:Nd.a,title:e.intl.formatMessage(zd.copyToNew),onClick:e.onCopyToNew})),o.a.createElement(ed,{className:nd.a.toolButton,disabled:null===e.trimStart,img:Td.a,title:e.intl.formatMessage(zd.delete),onClick:e.onDelete})),o.a.createElement("div",{className:nd.a.row},o.a.createElement("div",{className:nd.a.waveformContainer},o.a.createElement(ql,{data:e.chunkLevels,height:160,width:600}),o.a.createElement(Yc,{playhead:e.playhead,trimEnd:e.trimEnd,trimStart:e.trimStart,onPlay:e.onPlay,onSetTrim:e.onSetTrim,onStop:e.onStop}))),o.a.createElement("div",{className:qe()(nd.a.row,nd.a.rowReverse)},o.a.createElement("div",{className:qe()(nd.a.roundButtonOuter,nd.a.inputGroup)},e.playhead?o.a.createElement("button",{className:qe()(nd.a.roundButton,nd.a.stopButtonn),title:e.intl.formatMessage(zd.stop),onClick:e.onStop},o.a.createElement("img",{draggable:!1,src:id.a})):o.a.createElement("button",{className:qe()(nd.a.roundButton,nd.a.playButton),title:e.intl.formatMessage(zd.play),onClick:e.onPlay},o.a.createElement("img",{draggable:!1,src:od.a}))),o.a.createElement("div",{className:nd.a.effects},o.a.createElement(ed,{className:nd.a.effectButton,img:pd.a,title:o.a.createElement(m.b,zd.faster),onClick:e.onFaster}),o.a.createElement(ed,{className:nd.a.effectButton,img:hd.a,title:o.a.createElement(m.b,zd.slower),onClick:e.onSlower}),o.a.createElement(ed,{disabled:e.tooLoud,className:qe()(nd.a.effectButton,nd.a.flipInRtl),img:bd.a,title:o.a.createElement(m.b,zd.louder),onClick:e.onLouder}),o.a.createElement(ed,{className:qe()(nd.a.effectButton,nd.a.flipInRtl),img:wd.a,title:o.a.createElement(m.b,zd.softer),onClick:e.onSofter}),o.a.createElement(ed,{className:qe()(nd.a.effectButton,nd.a.flipInRtl),img:Md.a,title:o.a.createElement(m.b,zd.mute),onClick:e.onMute}),o.a.createElement(ed,{className:nd.a.effectButton,img:Fd.a,title:o.a.createElement(m.b,zd.fadeIn),onClick:e.onFadeIn}),o.a.createElement(ed,{className:nd.a.effectButton,img:Cd.a,title:o.a.createElement(m.b,zd.fadeOut),onClick:e.onFadeOut}),o.a.createElement(ed,{className:nd.a.effectButton,img:Ed.a,title:o.a.createElement(m.b,zd.reverse),onClick:e.onReverse}),o.a.createElement(ed,{className:nd.a.effectButton,img:yd.a,title:o.a.createElement(m.b,zd.robot),onClick:e.onRobot}),o.a.createElement(ed,{className:nd.a.effectButton,img:kd.a,title:o.a.createElement(m.b,zd.echo),onClick:e.onEcho}))),o.a.createElement("div",{className:nd.a.infoRow},o.a.createElement("div",{className:nd.a.duration},((e,t,n,a)=>{const o=(n=null===n?1:n)-(t=null===t?0:t)||1,r=o*a;return"".concat(Ud(((e=null===e?t:e)-t)/o*r)," / ").concat(Ud(r))})(e.playhead,e.trimStart,e.trimEnd,e.duration)),o.a.createElement("div",{className:nd.a.advancedInfo},e.sampleRate,"Hz ",e.isStereo?o.a.createElement(m.b,{defaultMessage:"Stereo",id:"tw.stereo"}):o.a.createElement(m.b,{defaultMessage:"Mono",id:"tw.mono"})," (".concat((t=e.size)>1e6?"".concat((t/1e3/1e3).toFixed(2),"MB"):"".concat((t/1e3).toFixed(2),"KB"),")"))),e.size>=1e7&&o.a.createElement("div",{className:qe()(nd.a.alert,nd.a.tooLarge)},o.a.createElement(m.b,{defaultMessage:"This sound may be too large to upload to Scratch.",id:"tw.tooLarge"})),e.isStereo&&o.a.createElement("div",{className:qe()(nd.a.alert,nd.a.stereo)},o.a.createElement(m.b,{defaultMessage:"Editing this stereo sound will irreversibly convert it to mono.",id:"tw.stereoAlert"})));var t};qd.propTypes={isStereo:i.a.bool.isRequired,duration:i.a.number.isRequired,size:i.a.bool.isRequired,sampleRate:i.a.number.isRequired,canPaste:i.a.bool.isRequired,canRedo:i.a.bool.isRequired,canUndo:i.a.bool.isRequired,chunkLevels:i.a.arrayOf(i.a.number).isRequired,intl:m.i,name:i.a.string.isRequired,onChangeName:i.a.func.isRequired,onContainerClick:i.a.func.isRequired,onCopy:i.a.func.isRequired,onCopyToNew:i.a.func.isRequired,onDelete:i.a.func,onEcho:i.a.func.isRequired,onFadeIn:i.a.func.isRequired,onFadeOut:i.a.func.isRequired,onFaster:i.a.func.isRequired,onLouder:i.a.func.isRequired,onMute:i.a.func.isRequired,onPaste:i.a.func.isRequired,onPlay:i.a.func.isRequired,onRedo:i.a.func.isRequired,onReverse:i.a.func.isRequired,onRobot:i.a.func.isRequired,onSetTrim:i.a.func,onSlower:i.a.func.isRequired,onSofter:i.a.func.isRequired,onStop:i.a.func.isRequired,onUndo:i.a.func.isRequired,playhead:i.a.number,setRef:i.a.func,tooLoud:i.a.bool.isRequired,trimEnd:i.a.number,trimStart:i.a.number};var Wd=Object(m.h)(qd);function Hd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Gd(e){for(var t=1;t0&&this.handleRedo()):"z"===e.key?this.undoStack.length>0&&(e.preventDefault(),this.handleUndo()):"c"===e.key?(e.preventDefault(),this.handleCopy()):"v"===e.key?(e.preventDefault(),this.handlePaste()):"a"===e.key&&(e.preventDefault(),this.handleUpdateTrim(0,1))))}resetState(e,t){this.audioBufferPlayer.stop(),this.audioBufferPlayer=new Cc(e,t),this.setState({chunkLevels:Rl(e),playhead:null})}submitNewSamples(e,t,n){return((e,t)=>{const{samples:n,sampleRate:a}=e;return 2*n.length<1e7?Promise.resolve({samples:n,sampleRate:a}):t({samples:n,sampleRate:a},22050)})({samples:e,sampleRate:t},this.resampleBufferToRate).then(({samples:e,sampleRate:t})=>fr.a.encode({sampleRate:t,channelData:[e]}).then(a=>(n||(this.redoStack=[],this.undoStack.length>=99&&this.undoStack.shift(),this.undoStack.push(this.getUndoItem())),this.resetState(e,t),this.props.vm.updateSoundBuffer(this.props.soundIndex,this.audioBufferPlayer.buffer,new Uint8Array(a)),!0))).catch(e=>(M.default.error("Encountered error while trying to encode sound update: ".concat(e.message)),!1))}handlePlay(){this.audioBufferPlayer.stop(),this.audioBufferPlayer.play(this.state.trimStart||0,this.state.trimEnd||1,this.handleUpdatePlayhead,this.handleStoppedPlaying)}handleStopPlaying(){this.audioBufferPlayer.stop(),this.handleStoppedPlaying()}handleStoppedPlaying(){this.setState({playhead:null})}handleUpdatePlayhead(e){this.setState({playhead:e})}handleChangeName(e){this.props.vm.renameSound(this.props.soundIndex,e)}handleDelete(){const{samples:e,sampleRate:t}=this.copyCurrentBuffer(),n=e.length,a=Math.floor(this.state.trimStart*n),o=Math.floor(this.state.trimEnd*n),r=e.slice(0,a),i=e.slice(o,n),s=r.length+i.length;let l;0===s?l=new Float32Array(1):(l=new Float32Array(s),l.set(r,0),l.set(i,r.length)),this.submitNewSamples(l,t).then(()=>{this.setState({trimStart:null,trimEnd:null})})}handleDeleteInverse(){const{samples:e,sampleRate:t}=this.copyCurrentBuffer(),n=e.length,a=Math.floor(this.state.trimStart*n),o=Math.floor(this.state.trimEnd*n);let r=e.slice(a,o);0===r.length&&(r=new Float32Array(1)),this.submitNewSamples(r,t).then(e=>{e&&this.setState({trimStart:null,trimEnd:null})})}handleUpdateTrim(e,t){this.setState({trimStart:e,trimEnd:t}),this.handleStopPlaying()}effectFactory(e){return()=>this.handleEffect(e)}copyCurrentBuffer(){return{samples:this.audioBufferPlayer.buffer.getChannelData(0),sampleRate:this.audioBufferPlayer.buffer.sampleRate}}handleEffect(e){const t=null===this.state.trimStart?0:this.state.trimStart,n=null===this.state.trimEnd?1:this.state.trimEnd;if(this.audioBufferPlayer.buffer.length<2)return;new Vc(this.audioBufferPlayer.buffer,e,t,n).process((e,t,n)=>{const a=e.getChannelData(0),o=e.sampleRate;this.submitNewSamples(a,o).then(e=>{e&&(null===this.state.trimStart?this.handlePlay():this.setState({trimStart:t,trimEnd:n},this.handlePlay))})})}tooLoud(){const e=this.state.chunkLevels.length,t=null===this.state.trimStart?0:Math.floor(this.state.trimStart*e),n=null===this.state.trimEnd?e-1:Math.ceil(this.state.trimEnd*e),a=this.state.chunkLevels.slice(t,n);let o=0;for(const e of a)e>o&&(o=e);return o>1.2}getUndoItem(){return Gd(Gd({},this.copyCurrentBuffer()),{},{trimStart:this.state.trimStart,trimEnd:this.state.trimEnd})}handleUndo(){this.redoStack.push(this.getUndoItem());const{samples:e,sampleRate:t,trimStart:n,trimEnd:a}=this.undoStack.pop();if(e)return this.submitNewSamples(e,t,!0).then(e=>{e&&this.setState({trimStart:n,trimEnd:a},this.handlePlay)})}handleRedo(){const{samples:e,sampleRate:t,trimStart:n,trimEnd:a}=this.redoStack.pop();if(e)return this.undoStack.push(this.getUndoItem()),this.submitNewSamples(e,t,!0).then(e=>{e&&this.setState({trimStart:n,trimEnd:a},this.handlePlay)})}handleCopy(){this.copy()}copy(e){const t=null===this.state.trimStart?0:this.state.trimStart,n=null===this.state.trimEnd?1:this.state.trimEnd,a=this.copyCurrentBuffer(),o=t*a.samples.length,r=n*a.samples.length;a.samples=a.samples.slice(o,r),this.setState({copyBuffer:a},e)}handleCopyToNew(){this.copy(()=>{Il(this.props.vm,this.state.copyBuffer.samples,this.state.copyBuffer.sampleRate,this.props.name)})}resampleBufferToRate(e,t){return new Promise((n,a)=>{const o=t/e.sampleRate*e.samples.length;let r;try{window.OfflineAudioContext?r=new window.OfflineAudioContext(1,o,t):window.webkitOfflineAudioContext&&(r=new window.webkitOfflineAudioContext(1,o,t))}catch(o){return t===e.sampleRate/2?n((e=>{const t=Math.floor(e.samples.length/2),n=new Float32Array(t);for(let a=0;a{n({samples:e.getChannelData(0),sampleRate:t})}})}paste(){const{samples:e}=this.copyCurrentBuffer();if(null===this.state.trimStart){const t=e.length+this.state.copyBuffer.samples.length,n=new Float32Array(t);n.set(e,0),n.set(this.state.copyBuffer.samples,e.length),this.submitNewSamples(n,this.props.sampleRate,!1).then(e=>{e&&this.handlePlay()})}else{const t=this.state.trimStart*e.length,n=this.state.trimEnd*e.length,a=e.slice(0,t),o=e.slice(n),r=a.length+this.state.copyBuffer.samples.length+o.length,i=new Float32Array(r);i.set(a,0),i.set(this.state.copyBuffer.samples,a.length),i.set(o,a.length+this.state.copyBuffer.samples.length);const s=t/this.props.sampleRate,l=s+this.state.copyBuffer.samples.length/this.state.copyBuffer.sampleRate,c=i.length/this.state.copyBuffer.sampleRate,d=s/c,u=l/c;this.submitNewSamples(i,this.props.sampleRate,!1).then(e=>{e&&this.setState({trimStart:d,trimEnd:u},this.handlePlay)})}}handlePaste(){this.state.copyBuffer&&(this.state.copyBuffer.sampleRate===this.props.sampleRate?this.paste():this.resampleBufferToRate(this.state.copyBuffer,this.props.sampleRate).then(e=>{this.setState({copyBuffer:e},this.paste)}))}setRef(e){this.ref=e}handleContainerClick(e){e.target===this.ref&&null!==this.state.trimStart&&this.handleUpdateTrim(null,null)}render(){const{effectTypes:e}=Vc;return o.a.createElement(Wd,{isStereo:this.props.isStereo,duration:this.props.duration,size:this.props.size,sampleRate:this.props.sampleRate,canPaste:null!==this.state.copyBuffer,canRedo:this.redoStack.length>0,canUndo:this.undoStack.length>0,chunkLevels:this.state.chunkLevels,name:this.props.name,playhead:this.state.playhead,setRef:this.setRef,tooLoud:this.tooLoud(),trimEnd:this.state.trimEnd,trimStart:this.state.trimStart,onChangeName:this.handleChangeName,onContainerClick:this.handleContainerClick,onCopy:this.handleCopy,onCopyToNew:this.handleCopyToNew,onDelete:this.handleDelete,onEcho:this.effectFactory(e.ECHO),onFadeIn:this.effectFactory(e.FADEIN),onFadeOut:this.effectFactory(e.FADEOUT),onFaster:this.effectFactory(e.FASTER),onLouder:this.effectFactory(e.LOUDER),onMute:this.effectFactory(e.MUTE),onPaste:this.handlePaste,onPlay:this.handlePlay,onRedo:this.handleRedo,onReverse:this.effectFactory(e.REVERSE),onRobot:this.effectFactory(e.ROBOT),onSetTrim:this.handleUpdateTrim,onSlower:this.effectFactory(e.SLOWER),onSofter:this.effectFactory(e.SOFTER),onStop:this.handleStopPlaying,onUndo:this.handleUndo})}}Kd.propTypes={isStereo:i.a.bool,duration:i.a.number,size:i.a.number,isFullScreen:i.a.bool,name:i.a.string.isRequired,sampleRate:i.a.number,samples:i.a.instanceOf(Float32Array),soundId:i.a.string,soundIndex:i.a.number,vm:i.a.instanceOf(p.a).isRequired};var Xd=Object(l.b)((e,{soundIndex:t})=>{const n=e.scratchGui.vm.editingTarget.sprite,a=t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const ou=Object(m.g)({libraryTitle:{id:"gui.soundLibrary.chooseASound",defaultMessage:"Choose a Sound"}}),ru=(e,t)=>e.map(e=>{const{md5ext:n}=e,a=au(e,eu);return function(e){for(var t=1;tthis.setState({data:ru(e,this.props.isRtl)})):this.setState({data:ru(e,this.props.isRtl)}),this.audioEngine=new Oe.a,this.playingSoundPromise=null}componentWillUnmount(){this.stopPlayingSound()}onStop(){null!==this.playingSoundPromise&&(this.playingSoundPromise.then(e=>e&&e.removeListener("stop",this.onStop)),this.handleStop&&this.handleStop())}setStopHandler(e){this.handleStop=e}stopPlayingSound(){null!==this.playingSoundPromise&&(this.playingSoundPromise.then(e=>e&&e.removeListener("stop",this.onStop)),this.playingSoundPromise.isPlaying?this.playingSoundPromise.then(e=>{e.stop()}):this.playingSoundPromise.then(e=>{e&&e.stopImmediately()}),this.playingSoundPromise=null)}handleItemMouseEnter(e){const t=e._md5,n=t.split(".")[0],a=this.props.vm;this.stopPlayingSound(),this.playingSoundPromise=a.runtime.storage.load(a.runtime.storage.AssetType.Sound,n).then(n=>{if(n){const a={md5:t,name:e.name,format:e.format,data:n.data};return this.audioEngine.decodeSoundPlayer(a).then(e=>(e.connect(this.audioEngine),e.play(),e.addListener("stop",this.onStop),null!==this.playingSoundPromise&&(this.playingSoundPromise.isPlaying=!0),e))}})}handleItemMouseLeave(){this.stopPlayingSound()}handleItemSelected(e){const t={format:e.format,md5:e._md5,rate:e.rate,sampleCount:e.sampleCount,name:e.name};this.props.vm.addSound(t).then(()=>{this.props.onNewSound()})}render(){return o.a.createElement(aa,{showPlayButton:!0,data:this.state.data,id:"soundLibrary",setStopHandler:this.setStopHandler,tags:$d,title:this.props.intl.formatMessage(ou.libraryTitle),onItemMouseEnter:this.handleItemMouseEnter,onItemMouseLeave:this.handleItemMouseLeave,onItemSelected:this.handleItemSelected,onRequestClose:this.props.onRequestClose})}}iu.propTypes={intl:m.i.isRequired,isRtl:i.a.bool,onNewSound:i.a.func.isRequired,onRequestClose:i.a.func,vm:i.a.instanceOf(p.a).isRequired};var su=Object(m.h)(Object(l.b)(e=>({isRtl:e.locales.isRtl}),()=>({}))(iu)),lu=n(830),cu=n.n(lu);var du=()=>o.a.createElement("div",{className:cu.a.container},o.a.createElement(m.b,{defaultMessage:"Sound editor is not supported in this browser.",id:"tw.soundEditorNotSupported"}));class uu extends o.a.Component{constructor(e){super(e),F()(this,["handleSelectSound","handleDeleteSound","handleDuplicateSound","handleExportSound","handleNewSound","handleSurpriseSound","handleFileUploadClick","handleSoundUpload","handleDrop","setFileInput"]),this.state={selectedSoundIndex:0}}componentWillReceiveProps(e){const{editingTarget:t,sprites:n,stage:a}=e,o=t&&n[t]?n[t]:a;o&&o.sounds&&(this.props.editingTarget!==t?this.setState({selectedSoundIndex:0}):this.state.selectedSoundIndex>o.sounds.length-1&&this.setState({selectedSoundIndex:Math.max(o.sounds.length-1,0)}))}handleSelectSound(e){this.setState({selectedSoundIndex:e})}handleDeleteSound(e){const t=this.props.vm.deleteSound(e);e>=this.state.selectedSoundIndex&&this.setState({selectedSoundIndex:Math.max(0,e-1)}),this.props.dispatchUpdateRestore({restoreFun:t,deletedItem:"Sound"})}handleExportSound(e){const t=this.props.vm.editingTarget.sprite.sounds[e],n=new Blob([t.asset.data],{type:t.asset.assetType.contentType});Object(Er.a)("".concat(t.name,".").concat(t.asset.dataFormat),n)}handleDuplicateSound(e){this.props.vm.duplicateSound(e).then(()=>{this.setState({selectedSoundIndex:e+1})})}handleNewSound(){if(!this.props.vm.editingTarget)return null;const e=this.props.vm.editingTarget.sprite,t=e.sounds?e.sounds:[];this.setState({selectedSoundIndex:Math.max(t.length-1,0)})}async handleSurpriseSound(){const e=await Ur(),t=e[Math.floor(Math.random()*e.length)],n={format:t.dataFormat,md5:t.md5ext,rate:t.rate,sampleCount:t.sampleCount,name:t.name};this.props.vm.addSound(n).then(()=>{this.handleNewSound()})}handleFileUploadClick(){this.fileInput.click()}handleSoundUpload(e){const t=this.props.vm.runtime.storage,n=this.props.vm.editingTarget.id;this.props.onShowImporting(),vr(e.target,(e,a,o,r,i)=>{!function e(t,n,a,o,r){let i;switch(n){case"audio/mp3":case"audio/mpeg":i=a.DataFormat.MP3;break;case"audio/wav":case"audio/wave":case"audio/x-wav":case"audio/x-pn-wav":i=a.DataFormat.WAV;break;default:return void wr(t).then(t=>{e(t,"audio/wav",a,o,r)}).catch(r)}const s=yr(a,a.AssetType.Sound,i,new Uint8Array(t));o(s)}(e,a,t,e=>{e.name=o,this.props.vm.addSound(e,n).then(()=>{this.handleNewSound(),r===i-1&&this.props.onCloseImporting()})},this.props.onCloseImporting)},this.props.onCloseImporting)}handleDrop(e){if(e.dragType===Ma.SOUND){const t=this.props.vm.editingTarget.sprite,n=t.sounds[this.state.selectedSoundIndex];this.props.vm.reorderSound(this.props.vm.editingTarget.id,e.index,e.newIndex),this.setState({selectedSoundIndex:t.sounds.indexOf(n)})}else e.dragType===Ma.BACKPACK_COSTUME?(this.props.onActivateCostumesTab(),this.props.vm.addCostume(e.payload.body,{name:e.payload.name})):e.dragType===Ma.BACKPACK_SOUND&&this.props.vm.addSound({md5:e.payload.body,name:e.payload.name}).then(this.handleNewSound)}setFileInput(e){this.fileInput=e}render(){const{dispatchUpdateRestore:e,intl:t,isRtl:n,vm:a,onNewSoundFromLibraryClick:r,onNewSoundFromRecordingClick:i}=this.props;if(!a.editingTarget)return null;const s=!(!a.runtime.audioEngine||!new gr),l=a.editingTarget.sprite,c=l.sounds?l.sounds.map(e=>({url:n?Ol.a:xl.a,name:e.name,details:(e.sampleCount/e.rate).toFixed(2),dragPayload:e})):[],d=Object(m.g)({fileUploadSound:{id:"gui.soundTab.fileUploadSound",defaultMessage:"Upload Sound"},surpriseSound:{id:"gui.soundTab.surpriseSound",defaultMessage:"Surprise"},recordSound:{id:"gui.soundTab.recordSound",defaultMessage:"Record"},addSound:{id:"gui.soundTab.addSoundFromLibrary",defaultMessage:"Choose a Sound"}});return o.a.createElement($o,{buttons:s?[{title:t.formatMessage(d.addSound),img:jl.a,onClick:r},{title:t.formatMessage(d.fileUploadSound),img:Pr.a,onClick:this.handleFileUploadClick,fileAccept:".wav, .mp3, .ogg, .flac, .aac, .m4a",fileChange:this.handleSoundUpload,fileInput:this.setFileInput,fileMultiple:!0},{title:t.formatMessage(d.surpriseSound),img:Dr.a,onClick:this.handleSurpriseSound},{title:t.formatMessage(d.recordSound),img:Pl.a,onClick:i},{title:t.formatMessage(d.addSound),img:Br.a,onClick:r}]:[],dragType:Ma.SOUND,isRtl:n,items:c,selectedItemIndex:this.state.selectedSoundIndex,onDeleteClick:this.handleDeleteSound,onDrop:this.handleDrop,onDuplicateClick:this.handleDuplicateSound,onExportClick:this.handleExportSound,onItemClick:this.handleSelectSound},l.sounds&&l.sounds[this.state.selectedSoundIndex]?s?o.a.createElement(Xd,{soundIndex:this.state.selectedSoundIndex}):o.a.createElement(du,null):null,this.props.soundRecorderVisible?o.a.createElement(Nc,{onNewSound:this.handleNewSound}):null,this.props.soundLibraryVisible?o.a.createElement(su,{vm:this.props.vm,onNewSound:this.handleNewSound,onRequestClose:this.props.onRequestCloseSoundLibrary}):null)}}uu.propTypes={dispatchUpdateRestore:i.a.func,editingTarget:i.a.string,intl:m.i,isRtl:i.a.bool,onActivateCostumesTab:i.a.func.isRequired,onCloseImporting:i.a.func.isRequired,onNewSoundFromLibraryClick:i.a.func.isRequired,onNewSoundFromRecordingClick:i.a.func.isRequired,onRequestCloseSoundLibrary:i.a.func.isRequired,onShowImporting:i.a.func.isRequired,soundLibraryVisible:i.a.bool,soundRecorderVisible:i.a.bool,sprites:i.a.shape({id:i.a.shape({sounds:i.a.arrayOf(i.a.shape({name:i.a.string.isRequired}))})}),stage:i.a.shape({sounds:i.a.arrayOf(i.a.shape({name:i.a.string.isRequired}))}),vm:i.a.instanceOf(p.a).isRequired};var pu=Object(h.a)("Sound Tab")(Object(m.h)(Object(l.b)(e=>({editingTarget:e.scratchGui.targets.editingTarget,isRtl:e.locales.isRtl,sprites:e.scratchGui.targets.sprites,stage:e.scratchGui.targets.stage,soundLibraryVisible:e.scratchGui.modals.soundLibrary,soundRecorderVisible:e.scratchGui.modals.soundRecorder}),e=>({onActivateCostumesTab:()=>e(Object(b.d)(b.b)),onNewSoundFromLibraryClick:t=>{t.preventDefault(),e(Object(f.A)())},onNewSoundFromRecordingClick:()=>{e(Object(f.B)())},onRequestCloseSoundLibrary:()=>{e(Object(f.j)())},dispatchUpdateRestore:t=>{e(Object(xr.c)(t))},onCloseImporting:()=>e(Object(se.c)("importingAsset")),onShowImporting:()=>e(Object(se.i)("importingAsset"))}))(uu))),mu=n(231),hu=n(78),gu=n(351),bu=n.n(gu),fu=n(455),wu=n.n(fu);const vu=["active","className","onClick","title"];function yu(){return(yu=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const ku=function(e){const{active:t,className:n,onClick:a,title:r}=e,i=_u(e,vu);return o.a.createElement("img",yu({className:qe()(n,wu.a.greenFlag,{[wu.a.isActive]:t}),draggable:!1,src:bu.a,title:r,onClick:a,onContextMenu:a},i))};ku.propTypes={active:i.a.bool,className:i.a.string,onClick:i.a.func.isRequired,title:i.a.string},ku.defaultProps={active:!1,title:"Go"};var Su=ku,Eu=n(831),xu=n.n(Eu),Cu=n(456),Ou=n.n(Cu);const Fu=["active","className","onClick","title"];function ju(){return(ju=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const Pu=function(e){const{active:t,className:n,onClick:a,title:r}=e,i=Mu(e,Fu);return o.a.createElement("img",ju({className:qe()(n,Ou.a.stopAll,{[Ou.a.isActive]:t}),draggable:!1,src:xu.a,title:r,onClick:a},i))};Pu.propTypes={active:i.a.bool,className:i.a.string,onClick:i.a.func.isRequired,title:i.a.string},Pu.defaultProps={active:!1,title:"Stop"};var Tu=Pu,Ru=n(832),Iu=n.n(Ru),Du=n(371),Au=n.n(Du);const Bu=({isSmall:e})=>o.a.createElement("div",{className:Au.a.turboContainer},o.a.createElement("img",{className:Au.a.turboIcon,src:Iu.a}),!e&&o.a.createElement("div",{className:Au.a.turboLabel},o.a.createElement(m.b,{defaultMessage:"Turbo Mode",id:"gui.turboMode.active"})));Bu.propTypes={isSmall:i.a.bool},Bu.defaultProps={isSmall:!1};var Nu=Bu,Lu=n(296),zu=n.n(Lu);const Uu=({framerate:e,interpolation:t})=>o.a.createElement(o.a.Fragment,null,30!==e&&0!==e&&o.a.createElement("div",{className:zu.a.framerateContainer},o.a.createElement("div",{className:zu.a.framerateLabel},o.a.createElement(m.b,{defaultMessage:"{framerate} FPS",id:"tw.fps",values:{framerate:e}}))),t&&o.a.createElement("div",{className:zu.a.framerateContainer},o.a.createElement("div",{className:zu.a.framerateLabel},o.a.createElement(m.b,{defaultMessage:"Interpolation",id:"tw.interpolationEnabled"}))));Uu.propTypes={framerate:i.a.number,interpolation:i.a.bool};var qu=Uu,Wu=n(833),Hu=n.n(Wu);const Gu=["active","className","intl","onGreenFlagClick","onStopAllClick","turbo","framerate","interpolation","isSmall"];function Vu(){return(Vu=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const Xu=Object(m.g)({goTitle:{id:"gui.controls.go",defaultMessage:"Go"},stopTitle:{id:"gui.controls.stop",defaultMessage:"Stop"}}),Qu=function(e){const{active:t,className:n,intl:a,onGreenFlagClick:r,onStopAllClick:i,turbo:s,framerate:l,interpolation:c,isSmall:d}=e,u=Ku(e,Gu);return o.a.createElement("div",Vu({className:qe()(Hu.a.controlsContainer,n)},u),o.a.createElement(Su,{active:t,title:a.formatMessage(Xu.goTitle),onClick:r}),o.a.createElement(Tu,{active:t,title:a.formatMessage(Xu.stopTitle),onClick:i}),s?o.a.createElement(Nu,{isSmall:d}):null,!d&&o.a.createElement(qu,{framerate:l,interpolation:c}))};Qu.propTypes={active:i.a.bool,className:i.a.string,intl:m.i.isRequired,onGreenFlagClick:i.a.func.isRequired,onStopAllClick:i.a.func.isRequired,framerate:i.a.number,interpolation:i.a.bool,isSmall:i.a.bool,turbo:i.a.bool},Qu.defaultProps={active:!1,turbo:!1,isSmall:!1};var Yu=Object(m.h)(Qu);const Ju=["vm","isStarted","projectRunning","turbo"];function Zu(){return(Zu=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class ep extends o.a.Component{constructor(e){super(e),F()(this,["handleGreenFlagClick","handleStopAllClick"])}handleGreenFlagClick(e){e.preventDefault(),e.shiftKey||e.altKey||"contextmenu"===e.type?(e.shiftKey&&this.props.vm.setTurboMode(!this.props.turbo),(e.altKey||"contextmenu"===e.type)&&(30===this.props.framerate?this.props.vm.setFramerate(60):this.props.vm.setFramerate(30))):(this.props.isStarted||this.props.vm.start(),this.props.vm.greenFlag())}handleStopAllClick(e){e.preventDefault(),this.props.vm.stopAll()}render(){const e=this.props,{vm:t,isStarted:n,projectRunning:a,turbo:r}=e,i=$u(e,Ju);return o.a.createElement(Yu,Zu({},i,{active:a&&n,turbo:r,onGreenFlagClick:this.handleGreenFlagClick,onStopAllClick:this.handleStopAllClick}))}}ep.propTypes={isStarted:i.a.bool.isRequired,projectRunning:i.a.bool.isRequired,turbo:i.a.bool.isRequired,framerate:i.a.number.isRequired,interpolation:i.a.bool.isRequired,isSmall:i.a.bool,vm:i.a.instanceOf(p.a)};var tp=Object(l.b)(e=>({isStarted:e.scratchGui.vmStatus.started,projectRunning:e.scratchGui.vmStatus.running,framerate:e.scratchGui.tw.framerate,interpolation:e.scratchGui.tw.interpolation,turbo:e.scratchGui.vmStatus.turbo}),()=>({}))(ep);const np="undefined"!=typeof URLSearchParams&&new URLSearchParams(location.search).get("scale"),ap=12,op=44,rp=(e,t,n)=>{const a={heightDefault:t.height,widthDefault:t.width,height:0,width:0,scale:0};if(n){a.height=window.innerHeight-op-ap,a.width=a.height*(t.width/t.height);const e=np?Math.min(window.innerWidth,np*t.width):window.innerWidth;a.width>e&&(a.width=e,a.height=a.width*(t.height/t.width)),a.scale=a.width/a.widthDefault}else a.scale=Oa.b[e],a.height=a.scale*a.heightDefault,a.width=a.scale*a.widthDefault;return a.height=Math.round(a.height),a.width=Math.round(a.width),a},ip=({width:e,height:t,widthDefault:n,heightDefault:a})=>{const o=e/n,r=t/a;if(1!==o||1!==r)return{transform:"scale(".concat(o,",").concat(r,")")}};var sp=n(457),lp=n.n(sp),cp=n(834),dp=n.n(cp),up=n(835),pp=n.n(up),mp=n(836),hp=n.n(mp),gp=n(837),bp=n.n(gp),fp=n(54),wp=n.n(fp),vp=n(179);const yp=Object(m.g)({largeStageSizeMessage:{id:"gui.stageHeader.stageSizeLarge",defaultMessage:"Switch to large stage"},smallStageSizeMessage:{id:"gui.stageHeader.stageSizeSmall",defaultMessage:"Switch to small stage"},fullStageSizeMessage:{id:"gui.stageHeader.stageSizeFull",defaultMessage:"Enter full screen mode"},unFullStageSizeMessage:{id:"gui.stageHeader.stageSizeUnFull",defaultMessage:"Exit full screen mode"},fullscreenControl:{id:"gui.stageHeader.fullscreenControl",defaultMessage:"Full Screen Control"},openSettingsMessage:{id:"tw.openAdvanced",defaultMessage:"Open advanced settings"}}),_p=new URLSearchParams(location.search).has("settings-button"),kp=function(e){const{customStageSize:t,isFullScreen:n,isPlayerOnly:a,onKeyPress:r,onSetStageLarge:i,onSetStageSmall:s,onSetStageFull:l,onSetStageUnFull:c,onOpenSettings:d,isEmbedded:u,stageSizeMode:p,vm:m}=e;let h=null;if(n||u){const a=rp(null,t,!0),i=u&&_p?o.a.createElement(ot.a,{className:wp.a.stageButton,onClick:d},o.a.createElement("img",{alt:e.intl.formatMessage(yp.openSettingsMessage),className:wp.a.stageButtonIcon,draggable:!1,src:bp.a,title:e.intl.formatMessage(yp.openSettingsMessage)})):null,s=n?o.a.createElement(ot.a,{className:wp.a.stageButton,onClick:c,onKeyPress:r},o.a.createElement("img",{alt:e.intl.formatMessage(yp.unFullStageSizeMessage),className:wp.a.stageButtonIcon,draggable:!1,src:hp.a,title:e.intl.formatMessage(yp.fullscreenControl)})):vp.a.available()?o.a.createElement(ot.a,{className:wp.a.stageButton,onClick:l},o.a.createElement("img",{alt:e.intl.formatMessage(yp.fullStageSizeMessage),className:wp.a.stageButtonIcon,draggable:!1,src:lp.a,title:e.intl.formatMessage(yp.fullscreenControl)})):null;h=o.a.createElement(at.a,{className:qe()(wp.a.stageHeaderWrapperOverlay,{[wp.a.embedded]:u})},o.a.createElement(at.a,{className:wp.a.stageMenuWrapper,style:{width:a.width}},o.a.createElement(tp,{vm:m}),o.a.createElement("div",{className:wp.a.embedButtons},i,s)))}else{const t=a?[]:o.a.createElement("div",{className:wp.a.stageSizeToggleGroup},o.a.createElement("div",null,o.a.createElement(ot.a,{className:qe()(wp.a.stageButton,wp.a.stageButtonFirst,p===Oa.d.small?null:wp.a.stageButtonToggledOff),onClick:s},o.a.createElement("img",{alt:e.intl.formatMessage(yp.smallStageSizeMessage),className:wp.a.stageButtonIcon,draggable:!1,src:pp.a}))),o.a.createElement("div",null,o.a.createElement(ot.a,{className:qe()(wp.a.stageButton,wp.a.stageButtonLast,p===Oa.d.large?null:wp.a.stageButtonToggledOff),onClick:i},o.a.createElement("img",{alt:e.intl.formatMessage(yp.largeStageSizeMessage),className:wp.a.stageButtonIcon,draggable:!1,src:dp.a}))));h=o.a.createElement(at.a,{className:wp.a.stageHeaderWrapper},o.a.createElement(at.a,{className:wp.a.stageMenuWrapper},o.a.createElement(tp,{vm:m,isSmall:p===Oa.d.small}),o.a.createElement("div",{className:wp.a.stageSizeRow},t,o.a.createElement("div",null,o.a.createElement(ot.a,{className:wp.a.stageButton,onClick:l},o.a.createElement("img",{alt:e.intl.formatMessage(yp.fullStageSizeMessage),className:wp.a.stageButtonIcon,draggable:!1,src:lp.a,title:e.intl.formatMessage(yp.fullscreenControl)}))))))}return h};kp.propTypes={intl:m.i,customStageSize:i.a.shape({width:i.a.number,height:i.a.number}),isFullScreen:i.a.bool.isRequired,isPlayerOnly:i.a.bool.isRequired,onKeyPress:i.a.func.isRequired,onSetStageFull:i.a.func.isRequired,onSetStageLarge:i.a.func.isRequired,onSetStageSmall:i.a.func.isRequired,onSetStageUnFull:i.a.func.isRequired,onOpenSettings:i.a.func.isRequired,isEmbedded:i.a.bool.isRequired,stageSizeMode:i.a.oneOf(Object.keys(Oa.d)),vm:i.a.instanceOf(p.a).isRequired},kp.defaultProps={stageSizeMode:Oa.d.large};var Sp=Object(m.h)(Object(l.b)(e=>({customStageSize:e.scratchGui.customStageSize,stageSizeMode:e.scratchGui.stageSize.stageSize}))(kp));function Ep(){return(Ep=Object.assign||function(e){for(var t=1;t({stageSizeMode:e.scratchGui.stageSize.stageSize,isEmbedded:e.scratchGui.mode.isEmbedded,isFullScreen:e.scratchGui.mode.isFullScreen,isWindowFullScreen:e.scratchGui.tw.isWindowFullScreen,dimensions:e.scratchGui.tw.dimensions,isPlayerOnly:e.scratchGui.mode.isPlayerOnly}),e=>({onSetStageLarge:()=>e(Object(mu.b)(Oa.d.large)),onSetStageSmall:()=>e(Object(mu.b)(Oa.d.small)),onSetStageFull:()=>e(Object(hu.c)(!0)),onSetStageUnFull:()=>e(Object(hu.c)(!1)),onOpenSettings:()=>e(Object(f.z)())}))(xp);const Op=[];class Fp{constructor(){this.mirror=!0,this._frameCacheTimeout=16,this._video=null,this._track=null,this._workspace=[]}static get FORMAT_IMAGE_DATA(){return"image-data"}static get FORMAT_CANVAS(){return"canvas"}static get DIMENSIONS(){return[480,360]}static get ORDER(){return 1}get video(){return this._video}enableVideo(){return this.enabled=!0,this._setupVideo()}disableVideo(){this.enabled=!1,this._singleSetup&&this._singleSetup.then(this._teardown.bind(this)).catch(e=>this.onError(e))}_teardown(){if(!1===this.enabled){const e=(Op.pop(),!(Op.length>0));this._singleSetup=null,this._video=null,this._track&&e&&this._track.stop(),this._track=null}}getFrame({dimensions:e=Fp.DIMENSIONS,mirror:t=this.mirror,format:n=Fp.FORMAT_IMAGE_DATA,cacheTimeout:a=this._frameCacheTimeout}){if(!this.videoReady)return null;const[o,r]=e,i=this._getWorkspace({dimensions:e,mirror:Boolean(t)}),{videoWidth:s,videoHeight:l}=this._video,{canvas:c,context:d,lastUpdate:u,cacheData:p}=i,m=Date.now();u+a{let t;return 0===Op.length?(t=Jl()({audio:!1,video:e}),Op.push(t)):Op.length>0&&(t=Op[0],Op.push(!0)),t})({width:{min:480,ideal:640},height:{min:360,ideal:480}}).then(e=>{this._video=document.createElement("video");try{this._video.srcObject=e}catch(t){this._video.src=window.URL.createObjectURL(e)}return this._video.play(),this._track=e.getTracks()[0],this}).catch(e=>{this._singleSetup=null,this.onError(e)})),this._singleSetup}get videoReady(){if(!this.enabled)return!1;if(!this._video)return!1;if(!this._track)return!1;const{videoWidth:e,videoHeight:t}=this._video;return"number"==typeof e&&"number"==typeof t&&(0!==e&&0!==t)}_getWorkspace({dimensions:e,mirror:t}){let n=this._workspace.find(n=>n.dimensions.join("-")===e.join("-")&&n.mirror===t);return n||(n={dimensions:e,mirror:t,canvas:document.createElement("canvas"),lastUpdate:0,cacheData:{}},n.canvas.width=e[0],n.canvas.height=e[1],n.context=n.canvas.getContext("2d"),this._workspace.push(n)),n}}var jp=Fp,Mp=n(143),Pp=n(838),Tp=n.n(Pp);const Rp=["colorInfo"];function Ip(){return(Ip=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class Ap extends o.a.Component{constructor(e){super(e),F()(this,["setCanvas"])}componentDidUpdate(){this.draw()}draw(){const e=this.canvas.getContext("2d"),{color:t,data:n,width:a,height:o}=this.props.colorInfo;this.canvas.width=3*a,this.canvas.height=3*o;const r=document.createElement("canvas");r.width=a,r.height=o;const i=r.getContext("2d"),s=i.createImageData(a,o);s.data.set(n),i.putImageData(s,0,0),e.save(),e.scale(3,3),e.drawImage(r,0,0,a,o),e.lineWidth=1/3,e.strokeStyle="black",e.fillStyle="rgba(".concat(t.r,", ").concat(t.g,", ").concat(t.b,", ").concat(t.a,")"),e.beginPath(),e.rect(a/2-1,o/2-1,2,2),e.fill(),e.stroke(),e.strokeStyle="rgba(".concat(t.r,", ").concat(t.g,", ").concat(t.b,", ").concat(t.a,")"),e.lineWidth=5,e.beginPath(),e.moveTo(a,o/2),e.arc(a/2,o/2,a/2,0,2*Math.PI),e.stroke(),e.restore()}setCanvas(e){this.canvas=e}render(){const e=this.props,{colorInfo:t}=e,n=Dp(e,Rp),a=t.x-3*t.width/2,r=t.y-3*t.height/2;return o.a.createElement(at.a,Ip({},n,{className:Tp.a.colorPicker,componentRef:this.setCanvas,element:"canvas",height:t.height,style:{transform:"translate(".concat(a,"px, ").concat(r,"px)"),width:3*t.width,height:3*t.height},width:t.width}))}}Ap.propTypes={colorInfo:i.a.shape({color:i.a.shape({r:i.a.number,g:i.a.number,b:i.a.number,a:i.a.number}),data:i.a.instanceOf(Uint8Array),width:i.a.number,height:i.a.number,x:i.a.number,y:i.a.number})};var Bp=Ap,Np=n(127);const Lp=Object(m.g)({motion_direction:{id:"gui.opcodeLabels.direction",defaultMessage:"direction"},motion_xposition:{id:"gui.opcodeLabels.xposition",defaultMessage:"x position"},motion_yposition:{id:"gui.opcodeLabels.yposition",defaultMessage:"y position"},looks_size:{id:"gui.opcodeLabels.size",defaultMessage:"size"},looks_costumename:{id:"gui.opcodeLabels.costumename",defaultMessage:"costume name"},looks_costumenumber:{id:"gui.opcodeLabels.costumenumber",defaultMessage:"costume number"},looks_backdropname:{id:"gui.opcodeLabels.backdropname",defaultMessage:"backdrop name"},looks_backdropnumber:{id:"gui.opcodeLabels.backdropnumber",defaultMessage:"backdrop number"},sound_volume:{id:"gui.opcodeLabels.volume",defaultMessage:"volume"},sound_tempo:{id:"gui.opcodeLabels.tempo",defaultMessage:"tempo"},sensing_answer:{id:"gui.opcodeLabels.answer",defaultMessage:"answer"},sensing_mousedown:{id:"tw.opcode.mousedown",defaultMessage:"mouse down?"},sensing_mousex:{id:"tw.opcode.mousex",defaultMessage:"mouse x"},sensing_mousey:{id:"tw.opcode.mousey",defaultMessage:"mouse y"},sensing_loudness:{id:"gui.opcodeLabels.loudness",defaultMessage:"loudness"},sensing_username:{id:"gui.opcodeLabels.username",defaultMessage:"username"},sensing_current_year:{id:"gui.opcodeLabels.year",defaultMessage:"year"},sensing_current_month:{id:"gui.opcodeLabels.month",defaultMessage:"month"},sensing_current_date:{id:"gui.opcodeLabels.date",defaultMessage:"date"},sensing_current_dayofweek:{id:"gui.opcodeLabels.dayofweek",defaultMessage:"day of week"},sensing_current_hour:{id:"gui.opcodeLabels.hour",defaultMessage:"hour"},sensing_current_minute:{id:"gui.opcodeLabels.minute",defaultMessage:"minute"},sensing_current_second:{id:"gui.opcodeLabels.second",defaultMessage:"second"},sensing_timer:{id:"gui.opcodeLabels.timer",defaultMessage:"timer"},sensing_dayssince2000:{id:"tw.opcode.2000",defaultMessage:"days since 2000"}});var zp=new class{constructor(){this._translator=e=>e.defaultMessage,this._opcodeMap={motion_direction:{category:"motion"},motion_xposition:{category:"motion"},motion_yposition:{category:"motion"},looks_size:{category:"looks"},looks_costumenumbername:{category:"looks"},looks_backdropnumbername:{category:"looks"},looks_backdropname:{category:"looks"},data_variable:{category:"data"},data_listcontents:{category:"list"},sound_volume:{category:"sound"},sound_tempo:{category:"sound"},sensing_answer:{category:"sensing"},sensing_mousedown:{category:"sensing"},sensing_mousex:{category:"sensing"},sensing_mousey:{category:"sensing"},sensing_loudness:{category:"sensing"},sensing_username:{category:"sensing"},sensing_current:{category:"sensing"},sensing_timer:{category:"sensing"},sensing_dayssince2000:{category:"sensing"}},this._refreshOpcodeMap()}setTranslatorFunction(e){this._translator=e,this._refreshOpcodeMap()}_refreshOpcodeMap(){this._opcodeMap.motion_direction.labelFn=()=>this._translator(Lp.motion_direction),this._opcodeMap.motion_xposition.labelFn=()=>this._translator(Lp.motion_xposition),this._opcodeMap.motion_yposition.labelFn=()=>this._translator(Lp.motion_yposition),this._opcodeMap.looks_size.labelFn=()=>this._translator(Lp.looks_size),this._opcodeMap.looks_costumenumbername.labelFn=e=>"number"===e.NUMBER_NAME?this._translator(Lp.looks_costumenumber):this._translator(Lp.looks_costumename),this._opcodeMap.looks_backdropnumbername.labelFn=e=>"number"===e.NUMBER_NAME?this._translator(Lp.looks_backdropnumber):this._translator(Lp.looks_backdropname),this._opcodeMap.looks_backdropname.labelFn=()=>this._translator(Lp.looks_backdropname),this._opcodeMap.data_variable.labelFn=e=>e.VARIABLE,this._opcodeMap.data_listcontents.labelFn=e=>e.LIST,this._opcodeMap.sound_volume.labelFn=()=>this._translator(Lp.sound_volume),this._opcodeMap.sound_tempo.labelFn=()=>this._translator(Lp.sound_tempo),this._opcodeMap.sensing_answer.labelFn=()=>this._translator(Lp.sensing_answer),this._opcodeMap.sensing_mousedown.labelFn=()=>this._translator(Lp.sensing_mousedown),this._opcodeMap.sensing_mousex.labelFn=()=>this._translator(Lp.sensing_mousex),this._opcodeMap.sensing_mousey.labelFn=()=>this._translator(Lp.sensing_mousey),this._opcodeMap.sensing_loudness.labelFn=()=>this._translator(Lp.sensing_loudness),this._opcodeMap.sensing_username.labelFn=()=>this._translator(Lp.sensing_username),this._opcodeMap.sensing_current.labelFn=e=>{switch(e.CURRENTMENU.toLowerCase()){case"year":return this._translator(Lp.sensing_current_year);case"month":return this._translator(Lp.sensing_current_month);case"date":return this._translator(Lp.sensing_current_date);case"dayofweek":return this._translator(Lp.sensing_current_dayofweek);case"hour":return this._translator(Lp.sensing_current_hour);case"minute":return this._translator(Lp.sensing_current_minute);case"second":return this._translator(Lp.sensing_current_second)}},this._opcodeMap.sensing_timer.labelFn=()=>this._translator(Lp.sensing_timer),this._opcodeMap.sensing_dayssince2000.labelFn=()=>this._translator(Lp.sensing_dayssince2000)}getLabel(e){return e in this._opcodeMap?this._opcodeMap[e]:{category:"extension",label:e}}};var Up=n(48),qp=n.n(Up),Wp=n(352),Hp=n.n(Wp),Gp=n(35),Vp=n.n(Gp);const Kp=({categoryColor:e,label:t,value:n})=>o.a.createElement("div",{className:Vp.a.defaultMonitor},o.a.createElement("div",{className:Vp.a.row},o.a.createElement("div",{className:Vp.a.label},t),o.a.createElement("div",{className:Vp.a.value,style:{background:e}},n)));Kp.propTypes={categoryColor:i.a.string.isRequired,label:i.a.string.isRequired,value:i.a.oneOfType([i.a.string,i.a.number])};var Xp=Kp;const Qp=({categoryColor:e,value:t})=>o.a.createElement("div",{className:Vp.a.largeMonitor},o.a.createElement("div",{className:Vp.a.largeValue,style:{background:e}},t));Qp.propTypes={categoryColor:i.a.string,value:i.a.oneOfType([i.a.string,i.a.number])};var Yp=Qp;const Jp=(e,t,n)=>(t?e.runtime.getTargetById(t):e.runtime.getTargetForStage()).variables[n],Zp=(e,t,n)=>{const a=Jp(e,t,n);return a.value instanceof Array?a.value.slice():a.value},$p=(e,t,n,a)=>{const o=Jp(e,t,n);o.value=a,o.isCloud&&e.runtime.ioDevices.cloud.requestUpdateVariable(o.name,o.value)},em=({categoryColor:e,isDiscrete:t,label:n,min:a,max:r,value:i,onSliderUpdate:s})=>o.a.createElement("div",{className:Vp.a.defaultMonitor},o.a.createElement("div",{className:Vp.a.row},o.a.createElement("div",{className:Vp.a.label},n),o.a.createElement("div",{className:Vp.a.value,style:{background:e}},i)),o.a.createElement("div",{className:Vp.a.row},o.a.createElement("input",{className:qe()(Vp.a.slider,"no-drag"),max:r,min:a,step:t?1:.01,type:"range",value:i,onChange:s})));em.propTypes={categoryColor:i.a.string.isRequired,isDiscrete:i.a.bool,label:i.a.string.isRequired,max:i.a.number,min:i.a.number,onSliderUpdate:i.a.func.isRequired,value:i.a.oneOfType([i.a.string,i.a.number])},em.defaultProps={isDiscrete:!0,min:0,max:100};var tm=em;const nm=["vm","value"];function am(){return(am=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class rm extends o.a.Component{constructor(e){super(e),F()(this,["handleSliderUpdate"]),this.state={value:e.value}}componentWillReceiveProps(e){this.state.value!==e.value&&this.setState({value:e.value})}handleSliderUpdate(e){this.setState({value:Number(e.target.value)});const{vm:t,targetId:n,id:a}=this.props;$p(t,n,a,Number(e.target.value))}render(){const e=this.props,{vm:t,value:n}=e,a=om(e,nm);return o.a.createElement(tm,am({},a,{value:this.state.value,onSliderUpdate:this.handleSliderUpdate}))}}rm.propTypes={id:i.a.string,targetId:i.a.string,value:i.a.oneOfType([i.a.number,i.a.string]),vm:i.a.instanceOf(p.a)};var im=Object(l.b)(e=>({vm:e.scratchGui.vm}))(rm),sm=n(885);class lm extends o.a.Component{constructor(e){super(e),F()(this,["rowRenderer","noRowsRenderer","handleEventFactory"])}handleEventFactory(e){return()=>this.props.onActivate(e)}noRowsRenderer(){return o.a.createElement("div",{className:qe()(Vp.a.listRow,Vp.a.listEmpty)},o.a.createElement(m.b,{defaultMessage:"(empty)",id:"gui.monitor.listMonitor.empty"}))}rowRenderer({index:e,key:t,style:n}){return o.a.createElement("div",{className:Vp.a.listRow,key:t,style:n},o.a.createElement("div",{className:Vp.a.listIndex},e+1),o.a.createElement("div",{className:Vp.a.listValue,dataIndex:e,style:{background:this.props.categoryColor},onClick:this.props.draggable?this.handleEventFactory(e):null},this.props.draggable&&this.props.activeIndex===e?o.a.createElement("div",{className:Vp.a.inputWrapper},o.a.createElement("input",{autoFocus:!0,autoComplete:!1,className:qe()(Vp.a.listInput,"no-drag"),spellCheck:!1,type:"text",value:this.props.activeValue,onBlur:this.props.onDeactivate,onChange:this.props.onInput,onFocus:this.props.onFocus,onKeyDown:this.props.onKeyPress}),o.a.createElement("div",{className:Vp.a.removeButton,onMouseDown:this.props.onRemove},"✖︎")):o.a.createElement("div",{className:Vp.a.valueInner},this.props.values[e])))}render(){const{height:e,values:t,width:n,activeIndex:a,activeValue:r}=this.props,i=null===a?void 0:a;return o.a.createElement(sm.a,{activeIndex:a,activeValue:r,height:e-42,noRowsRenderer:this.noRowsRenderer,rowCount:t.length,rowHeight:24,rowRenderer:this.rowRenderer,scrollToIndex:i,values:t,width:n})}}lm.propTypes={activeIndex:i.a.number,activeValue:i.a.string,categoryColor:i.a.string,draggable:i.a.bool,height:i.a.number,onActivate:i.a.func,onDeactivate:i.a.func,onFocus:i.a.func,onInput:i.a.func,onKeyPress:i.a.func,onRemove:i.a.func,values:i.a.arrayOf(i.a.oneOfType([i.a.string,i.a.number])),width:i.a.number};var cm=lm;const dm=["draggable","label","width","height","value","onResizeMouseDown","onAdd"];function um(){return(um=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const mm=e=>{let{draggable:t,label:n,width:a,height:r,value:i,onResizeMouseDown:s,onAdd:l}=e,c=pm(e,dm);return o.a.createElement("div",{className:Vp.a.listMonitor,style:{width:"".concat(a,"px"),height:"".concat(r,"px")}},o.a.createElement("div",{className:Vp.a.listHeader},n),o.a.createElement("div",{className:Vp.a.listBody},o.a.createElement(cm,um({draggable:t,height:r,values:i,width:a},c))),o.a.createElement("div",{className:Vp.a.listFooter},o.a.createElement("div",{className:qe()(t?Vp.a.addButton:null,"no-drag"),onClick:t?l:null},"+"),o.a.createElement("div",{className:Vp.a.footerLength},o.a.createElement(m.b,{defaultMessage:"length {length}",id:"gui.monitor.listMonitor.listLength",values:{length:i.length}})),o.a.createElement("div",{className:qe()(t?Vp.a.resizeHandle:null,"no-drag"),onMouseDown:t?s:null},"=")))};mm.propTypes={activeIndex:i.a.number,categoryColor:i.a.string.isRequired,draggable:i.a.bool.isRequired,height:i.a.number,label:i.a.string.isRequired,onActivate:i.a.func,onAdd:i.a.func,onResizeMouseDown:i.a.func,value:i.a.oneOfType([i.a.string,i.a.number,i.a.arrayOf(i.a.oneOfType([i.a.string,i.a.number]))]),width:i.a.number},mm.defaultProps={width:110,height:200};var hm=mm,gm=n(64);const bm=["vm"];function fm(){return(fm=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class vm extends o.a.Component{constructor(e){super(e),F()(this,["handleActivate","handleDeactivate","handleInput","handleRemove","handleKeyPress","handleFocus","handleAdd","handleResizeMouseDown"]),this.state={activeIndex:null,activeValue:null,width:e.width||100,height:e.height||200}}handleActivate(e){this.state.activeIndex!==e&&this.setState({activeIndex:e,activeValue:this.props.value[e]})}handleDeactivate(){if(null!==this.state.activeIndex){const{vm:e,targetId:t,id:n}=this.props,a=Zp(e,t,n);a[this.state.activeIndex]=this.state.activeValue,$p(e,t,n,a),this.setState({activeIndex:null,activeValue:null})}}handleFocus(e){e.target.select()}handleKeyPress(e){const t=this.state.activeIndex,{vm:n,targetId:a,id:o}=this.props;let r=0;if("Tab"===e.key?r=e.shiftKey?-1:1:"ArrowUp"===e.key?r=-1:"ArrowDown"===e.key&&(r=1),r){this.handleDeactivate();const n=this.wrapListIndex(t+r,this.props.value.length);this.setState({activeIndex:n,activeValue:this.props.value[n]}),e.preventDefault()}else if("Enter"===e.key){this.handleDeactivate();const r="",i=e.shiftKey?0:1,s=Zp(n,a,o),l=s.slice(0,t+i).concat([r]).concat(s.slice(t+i));$p(n,a,o,l);const c=this.wrapListIndex(t+i,l.length);this.setState({activeIndex:c,activeValue:r})}}handleInput(e){this.setState({activeValue:e.target.value})}handleRemove(e){e.preventDefault(),e.stopPropagation();const{vm:t,targetId:n,id:a}=this.props,o=Zp(t,n,a),r=o.slice(0,this.state.activeIndex).concat(o.slice(this.state.activeIndex+1));$p(t,n,a,r);const i=Math.min(r.length-1,this.state.activeIndex);this.setState({activeIndex:i,activeValue:r[i]})}handleAdd(){const{vm:e,targetId:t,id:n}=this.props,a=Zp(e,t,n).concat([""]);$p(e,t,n,a),this.setState({activeIndex:a.length-1,activeValue:""})}handleResizeMouseDown(e){this.initialPosition=ro(e),this.initialWidth=this.state.width,this.initialHeight=this.state.height;const t=e=>{const t=ro(e),n=t.x-this.initialPosition.x,a=t.y-this.initialPosition.y;this.setState({width:Math.max(Math.min(this.initialWidth+n,this.props.customStageSize.width),100),height:Math.max(Math.min(this.initialHeight+a,this.props.customStageSize.height),60)})},n=e=>{t(e),window.removeEventListener("mousemove",t),window.removeEventListener("mouseup",n),this.props.vm.runtime.requestUpdateMonitor(Object(gm.Map)({id:this.props.id,height:this.state.height,width:this.state.width}))};window.addEventListener("mousemove",t),window.addEventListener("mouseup",n)}wrapListIndex(e,t){return(e+t)%t}render(){const e=this.props,{vm:t}=e,n=wm(e,bm);return o.a.createElement(hm,fm({},n,{activeIndex:this.state.activeIndex,activeValue:this.state.activeValue,height:this.state.height,width:this.state.width,onActivate:this.handleActivate,onAdd:this.handleAdd,onDeactivate:this.handleDeactivate,onFocus:this.handleFocus,onInput:this.handleInput,onKeyPress:this.handleKeyPress,onRemove:this.handleRemove,onResizeMouseDown:this.handleResizeMouseDown}))}}vm.propTypes={height:i.a.number,id:i.a.string,customStageSize:i.a.shape({width:i.a.number,height:i.a.number}),targetId:i.a.string,value:i.a.oneOfType([i.a.number,i.a.string]),vm:i.a.instanceOf(p.a),width:i.a.number,x:i.a.number,y:i.a.number};var ym=Object(l.b)(e=>({customStageSize:e.scratchGui.customStageSize,vm:e.scratchGui.vm}))(vm);function _m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function km(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Sm={data:"#FF8C1A",sensing:"#5CB1D6",sound:"#CF63CF",looks:"#9966FF",motion:"#4C97FF",list:"#FC662C",extension:"#0FBD8C"},Em={default:Xp,large:Yp,slider:im,list:ym},xm=e=>o.a.createElement(fo.b,{disable:!e.draggable&&!e.onExport,holdToDisplay:"slider"===e.mode?-1:1e3,id:"monitor-".concat(e.label)},o.a.createElement(Hp.a,{bounds:".monitor-overlay",cancel:".no-drag",defaultClassNameDragging:Vp.a.dragging,disabled:!e.draggable,onStop:e.onDragEnd},o.a.createElement(at.a,{className:Vp.a.monitorContainer,componentRef:e.componentRef,onDoubleClick:"list"!==e.mode&&e.draggable?e.onNextMode:null,"data-id":e.id,"data-opcode":e.opcode},o.a.createElement(Em[e.mode],function(e){for(var t=1;to.a.createElement(St,{className:Mm.a.modalContent,contentLabel:e.intl.formatMessage(Pm.title),id:"sliderPrompt",onRequestClose:e.onCancel},o.a.createElement(at.a,{className:Mm.a.body},o.a.createElement(at.a,{className:Mm.a.label},e.intl.formatMessage(Pm.minValue)),o.a.createElement(at.a,null,o.a.createElement("input",{className:Mm.a.minInput,name:e.intl.formatMessage(Pm.minValue),pattern:"-?[0-9]*(\\.[0-9]+)?",type:"text",value:e.minValue,onChange:e.onChangeMin,onKeyPress:e.onKeyPress})),o.a.createElement(at.a,{className:Mm.a.label},e.intl.formatMessage(Pm.maxValue)),o.a.createElement(at.a,null,o.a.createElement("input",{className:Mm.a.maxInput,name:e.intl.formatMessage(Pm.maxValue),pattern:"-?[0-9]*(\\.[0-9]+)?",type:"text",value:e.maxValue,onChange:e.onChangeMax,onKeyPress:e.onKeyPress})),o.a.createElement(at.a,{className:Mm.a.buttonRow},o.a.createElement("button",{className:Mm.a.cancelButton,onClick:e.onCancel},o.a.createElement(m.b,{defaultMessage:"Cancel",id:"gui.sliderPrompt.cancel"})),o.a.createElement("button",{className:Mm.a.okButton,onClick:e.onOk},o.a.createElement(m.b,{defaultMessage:"OK",id:"gui.sliderPrompt.ok"})))));Tm.propTypes={intl:m.i,maxValue:i.a.string,minValue:i.a.string,onCancel:i.a.func.isRequired,onChangeMax:i.a.func.isRequired,onChangeMin:i.a.func.isRequired,onKeyPress:i.a.func.isRequired,onOk:i.a.func.isRequired};var Rm=Object(m.h)(Tm);class Im extends o.a.Component{constructor(e){super(e),F()(this,["handleOk","handleCancel","handleChangeMin","handleChangeMax","handleKeyPress","validates","shouldBeDiscrete"]);const{isDiscrete:t,minValue:n,maxValue:a}=this.props;this.state={minValue:t?n.toFixed(0):n.toFixed(2),maxValue:t?a.toFixed(0):a.toFixed(2)}}handleKeyPress(e){"Enter"===e.key&&this.handleOk()}handleOk(){const{minValue:e,maxValue:t}=this.state;this.validates(e,t)?this.props.onOk(parseFloat(e),parseFloat(t),this.shouldBeDiscrete(e,t)):this.props.onCancel()}handleCancel(){this.props.onCancel()}handleChangeMin(e){this.setState({minValue:e.target.value})}handleChangeMax(e){this.setState({maxValue:e.target.value})}shouldBeDiscrete(e,t){return e.indexOf(".")+t.indexOf(".")===-2}validates(e,t){return isFinite(e)&&isFinite(t)}render(){return o.a.createElement(Rm,{maxValue:this.state.maxValue,minValue:this.state.minValue,onCancel:this.handleCancel,onChangeMax:this.handleChangeMax,onChangeMin:this.handleChangeMin,onKeyPress:this.handleKeyPress,onOk:this.handleOk})}}Im.propTypes={isDiscrete:i.a.bool,maxValue:i.a.number,minValue:i.a.number,onCancel:i.a.func.isRequired,onOk:i.a.func.isRequired},Im.defaultProps={maxValue:100,minValue:0,isDiscrete:!0};var Dm=Im;function Am(){return(Am=Object.assign||function(e){for(var t=1;tCm.filter(t=>"data_variable"===e?"list"!==t:"data_listcontents"===e?"list"===t:"slider"!==t&&"list"!==t),Nm=Object(m.g)({columnPrompt:{id:"gui.monitors.importListColumnPrompt",defaultMessage:"Which column should be used (1-{numberOfColumns})?"}});class Lm extends o.a.Component{constructor(e){super(e),F()(this,["handleDragEnd","handleHide","handleNextMode","handleSetModeToDefault","handleSetModeToLarge","handleSetModeToSlider","handleSliderPromptClose","handleSliderPromptOk","handleSliderPromptOpen","handleImport","handleExport","setElement"]),this.state={sliderPrompt:!1}}componentDidMount(){let e;const t=e=>"number"==typeof e&&!isNaN(e);t(this.props.x)&&t(this.props.y)&&!this.props.monitorLayout.savedMonitorPositions[this.props.id]?(e={upperStart:{x:this.props.x,y:this.props.y},lowerEnd:{x:this.props.x+this.element.offsetWidth,y:this.props.y+this.element.offsetHeight}},this.props.addMonitorRect(this.props.id,e,!0)):(e=Object(Np.c)(this.props.monitorLayout,this.props.id,this.element.offsetWidth,this.element.offsetHeight),this.props.addMonitorRect(this.props.id,e),this.props.vm.runtime.requestUpdateMonitor(Object(gm.Map)({id:this.props.id,x:e.upperStart.x,y:e.upperStart.y}))),this.element.style.top="".concat(e.upperStart.y,"px"),this.element.style.left="".concat(e.upperStart.x,"px")}shouldComponentUpdate(e,t){if(t!==this.state)return!0;for(const t of Object.getOwnPropertyNames(e))if("monitorLayout"!==t&&e[t]!==this.props[t])return!0;return!1}componentDidUpdate(){this.props.draggable&&this.props.resizeMonitorRect(this.props.id,this.element.offsetWidth,this.element.offsetHeight)}componentWillUnmount(){this.props.removeMonitorRect(this.props.id)}handleDragEnd(e,{x:t,y:n}){const a=parseInt(this.element.style.left,10)+t,o=parseInt(this.element.style.top,10)+n;this.props.onDragEnd(this.props.id,a,o),this.props.vm.runtime.requestUpdateMonitor(Object(gm.Map)({id:this.props.id,x:a,y:o}))}handleHide(){this.props.vm.runtime.requestUpdateMonitor(Object(gm.Map)({id:this.props.id,visible:!1}))}handleNextMode(){const e=Bm(this.props.opcode),t=e.indexOf(this.props.mode),n=e[(t+1)%e.length];this.props.vm.runtime.requestUpdateMonitor(Object(gm.Map)({id:this.props.id,mode:n}))}handleSetModeToDefault(){this.props.vm.runtime.requestUpdateMonitor(Object(gm.Map)({id:this.props.id,mode:"default"}))}handleSetModeToLarge(){this.props.vm.runtime.requestUpdateMonitor(Object(gm.Map)({id:this.props.id,mode:"large"}))}handleSetModeToSlider(){this.props.vm.runtime.requestUpdateMonitor(Object(gm.Map)({id:this.props.id,mode:"slider"}))}handleSliderPromptClose(){this.setState({sliderPrompt:!1})}handleSliderPromptOpen(){this.setState({sliderPrompt:!0})}handleSliderPromptOk(e,t,n){const a=Math.min(e,t),o=Math.max(e,t);this.props.vm.runtime.requestUpdateMonitor(Object(gm.Map)({id:this.props.id,sliderMin:a,sliderMax:o,isDiscrete:n})),this.handleSliderPromptClose()}setElement(e){this.element=e}handleImport(){new Promise((e,t)=>{const n=document.createElement("input");n.setAttribute("type","file"),n.setAttribute("accept",".csv, .tsv, .txt"),n.onchange=a=>{const o=a.target.files[0],r=new FileReader;r.onload=()=>{document.body.removeChild(n);const a=r.result;Fm.a.parse(a,{header:!1,complete:t=>{e({rows:t.data,text:a})},error:e=>{t(e)}})},r.onerror=()=>{document.body.removeChild(n),t(new Error("Cannot read file"))},r.readAsText(o)},document.body.appendChild(n),n.click()}).then(async({rows:e,text:t})=>{const n=e[0].length;let a,o=1;if(n>1){const e=this.props.intl.formatMessage(Nm.columnPrompt,{numberOfColumns:n});o=parseInt(await prompt(e),10)}a=isNaN(o)||1===n?t.replace(/\r/g,"").split("\n"):e.map(e=>e[o-1]).filter(e=>"string"==typeof e);const{vm:r,targetId:i,id:s}=this.props;$p(r,i,s,a)})}handleExport(){const{vm:e,targetId:t,id:n}=this.props,a=Jp(e,t,n),o=a.value.join("\r\n"),r=new Blob([o],{type:"text/plain;charset=utf-8"});Object(Er.a)("".concat(a.name,".txt"),r)}render(){const e=function({id:e,spriteName:t,opcode:n,params:a,value:o,vm:r}){let{label:i,category:s,labelFn:l}=r&&r.runtime.getLabelForOpcode(n)||zp.getLabel(n);if(void 0!==l&&(i=l(a)),t&&(i="".concat(t,": ").concat(i)),"number"==typeof o&&(o=Number(o.toFixed(6))),"boolean"==typeof o&&(o=o.toString()),Array.isArray(o)){o=o.slice();for(let e=0;e({monitorLayout:e.scratchGui.monitorLayout,vm:e.scratchGui.vm}),e=>({addMonitorRect:(t,n,a)=>e(Object(Np.a)(t,n.upperStart,n.lowerEnd,a)),resizeMonitorRect:(t,n,a)=>e(Object(Np.h)(t,n,a)),removeMonitorRect:t=>e(Object(Np.f)(t))}))(Lm)),Um=n(458),qm=n.n(Um);const Wm=e=>o.a.createElement(at.a,{className:qe()(qm.a.monitorList,"monitor-overlay"),style:{width:e.stageSize.width,height:e.stageSize.height}},o.a.createElement(at.a,{className:qm.a.monitorListScaler,style:ip(e.stageSize)},e.monitors.valueSeq().filter(e=>e.visible).map(t=>o.a.createElement(zm,{draggable:e.draggable,height:t.height,id:t.id,isDiscrete:t.isDiscrete,key:t.id,max:t.sliderMax,min:t.sliderMin,mode:t.mode,opcode:t.opcode,params:t.params,spriteName:t.spriteName,targetId:t.targetId,value:t.value,width:t.width,x:t.x,y:t.y,onDragEnd:e.onMonitorChange}))));Wm.propTypes={draggable:i.a.bool.isRequired,monitors:i.a.instanceOf(gm.OrderedMap),onMonitorChange:i.a.func.isRequired,stageSize:i.a.shape({width:i.a.number,height:i.a.number,widthDefault:i.a.number,heightDefault:i.a.number}).isRequired};var Hm=Wm;function Gm(){return(Gm=Object.assign||function(e){for(var t=1;t({customStageSize:e.scratchGui.customStageSize,monitors:e.scratchGui.monitors,monitorLayout:e.scratchGui.monitorLayout}),e=>({moveMonitorRect:(t,n,a)=>e(Object(Np.e)(t,n,a)),resetMonitorLayout:()=>e(Object(Np.g)())}))(Vm)));class Xm extends o.a.Component{constructor(e){super(e),F()(this,["getPageCoords"])}getPageCoords(e,t){const{stageWidth:n,stageHeight:a,vm:o}=this.props,r=o.renderer.getNativeSize();return[n/r[0]*e+n/2,-a/r[1]*t+a/2]}render(){const{className:e,highlightedTargetId:t,highlightedTargetTime:n,vm:a}=this.props;if(!(t&&a&&a.renderer&&a.runtime.getTargetById(t)))return null;const r=a.runtime.getTargetById(t),i=a.renderer.getBounds(r.drawableID),[s,l]=this.getPageCoords(i.left,i.top),[c,d]=this.getPageCoords(i.right,i.bottom);return o.a.createElement("div",{className:e,key:n,style:{position:"absolute",top:"".concat(l-2,"px"),left:"".concat(s-2,"px"),width:"".concat(c-s+4,"px"),height:"".concat(d-l+4,"px")}})}}Xm.propTypes={className:i.a.string,highlightedTargetId:i.a.string,highlightedTargetTime:i.a.number,stageHeight:i.a.number,stageWidth:i.a.number,vm:i.a.instanceOf(p.a)};var Qm=Object(l.b)(e=>({highlightedTargetTime:e.scratchGui.targets.highlightedTargetTime,highlightedTargetId:e.scratchGui.targets.highlightedTargetId,vm:e.scratchGui.vm}),()=>({}))(Xm);class Ym extends o.a.Component{constructor(e){super(e),F()(this,["handleClick"])}handleClick(){this.props.vm.start(),this.props.vm.greenFlag()}render(){return o.a.createElement(at.a,{className:this.props.wrapperClass,onClick:this.handleClick},o.a.createElement("div",{className:this.props.className},o.a.createElement("img",{draggable:!1,src:bu.a})))}}Ym.propTypes={className:i.a.string,vm:i.a.instanceOf(p.a),wrapperClass:i.a.string};var Jm=Object(l.b)(e=>({vm:e.scratchGui.vm}),()=>({}))(Ym),Zm=n(238),$m=n.n(Zm),eh=n(843),th=n.n(eh);const nh=e=>{const{answer:t,className:n,question:a,onChange:r,onClick:i,onKeyPress:s}=e;return o.a.createElement("div",{className:n},o.a.createElement("div",{className:$m.a.questionContainer},a?o.a.createElement("div",{className:$m.a.questionLabel},a):null,o.a.createElement("div",{className:$m.a.questionInput},o.a.createElement(oi.a,{autoFocus:!0,value:t,onChange:r,onKeyPress:s}),o.a.createElement("button",{className:$m.a.questionSubmitButton,onClick:i},o.a.createElement("img",{className:$m.a.questionSubmitButtonIcon,draggable:!1,src:th.a})))))};nh.propTypes={answer:i.a.string,className:i.a.string,onChange:i.a.func.isRequired,onClick:i.a.func.isRequired,onKeyPress:i.a.func.isRequired,question:i.a.string};var ah=nh;class oh extends o.a.Component{constructor(e){super(e),F()(this,["handleChange","handleKeyPress","handleSubmit"]),this.state={answer:""}}handleChange(e){this.setState({answer:e.target.value})}handleKeyPress(e){"Enter"===e.key&&this.handleSubmit()}handleSubmit(){this.props.onQuestionAnswered(this.state.answer)}render(){return o.a.createElement(ah,{answer:this.state.answer,question:this.props.question,onChange:this.handleChange,onClick:this.handleSubmit,onKeyPress:this.handleKeyPress})}}oh.propTypes={onQuestionAnswered:i.a.func.isRequired,question:i.a.string};var rh=oh,ih=n(844),sh=n.n(ih),lh=n(845),ch=n.n(lh);const dh=e=>o.a.createElement("div",{className:e.className,style:ip(e.stageSize)},o.a.createElement("img",{className:sh.a.micImg,src:ch.a}));dh.propTypes={className:i.a.string,stageSize:i.a.shape({width:i.a.number,height:i.a.number,widthDefault:i.a.number,heightDefault:i.a.number}).isRequired};var uh=dh,ph=n(75),mh=n.n(ph);const hh=["canvas","customStageSize","dragRef","isColorPicking","isFullScreen","isPlayerOnly","isStarted","colorInfo","micIndicator","question","stageSize","useEditorDragStyle","onDeactivateColorPicker","onDoubleClick","onQuestionAnswered"];function gh(){return(gh=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const yh=e=>{const{canvas:t,customStageSize:n,dragRef:a,isColorPicking:r,isFullScreen:i,isPlayerOnly:s,isStarted:l,colorInfo:c,micIndicator:d,question:u,stageSize:p,useEditorDragStyle:m,onDeactivateColorPicker:h,onDoubleClick:g,onQuestionAnswered:b}=e,f=vh(e,hh),w=rp(p,n,i),v=(e=>480*Oa.b[e])(p),y=w.width{}};var _h=yh;const kh=["vm","onActivateColorPicker","disableEditingTargetChange"];function Sh(){return(Sh=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function xh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Ch(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Oh extends o.a.Component{constructor(e){super(e),F()(this,["attachMouseEvents","cancelMouseDownTimeout","detachMouseEvents","handleDoubleClick","handleQuestionAnswered","onMouseUp","onMouseMove","onMouseDown","onStartDrag","onStopDrag","onWheel","onContextMenu","updateRect","questionListener","setDragCanvas","clearDragCanvas","drawDragCanvas","positionDragCanvas"]),this.state={mouseDownTimeoutId:null,mouseDownPosition:null,isDragging:!1,dragOffset:null,dragId:null,colorInfo:null,question:null},this.props.vm.renderer?(this.renderer=this.props.vm.renderer,this.canvas=this.renderer.canvas):(this.canvas=document.createElement("canvas"),this.renderer=new Qe.a(this.canvas,-this.props.customStageSize.width/2,this.props.customStageSize.width/2,-this.props.customStageSize.height/2,this.props.customStageSize.height/2),this.props.vm.setStageSize(this.props.customStageSize.width,this.props.customStageSize.height),this.props.vm.attachRenderer(this.renderer),this.props.vm.setVideoProvider(new jp),this.props.vm.renderer.draw(),this.props.vm.renderer.on("UseHighQualityRenderChanged",this.props.onHighQualityPenChanged)),this.props.vm.attachV2BitmapAdapter(new ao.BitmapAdapter)}componentDidMount(){this.attachRectEvents(),this.attachMouseEvents(this.canvas),this.updateRect(),this.props.vm.runtime.addListener("QUESTION",this.questionListener)}shouldComponentUpdate(e,t){return this.props.stageSize!==e.stageSize||this.props.isColorPicking!==e.isColorPicking||this.state.colorInfo!==t.colorInfo||this.props.isFullScreen!==e.isFullScreen||this.props.isWindowFullScreen!==e.isWindowFullScreen||this.props.dimensions!==e.dimensions||this.state.question!==t.question||this.props.micIndicator!==e.micIndicator||this.props.isStarted!==e.isStarted||this.props.customStageSize!==e.customStageSize}componentDidUpdate(e){this.props.isColorPicking&&!e.isColorPicking?this.startColorPickingLoop():!this.props.isColorPicking&&e.isColorPicking&&this.stopColorPickingLoop(),this.updateRect(),this.renderer.resize(this.rect.width,this.rect.height)}componentWillUnmount(){this.detachMouseEvents(this.canvas),this.detachRectEvents(),this.stopColorPickingLoop(),this.props.vm.runtime.removeListener("QUESTION",this.questionListener)}questionListener(e){this.setState({question:e})}handleQuestionAnswered(e){this.setState({question:null},()=>{this.props.vm.runtime.emit("ANSWER",e)})}startColorPickingLoop(){const e=()=>{this.animationFrameId=requestAnimationFrame(e),"number"==typeof this.pickX&&this.setState({colorInfo:this.getColorInfo(this.pickX,this.pickY)})};this.animationFrameId=requestAnimationFrame(e)}stopColorPickingLoop(){cancelAnimationFrame(this.animationFrameId)}attachMouseEvents(e){document.addEventListener("mousemove",this.onMouseMove),document.addEventListener("mouseup",this.onMouseUp),document.addEventListener("touchmove",this.onMouseMove),document.addEventListener("touchend",this.onMouseUp),e.addEventListener("mousedown",this.onMouseDown),e.addEventListener("touchstart",this.onMouseDown),e.addEventListener("wheel",this.onWheel),e.addEventListener("contextmenu",this.onContextMenu)}detachMouseEvents(e){document.removeEventListener("mousemove",this.onMouseMove),document.removeEventListener("mouseup",this.onMouseUp),document.removeEventListener("touchmove",this.onMouseMove),document.removeEventListener("touchend",this.onMouseUp),e.removeEventListener("mousedown",this.onMouseDown),e.removeEventListener("touchstart",this.onMouseDown),e.removeEventListener("wheel",this.onWheel),e.removeEventListener("contextmenu",this.onContextMenu)}attachRectEvents(){window.addEventListener("resize",this.updateRect),window.addEventListener("scroll",this.updateRect)}detachRectEvents(){window.removeEventListener("resize",this.updateRect),window.removeEventListener("scroll",this.updateRect)}updateRect(){this.rect=this.canvas.getBoundingClientRect()}getScratchCoords(e,t){const n=this.renderer.getNativeSize();return[n[0]/this.rect.width*(e-this.rect.width/2),n[1]/this.rect.height*(t-this.rect.height/2)]}getColorInfo(e,t){return function(e){for(var t=1;t3&&(this.cancelMouseDownTimeout(),this.onStartDrag(...this.state.mouseDownPosition))}if(this.state.mouseDown&&this.state.isDragging)if(this.props.useEditorDragStyle)this.positionDragCanvas(a[0],a[1]);else{const e=this.getScratchCoords(a[0],a[1]);this.props.vm.postSpriteInfo({x:e[0]+this.state.dragOffset[0],y:-(e[1]+this.state.dragOffset[1]),force:!0})}const o={x:a[0],y:a[1],canvasWidth:this.rect.width,canvasHeight:this.rect.height};this.props.vm.postIOData("mouse",o)}onMouseUp(e){const{x:t,y:n}=ro(e),a=[t-this.rect.left,n-this.rect.top];this.cancelMouseDownTimeout(),this.setState({mouseDown:!1,mouseDownPosition:null});const o={isDown:!1,button:e.button,x:t-this.rect.left,y:n-this.rect.top,canvasWidth:this.rect.width,canvasHeight:this.rect.height,wasDragged:this.state.isDragging};if(this.state.isDragging&&this.onStopDrag(a[0],a[1]),this.props.vm.postIOData("mouse",o),this.props.isColorPicking&&a[0]>0&&a[0]0&&a[1]{const t=e.toString(16);return 1===t.length?"0".concat(t):t},o="#".concat(a(e)).concat(a(t)).concat(a(n));this.props.onDeactivateColorPicker(o),this.setState({colorInfo:null}),this.pickX=null,this.pickY=null}}onMouseDown(e){this.updateRect();const{x:t,y:n}=ro(e),a=[t-this.rect.left,n-this.rect.top];if(this.props.isColorPicking)this.pickX=a[0],this.pickY=a[1],this.setState({colorInfo:this.getColorInfo(this.pickX,this.pickY)});else{const t=window.TouchEvent&&e instanceof TouchEvent;(0===e.button||t)&&this.setState({mouseDown:!0,mouseDownPosition:a,mouseDownTimeoutId:setTimeout(this.onStartDrag.bind(this,a[0],a[1]),400)});const n={isDown:!0,button:e.button,x:a[0],y:a[1],canvasWidth:this.rect.width,canvasHeight:this.rect.height};this.props.vm.postIOData("mouse",n),t&&e.preventDefault&&(e.preventDefault(),document.activeElement&&document.activeElement.blur&&document.activeElement.blur())}}onWheel(e){const t={deltaX:e.deltaX,deltaY:e.deltaY};this.props.vm.postIOData("mouseWheel",t)}onContextMenu(e){this.props.vm.runtime.ioDevices.mouse.usesRightClickDown&&e.preventDefault()}cancelMouseDownTimeout(){null!==this.state.mouseDownTimeoutId&&clearTimeout(this.state.mouseDownTimeoutId),this.setState({mouseDownTimeoutId:null})}drawDragCanvas(e,t,n){const{imageData:a,x:o,y:r,width:i,height:s}=e;this.dragCanvas.width=a.width,this.dragCanvas.height=a.height,this.dragCanvas.style.width="".concat(i,"px"),this.dragCanvas.style.height="".concat(s,"px"),this.dragCanvas.getContext("2d").putImageData(a,0,0),this.dragCanvas.style.left="".concat(o-t,"px"),this.dragCanvas.style.top="".concat(r-n,"px"),this.dragCanvas.style.display="block"}clearDragCanvas(){this.dragCanvas.width=this.dragCanvas.height=0,this.dragCanvas.style.display="none"}positionDragCanvas(e,t){this.dragCanvas.style.transform="translate(".concat(e,"px, ").concat(t,"px)")}onStartDrag(e,t){if(this.state.dragId)return;const n=this.renderer.pick(e,t);if(null===n)return;const a=this.props.vm.getTargetIdForDrawableId(n);if(null===a)return;const o=this.props.vm.runtime.getTargetById(a);if(!this.props.useEditorDragStyle&&!o.draggable)return;o.goToFront();const[r,i]=this.getScratchCoords(e,t),s=o.x-r,l=-(o.y+i);if(this.props.vm.startDrag(a),this.setState({isDragging:!0,dragId:a,dragOffset:[s,l]}),this.props.useEditorDragStyle){const a=this.renderer.extractDrawableScreenSpace(n);this.drawDragCanvas(a,e,t),this.positionDragCanvas(e,t),this.props.vm.postSpriteInfo({visible:!1}),this.props.vm.renderer.draw()}}onStopDrag(e,t){const n=this.state.dragId,a=()=>{this.props.vm.stopDrag(n),this.setState({isDragging:!1,dragOffset:null,dragId:null})};if(this.props.useEditorDragStyle){const n={visible:!0};if(e>0&&e0&&t({highQualityPen:e.scratchGui.tw.highQualityPen,customStageSize:e.scratchGui.customStageSize,disableEditingTargetChange:e.scratchGui.mode.isFullScreen||e.scratchGui.mode.isEmbedded||e.scratchGui.mode.isPlayerOnly,isColorPicking:e.scratchGui.colorPicker.active,isFullScreen:e.scratchGui.mode.isFullScreen||e.scratchGui.mode.isEmbedded,isPlayerOnly:e.scratchGui.mode.isPlayerOnly,isWindowFullScreen:e.scratchGui.tw.isWindowFullScreen,dimensions:e.scratchGui.tw.dimensions,isStarted:e.scratchGui.vmStatus.started,micIndicator:e.scratchGui.micIndicator,useEditorDragStyle:!(e.scratchGui.mode.isFullScreen||e.scratchGui.mode.isPlayerOnly)}),e=>({onHighQualityPenChanged:t=>e(Object(ye.m)(t)),onActivateColorPicker:()=>e(Object(Wa.a)()),onDeactivateColorPicker:t=>e(Object(Wa.c)(t))}))(Oh),jh=n(109),Mh=n.n(jh),Ph=n(846),Th=n.n(Ph),Rh=n(847),Ih=n.n(Rh),Dh=n(848),Ah=n.n(Dh),Bh=n(58);const Nh={"gui.loader.headline":o.a.createElement(m.b,{defaultMessage:"Loading Project",id:"gui.loader.headline"}),"gui.loader.creating":o.a.createElement(m.b,{defaultMessage:"Creating Project",id:"gui.loader.creating"})},Lh=Object(m.g)({generic:{id:"tw.loader.generic",defaultMessage:"Loading project …"},projectData:{id:"tw.loader.data",defaultMessage:"Downloading project data …"},assetsKnown:{id:"tw.loader.assets.known",defaultMessage:"Downloading assets ({complete}/{total}) …"},assetsUnknown:{id:"tw.loader.assets.unknown",defaultMessage:"Downloading assets …"}});class zh extends o.a.Component{constructor(e){super(e),this._state=0,this.progress=0,this.complete=0,this.total=0,F()(this,["barInnerRef","handleProgressChange","messageRef"])}componentDidMount(){Object(Bh.a)()||N(this.handleProgressChange),this.updateMessage()}componentDidUpdate(){this.update()}componentWillUnmount(){N(()=>{})}handleProgressChange(e,t,n,a){e!==this._state&&(this._state=e,this.updateMessage()),this.progress=t,this.complete=n,this.total=a,this.update()}update(){this.barInner&&(this.barInner.style.width="".concat(100*this.progress,"%")),2===this._state&&this.updateMessage()}updateMessage(){0===this._state?this.message.textContent=this.props.intl.formatMessage(Lh.generic):1===this._state?this.message.textContent=this.props.intl.formatMessage(Lh.projectData):this.total>0?this.message.textContent=this.props.intl.formatMessage(Lh.assetsKnown,{complete:this.complete,total:this.total}):this.message.textContent=this.props.intl.formatMessage(Lh.assetsUnknown)}barInnerRef(e){this.barInner=e}messageRef(e){this.message=e}render(){return o.a.createElement("div",{className:qe()(Mh.a.background,{[Mh.a.fullscreen]:this.props.isFullScreen})},o.a.createElement("div",{className:Mh.a.container},o.a.createElement("div",{className:Mh.a.blockAnimation},o.a.createElement("img",{className:Mh.a.topBlock,src:Th.a}),o.a.createElement("img",{className:Mh.a.middleBlock,src:Ih.a}),o.a.createElement("img",{className:Mh.a.bottomBlock,src:Ah.a})),o.a.createElement("div",{className:Mh.a.title},Nh[this.props.messageId]),o.a.createElement("div",{className:Mh.a.messageContainerOuter},o.a.createElement("div",{className:Mh.a.messageContainerInner,ref:this.messageRef})),!Object(Bh.a)()&&o.a.createElement("div",{className:Mh.a.twProgressOuter},o.a.createElement("div",{className:Mh.a.twProgressInner,ref:this.barInnerRef}))))}}zh.propTypes={isFullScreen:i.a.bool,intl:m.i.isRequired,messageId:i.a.string},zh.defaultProps={isFullScreen:!1,messageId:"gui.loader.headline"};var Uh=Object(m.h)(zh),qh=n(239),Wh=n.n(qh);const Hh=function(e){const{isEmbedded:t,isFullScreen:n,isRtl:a,isRendererSupported:r,loading:i,stageSize:s,vm:l}=e;return o.a.createElement(at.a,{className:qe()(Wh.a.stageWrapper,{[Wh.a.embedded]:t},{[Wh.a.fullScreen]:n}),dir:a?"rtl":"ltr"},o.a.createElement(at.a,{className:Wh.a.stageMenuWrapper},o.a.createElement(Cp,{stageSize:s,vm:l})),o.a.createElement(at.a,{className:Wh.a.stageCanvasWrapper},r?o.a.createElement(Fh,{stageSize:s,vm:l}):null),i?o.a.createElement(Uh,{isFullScreen:n}):null)};Hh.propTypes={isEmbedded:i.a.bool,isFullScreen:i.a.bool,isRendererSupported:i.a.bool.isRequired,isRtl:i.a.bool.isRequired,loading:i.a.bool,stageSize:i.a.oneOf(Object.keys(Oa.c)).isRequired,vm:i.a.instanceOf(p.a).isRequired};var Gh=Hh;const Vh=e=>o.a.createElement(Gh,e);Vh.propTypes={isRendererSupported:i.a.bool.isRequired,stageSize:i.a.oneOf(Object.keys(Oa.c)).isRequired,vm:i.a.instanceOf(p.a).isRequired};var Kh=Vh,Xh=n(176);const Qh=Object(m.g)({libraryTitle:{id:"gui.costumeLibrary.chooseACostume",defaultMessage:"Choose a Costume"}});class Yh extends o.a.PureComponent{constructor(e){super(e),F()(this,["handleItemSelected"]),this.state={data:zr()}}componentDidMount(){this.state.data.then&&this.state.data.then(e=>this.setState({data:e}))}handleItemSelected(e){const t={name:e.name,rotationCenterX:e.rotationCenterX,rotationCenterY:e.rotationCenterY,bitmapResolution:e.bitmapResolution,skinId:null};this.props.vm.addCostumeFromLibrary(e.md5ext,t)}render(){return o.a.createElement(aa,{data:this.state.data.then?null:this.state.data,id:"costumeLibrary",tags:Yr,title:this.props.intl.formatMessage(Qh.libraryTitle),onItemSelected:this.handleItemSelected,onRequestClose:this.props.onRequestClose})}}Yh.propTypes={intl:m.i.isRequired,onRequestClose:i.a.func,vm:i.a.instanceOf(p.a).isRequired};var Jh=Object(m.h)(Yh),Zh=[{tag:"fantasy",intlLabel:Qr.fantasy},{tag:"music",intlLabel:Qr.music},{tag:"sports",intlLabel:Qr.sports},{tag:"outdoors",intlLabel:Qr.outdoors},{tag:"indoors",intlLabel:Qr.indoors},{tag:"space",intlLabel:Qr.space},{tag:"underwater",intlLabel:Qr.underwater},{tag:"patterns",intlLabel:Qr.patterns}];const $h=Object(m.g)({libraryTitle:{id:"gui.costumeLibrary.chooseABackdrop",defaultMessage:"Choose a Backdrop"}});class eg extends o.a.Component{constructor(e){super(e),F()(this,["handleItemSelect"]),this.state={data:Lr()}}componentDidMount(){this.state.data.then&&this.state.data.then(e=>this.setState({data:e}))}handleItemSelect(e){const t={name:e.name,rotationCenterX:e.rotationCenterX,rotationCenterY:e.rotationCenterY,bitmapResolution:e.bitmapResolution,skinId:null};this.props.vm.addBackdrop(e.md5ext,t)}render(){return o.a.createElement(aa,{data:this.state.data.then?null:this.state.data,id:"backdropLibrary",tags:Zh,title:this.props.intl.formatMessage($h.libraryTitle),onItemSelected:this.handleItemSelect,onRequestClose:this.props.onRequestClose})}}eg.propTypes={intl:m.i.isRequired,onRequestClose:i.a.func,vm:i.a.instanceOf(p.a).isRequired};var tg=Object(m.h)(eg),ng=n(860),ag=n.n(ng);const og=e=>o.a.createElement("img",{className:ag.a.spriteImage,src:e.costumeURL});og.propTypes={costumeURL:i.a.string};var rg=og;function ig(){return(ig=Object.assign||function(e){for(var t=1;t{const t=e.scratchGui.targets,n=t.editingTarget;let a;if(n)if(t.stage.id===n)a=t.stage.costume.asset;else if(t.sprites.hasOwnProperty(n)){a=t.sprites[n].costume.asset}return{vm:e.scratchGui.vm,asset:a}})(ts("asset",500)(sg)),cg=n(291),dg=n(117),ug=n.n(dg);const pg=()=>{},mg={costume:Ma.BACKPACK_COSTUME,sound:Ma.BACKPACK_SOUND,script:Ma.BACKPACK_CODE,sprite:Ma.BACKPACK_SPRITE},hg=Object(m.g)({costume:{id:"gui.backpack.costumeLabel",defaultMessage:"costume"},sound:{id:"gui.backpack.soundLabel",defaultMessage:"sound"},script:{id:"gui.backpack.scriptLabel",defaultMessage:"script"},sprite:{id:"gui.backpack.spriteLabel",defaultMessage:"sprite"}}),gg=({blockDragOver:e,containerRef:t,contents:n,dragOver:a,error:r,expanded:i,intl:s,loading:l,showMore:c,onToggle:d,onDelete:u,onRename:p,onMouseEnter:h,onMouseLeave:g,onMore:b})=>o.a.createElement("div",{className:ug.a.backpackContainer},o.a.createElement("div",{className:ug.a.backpackHeader,onClick:d},d?o.a.createElement(m.b,{defaultMessage:"Backpack",id:"gui.backpack.header"}):o.a.createElement(cg.a,{place:"top",tooltipId:"backpack-tooltip"},o.a.createElement(m.b,{defaultMessage:"Backpack",id:"gui.backpack.header"}))),i?o.a.createElement("div",{className:qe()(ug.a.backpackList,{[ug.a.dragOver]:a||e}),ref:t,onMouseEnter:h,onMouseLeave:g},!1!==r?o.a.createElement("div",{className:ug.a.statusMessage},o.a.createElement(m.b,{defaultMessage:"Error loading backpack",id:"gui.backpack.errorBackpack"}),o.a.createElement("div",{className:ug.a.errorMessage},r)):l?o.a.createElement("div",{className:ug.a.statusMessage},o.a.createElement(m.b,{defaultMessage:"Loading...",id:"gui.backpack.loadingBackpack"})):n.length>0?o.a.createElement("div",{className:ug.a.backpackListInner},n.map(e=>o.a.createElement(To,{className:ug.a.backpackItem,costumeURL:e.thumbnailUrl,details:e.name,dragPayload:e,dragType:mg[e.type],id:e.id,key:e.id,name:s.formatMessage(hg[e.type]),selected:!1,onClick:pg,onDeleteButtonClick:u,onRenameButtonClick:"sprite"===e.type?null:p})),c&&o.a.createElement("button",{className:ug.a.more,onClick:b},o.a.createElement(m.b,{defaultMessage:"More",id:"gui.backpack.more"}))):o.a.createElement("div",{className:ug.a.statusMessage},o.a.createElement(m.b,{defaultMessage:"Backpack is empty",id:"gui.backpack.emptyBackpack"}))):null);gg.propTypes={blockDragOver:i.a.bool,containerRef:i.a.func,contents:i.a.arrayOf(i.a.shape({id:i.a.string,thumbnailUrl:i.a.string,type:i.a.string,name:i.a.string})),dragOver:i.a.bool,error:i.a.oneOfType([i.a.bool,i.a.string]),expanded:i.a.bool,intl:m.i,loading:i.a.bool,onDelete:i.a.func,onRename:i.a.func,onMore:i.a.func,onMouseEnter:i.a.func,onMouseLeave:i.a.func,onToggle:i.a.func,showMore:i.a.bool},gg.defaultProps={blockDragOver:!1,contents:[],dragOver:!1,expanded:!1,loading:!1,showMore:!1,onMore:null,onToggle:null};var bg=Object(m.h)(gg);function fg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function wg(e){for(var t=1;t{window.dispatchEvent(new Event("resize"))}),e&&this.getContents()}handleError(e){throw this.setState({error:"".concat(e),loading:!1}),e}handleDrop(e){let t=null,n=null;switch(e.dragType){case Ma.COSTUME:t=gs,n=e.payload.asset;break;case Ma.SOUND:t=ws,n=e.payload.asset;break;case Ma.SPRITE:t=vs;break;case Ma.CODE:t=Ss}t&&this.setState({loading:!0},()=>{t(e.payload,this.props.vm).then(e=>n&&!n.clean&&"_local_"===!this.props.host?P.a.store(n.assetType,n.dataFormat,n.data,n.assetId).then(()=>e):e).then(e=>(({host:e,username:t,token:n,type:a,mime:o,name:r,body:i,thumbnail:s})=>new Promise((l,c)=>{if("_local_"===e)return l(Ds({type:a,mime:o,name:r,body:i,thumbnail:s}));re()({method:"POST",uri:"".concat(e,"/").concat(t),headers:{"x-token":n},json:{type:a,mime:o,name:r,body:i,thumbnail:s}},(t,n)=>t||200!==n.statusCode?c(new Error(n.status)):l(Ns(n.body,e)))}))(wg({host:this.props.host,token:this.props.token,username:this.props.username},e))).then(e=>{this.setState({loading:!1,contents:[e].concat(this.state.contents)})}).catch(e=>{this.handleError(e)})})}handleDelete(e){this.setState({loading:!0},()=>{(({host:e,username:t,token:n,id:a})=>new Promise((o,r)=>{if("_local_"===e)return o(As({id:a}));re()({method:"DELETE",uri:"".concat(e,"/").concat(t,"/").concat(a),headers:{"x-token":n}},(e,t)=>e||200!==t.statusCode?r(new Error(t.status)):o(t.body))}))({host:this.props.host,token:this.props.token,username:this.props.username,id:e}).then(()=>{this.setState({loading:!1,contents:this.state.contents.filter(t=>t.id!==e)})}).catch(e=>{this.handleError(e)})})}findItemById(e){return this.state.contents.find(t=>t.id===e)}async handleRename(e){const t=this.findItemById(e),n=await prompt(this.props.intl.formatMessage(_g.rename),t.name);n&&this.setState({loading:!0},()=>{(({host:e,id:t,name:n})=>new Promise((a,o)=>{if("_local_"===e)return a(Bs({id:t,name:n}));o(new Error("updateBackpackObject not supported"))}))(wg(wg({host:this.props.host},t),{},{name:n})).then(e=>{this.setState({loading:!1,contents:this.state.contents.map(n=>n===t?e:n)})}).catch(e=>{this.handleError(e)})})}getContents(){(this.props.token&&this.props.username||"_local_"===this.props.host)&&this.setState({loading:!0,error:!1},()=>{(({host:e,username:t,token:n,limit:a,offset:o})=>new Promise((r,i)=>{if("_local_"===e)return r(Is({limit:a,offset:o}));re()({method:"GET",uri:"".concat(e,"/").concat(t,"?limit=").concat(a,"&offset=").concat(o),headers:{"x-token":n},json:!0},(t,n)=>t||200!==n.statusCode?i(new Error(n.status)):r(n.body.map(t=>Ns(t,e))))}))({host:this.props.host,token:this.props.token,username:this.props.username,offset:this.state.contents.length,limit:this.state.itemsPerPage}).then(e=>{this.setState({contents:this.state.contents.concat(e),moreToLoad:e.length===this.state.itemsPerPage,loading:!1})}).catch(e=>{this.handleError(e)})})}handleBlockDragUpdate(e){this.setState({blockDragOutsideWorkspace:e})}handleMouseEnter(){this.state.blockDragOutsideWorkspace&&this.setState({blockDragOverBackpack:!0})}handleMouseLeave(){this.setState({blockDragOverBackpack:!1})}handleBlockDragEnd(e,t){this.state.blockDragOverBackpack&&this.handleDrop({dragType:Ma.CODE,payload:{blockObjects:this.props.vm.exportStandaloneBlocks(e),topBlockId:t}}),this.setState({blockDragOverBackpack:!1,blockDragOutsideWorkspace:!1})}handleMore(){this.getContents()}render(){return o.a.createElement(yg,{blockDragOver:this.state.blockDragOverBackpack,contents:this.state.contents,error:this.state.error,expanded:this.state.expanded,loading:this.state.loading,showMore:this.state.moreToLoad,onDelete:this.handleDelete,onRename:this.handleRename,onDrop:this.handleDrop,onMore:this.handleMore,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,onToggle:this.props.host?this.handleToggle:null})}}kg.propTypes={intl:m.i,host:i.a.string,token:i.a.string,username:i.a.string,vm:i.a.instanceOf(p.a)};var Sg=Object(m.h)(Object(l.b)(e=>Object.assign({dragInfo:e.scratchGui.assetDrag,vm:e.scratchGui.vm,blockDrag:e.scratchGui.blockDrag},(e=>{if(e.session&&e.session.session&&e.session.session.user)return{token:e.session.session.user.token,username:e.session.session.user.username};const t=window.location.href.match(/[?&]token=([^&]*)&?/),n=window.location.href.match(/[?&]username=([^&]*)&?/);return{token:t?t[1]:null,username:n?n[1]:null}})(e)),()=>({}))(kg)),Eg=n(173),xg=[{tag:"animation",intlLabel:Qr.animation},{tag:"art",intlLabel:Qr.art},{tag:"music",intlLabel:Qr.music},{tag:"games",intlLabel:Qr.games},{tag:"stories",intlLabel:Qr.stories}];const Cg=Object(m.g)({tipsLibraryTitle:{id:"gui.tipsLibrary.tutorials",defaultMessage:"Choose a Tutorial"}});class Og extends o.a.PureComponent{constructor(e){super(e),F()(this,["handleItemSelect"])}handleItemSelect(e){if(me.a.event({category:"library",action:"Select How-to",label:e.id}),e.requiredProjectId&&e.requiredProjectId!==this.props.projectId){const t="/projects/".concat(e.requiredProjectId,"/editor?tutorial=").concat(e.urlId);return window.open(window.location.origin+t,"_blank")}this.props.onActivateDeck(e.id)}render(){const e=Object.keys(pe.a).filter(e=>{if(Object(Bh.c)())return!0;const t=pe.a[e];return!t.hasOwnProperty("requiredProjectId")&&0!==t.steps.filter(e=>e.title).length}).map(e=>({rawURL:pe.a[e].img,id:e,name:pe.a[e].name,featured:!0,tags:pe.a[e].tags,urlId:pe.a[e].urlId,requiredProjectId:pe.a[e].requiredProjectId,hidden:pe.a[e].hidden||!1}));return this.props.visible?o.a.createElement(aa,{filterable:!0,data:e,id:"tipsLibrary",tags:xg,title:this.props.intl.formatMessage(Cg.tipsLibraryTitle),visible:this.props.visible,onItemSelected:this.handleItemSelect,onRequestClose:this.props.onRequestClose}):null}}Og.propTypes={intl:m.i.isRequired,onActivateDeck:i.a.func.isRequired,onRequestClose:i.a.func,projectId:i.a.oneOfType([i.a.string,i.a.number]),visible:i.a.bool};var Fg=Object(m.h)(Object(l.b)(e=>({visible:e.scratchGui.modals.tipsLibrary,projectId:e.scratchGui.projectState.projectId}),e=>({onActivateDeck:t=>e(Object(he.a)(t)),onRequestClose:()=>e(Object(f.n)())}))(Og)),jg=n(32),Mg=n.n(jg),Pg=n(862),Tg=n.n(Pg),Rg=n(863),Ig=n.n(Rg),Dg=n(464),Ag=n.n(Dg),Bg=n(465),Ng=n.n(Bg),Lg=n(441),zg=n.n(Lg),Ug=n(864),qg=n.n(Ug);const Wg={},Hg=(e,t)=>Wg.hasOwnProperty(e)?Wg[e].hasOwnProperty(t)?Wg[e][t]:Wg[e].en:e,Gg={};let Vg={},Kg="";const Xg={},Qg=e=>{Xg.hasOwnProperty(e)&&Xg[e]().then(t=>{Vg=t,Kg=e})},Yg=(e,t)=>t===Kg&&Vg.hasOwnProperty(e)?Vg[e]:Gg[e],Jg=["activeDeckId","content","dragging","isRtl","locale","onActivateDeckFactory","onCloseCards","onShrinkExpandCards","onDrag","onStartDrag","onEndDrag","onShowAll","onNextStep","onPrevStep","showVideos","step","expanded"];function Zg(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const $g=({onCloseCards:e,onShrinkExpandCards:t,onShowAll:n,totalSteps:a,step:r,expanded:i})=>o.a.createElement("div",{className:i?Mg.a.headerButtons:qe()(Mg.a.headerButtons,Mg.a.headerButtonsHidden)},o.a.createElement("div",{className:Mg.a.allButton,onClick:n},o.a.createElement("img",{className:Mg.a.helpIcon,src:zg.a}),o.a.createElement(m.b,{defaultMessage:"Tutorials",id:"gui.cards.all-tutorials"})),a>1?o.a.createElement("div",{className:Mg.a.stepsList},Array(a).fill(0).map((e,t)=>o.a.createElement("div",{className:t===r?Mg.a.activeStepPip:Mg.a.inactiveStepPip,key:"pip-step-".concat(t)}))):null,o.a.createElement("div",{className:Mg.a.headerButtonsRight},o.a.createElement("div",{className:Mg.a.shrinkExpandButton,onClick:t},o.a.createElement("img",{draggable:!1,src:i?Tg.a:Ig.a}),i?o.a.createElement(m.b,{defaultMessage:"Shrink",id:"gui.cards.shrink"}):o.a.createElement(m.b,{defaultMessage:"Expand",id:"gui.cards.expand"})),o.a.createElement("div",{className:Mg.a.removeButton,onClick:e},o.a.createElement("img",{className:Mg.a.closeIcon,src:qg.a}),o.a.createElement(m.b,{defaultMessage:"Close",id:"gui.cards.close"}))));class eb extends o.a.Component{componentDidMount(){const e=document.createElement("script");e.src="https://fast.wistia.com/embed/medias/".concat(this.props.video,".jsonp"),e.async=!0,e.setAttribute("id","wistia-video-content"),document.body.appendChild(e);const t=document.createElement("script");t.src="https://fast.wistia.com/assets/external/E-v1.js",t.async=!0,t.setAttribute("id","wistia-video-api"),document.body.appendChild(t)}componentDidUpdate(e){if(!window.Wistia||!window.Wistia.api)return;const t=window.Wistia.api(e.video);e.video!==this.props.video&&t.replaceWith(this.props.video),this.props.expanded||t.pause()}componentWillUnmount(){const e=document.getElementById("wistia-video-content");e.parentNode.removeChild(e);const t=document.getElementById("wistia-video-api");t.parentNode.removeChild(t)}render(){return o.a.createElement("div",{className:Mg.a.stepVideo},o.a.createElement("div",{className:"wistia_embed wistia_async_".concat(this.props.video),id:"video-div",style:{height:"257px",width:"466px"}}," "))}}eb.propTypes={expanded:i.a.bool.isRequired,video:i.a.string.isRequired};const tb=({title:e,image:t})=>o.a.createElement(a.Fragment,null,o.a.createElement("div",{className:Mg.a.stepTitle},e),o.a.createElement("div",{className:Mg.a.stepImageContainer},o.a.createElement("img",{className:Mg.a.stepImage,draggable:!1,key:t,src:t})));tb.propTypes={image:i.a.string.isRequired,title:i.a.node.isRequired};const nb=({isRtl:e,onNextStep:t,onPrevStep:n,expanded:r})=>o.a.createElement(a.Fragment,null,t?o.a.createElement("div",null,o.a.createElement("div",{className:r?e?Mg.a.leftCard:Mg.a.rightCard:Mg.a.hidden}),o.a.createElement("div",{className:r?e?Mg.a.leftButton:Mg.a.rightButton:Mg.a.hidden,onClick:t},o.a.createElement("img",{draggable:!1,src:e?Ng.a:Ag.a}))):null,n?o.a.createElement("div",null,o.a.createElement("div",{className:r?e?Mg.a.rightCard:Mg.a.leftCard:Mg.a.hidden}),o.a.createElement("div",{className:r?e?Mg.a.rightButton:Mg.a.leftButton:Mg.a.hidden,onClick:n},o.a.createElement("img",{draggable:!1,src:e?Ag.a:Ng.a}))):null);nb.propTypes={expanded:i.a.bool.isRequired,isRtl:i.a.bool,onNextStep:i.a.func,onPrevStep:i.a.func},$g.propTypes={expanded:i.a.bool.isRequired,onCloseCards:i.a.func.isRequired,onShowAll:i.a.func.isRequired,onShrinkExpandCards:i.a.func.isRequired,step:i.a.number,totalSteps:i.a.number};const ab=({deckIds:e,content:t,onActivateDeckFactory:n,onShowAll:r})=>o.a.createElement(a.Fragment,null,o.a.createElement("div",{className:Mg.a.stepTitle},o.a.createElement(m.b,{defaultMessage:"More things to try!",id:"gui.cards.more-things-to-try"})),o.a.createElement("div",{className:Mg.a.decks},e.slice(0,2).map(e=>o.a.createElement("div",{className:Mg.a.deck,key:"deck-preview-".concat(e),onClick:n(e)},o.a.createElement("img",{className:Mg.a.deckImage,draggable:!1,src:t[e].img}),o.a.createElement("div",{className:Mg.a.deckName},t[e].name)))),o.a.createElement("div",{className:Mg.a.seeAll},o.a.createElement("div",{className:Mg.a.seeAllButton,onClick:r},o.a.createElement(m.b,{defaultMessage:"See more",id:"gui.cards.see-more"}))));ab.propTypes={content:i.a.shape({id:i.a.shape({name:i.a.node.isRequired,img:i.a.string.isRequired,steps:i.a.arrayOf(i.a.shape({title:i.a.node,image:i.a.string,video:i.a.string,deckIds:i.a.arrayOf(i.a.string)}))})}).isRequired,deckIds:i.a.arrayOf(i.a.string).isRequired,onActivateDeckFactory:i.a.func.isRequired,onShowAll:i.a.func.isRequired};const ob=e=>{const{activeDeckId:t,content:n,dragging:a,isRtl:r,locale:i,onActivateDeckFactory:s,onCloseCards:l,onShrinkExpandCards:c,onDrag:d,onStartDrag:u,onEndDrag:p,onShowAll:m,onNextStep:h,onPrevStep:g,showVideos:b,step:f,expanded:w}=e,v=Zg(e,Jg);let{x:y,y:_}=v;if(null===t)return;const k=w?257:0;if(0===y&&0===_){y=r?-1090:292,y+=400;const e=320,t=60;_=window.innerHeight-e-t-48}const S=n[t].steps;return o.a.createElement("div",{className:Mg.a.cardContainerOverlay,style:{width:"".concat(window.innerWidth+800,"px"),height:"".concat(window.innerHeight-48+k,"px"),top:"".concat(48,"px"),left:"".concat(-400,"px")}},o.a.createElement(Hp.a,{bounds:"parent",cancel:"#video-div",position:{x:y,y:_},onDrag:d,onStart:u,onStop:p},o.a.createElement("div",{className:Mg.a.cardContainer},o.a.createElement("div",{className:Mg.a.card},o.a.createElement($g,{expanded:w,step:f,totalSteps:S.length,onCloseCards:l,onShowAll:m,onShrinkExpandCards:c}),o.a.createElement("div",{className:w?Mg.a.stepBody:Mg.a.hidden},S[f].deckIds?o.a.createElement(ab,{content:n,deckIds:S[f].deckIds,onActivateDeckFactory:s,onShowAll:m}):S[f].video?b?o.a.createElement(eb,{dragging:a,expanded:w,video:Hg(S[f].video,i)}):o.a.createElement(tb,{image:n[t].img,title:n[t].name}):o.a.createElement(tb,{image:Yg(S[f].image,i),title:S[f].title}),S[f].trackingPixel&&S[f].trackingPixel),o.a.createElement(nb,{expanded:w,isRtl:r,onNextStep:f0?g:null})))))};ob.propTypes={activeDeckId:i.a.string.isRequired,content:i.a.shape({id:i.a.shape({name:i.a.node.isRequired,img:i.a.string.isRequired,steps:i.a.arrayOf(i.a.shape({title:i.a.node,image:i.a.string,video:i.a.string,deckIds:i.a.arrayOf(i.a.string)}))})}),dragging:i.a.bool.isRequired,expanded:i.a.bool.isRequired,isRtl:i.a.bool.isRequired,locale:i.a.string.isRequired,onActivateDeckFactory:i.a.func.isRequired,onCloseCards:i.a.func.isRequired,onDrag:i.a.func,onEndDrag:i.a.func,onNextStep:i.a.func.isRequired,onPrevStep:i.a.func.isRequired,onShowAll:i.a.func,onShrinkExpandCards:i.a.func.isRequired,onStartDrag:i.a.func,showVideos:i.a.bool,step:i.a.number.isRequired,x:i.a.number,y:i.a.number},ob.defaultProps={showVideos:!0};class rb extends o.a.Component{componentDidMount(){"en"!==this.props.locale&&Qg(this.props.locale)}componentDidUpdate(e){this.props.locale!==e.locale&&Qg(this.props.locale)}render(){return o.a.createElement(ob,this.props)}}rb.propTypes={locale:i.a.string.isRequired};var ib=Object(l.b)(e=>({visible:e.scratchGui.cards.visible,content:e.scratchGui.cards.content,activeDeckId:e.scratchGui.cards.activeDeckId,step:e.scratchGui.cards.step,expanded:e.scratchGui.cards.expanded,x:e.scratchGui.cards.x,y:e.scratchGui.cards.y,isRtl:e.locales.isRtl,locale:e.locales.locale,dragging:e.scratchGui.cards.dragging,showVideos:Object(Bh.c)()}),e=>({onActivateDeckFactory:t=>()=>e(Object(he.a)(t)),onShowAll:()=>{e(Object(f.D)()),e(Object(he.c)())},onCloseCards:()=>e(Object(he.c)()),onShrinkExpandCards:()=>e(Object(he.i)()),onNextStep:()=>e(Object(he.g)()),onPrevStep:()=>e(Object(he.h)()),onDrag:(t,n)=>e(Object(he.e)(n.x,n.y)),onStartDrag:()=>e(Object(he.j)()),onEndDrag:()=>e(Object(he.f)())}))(rb),sb=n(172),lb=n(85),cb=n(110),db=n.n(cb);const ub={[lb.a.SUCCESS]:gt.COLOR_GREEN,[lb.a.WARN]:gt.COLOR_ORANGE},pb=({content:e,closeButton:t,extensionName:n,iconSpinner:a,iconURL:r,level:i,showDownload:s,showSaveNow:l,onCloseAlert:c,onDownload:d,onSaveNow:u,onReconnect:p,showReconnect:h})=>o.a.createElement(at.a,{className:qe()(db.a.alert,db.a[i])},(a||r)&&o.a.createElement("div",{className:db.a.iconSection},a&&o.a.createElement(Wn.a,{className:db.a.alertSpinner,level:i}),r&&o.a.createElement("img",{className:db.a.alertIcon,src:r})),o.a.createElement("div",{className:db.a.alertMessage},n?o.a.createElement(m.b,{defaultMessage:"Lost connection to {extensionName}.",id:"tw.alerts.lostPeripheralConnection",values:{extensionName:"".concat(n)}}):e),o.a.createElement("div",{className:db.a.alertButtons},l&&o.a.createElement("button",{className:db.a.alertConnectionButton,onClick:u},o.a.createElement(m.b,{defaultMessage:"Try Again",id:"gui.alerts.tryAgain"})),s&&o.a.createElement("button",{className:db.a.alertConnectionButton,onClick:d},o.a.createElement(m.b,{defaultMessage:"Download",id:"gui.alerts.download"})),h&&o.a.createElement("button",{className:db.a.alertConnectionButton,onClick:p},o.a.createElement(m.b,{defaultMessage:"Reconnect",id:"gui.connection.reconnect"})),t&&o.a.createElement(at.a,{className:db.a.alertCloseButtonContainer},o.a.createElement(gt,{className:qe()(db.a.alertCloseButton),color:ub[i],size:gt.SIZE_LARGE,onClick:c}))));pb.propTypes={closeButton:i.a.bool,content:i.a.oneOfType([i.a.element,i.a.string]),extensionName:i.a.string,iconSpinner:i.a.bool,iconURL:i.a.string,level:i.a.string,onCloseAlert:i.a.func.isRequired,onDownload:i.a.func,onReconnect:i.a.func,onSaveNow:i.a.func,showDownload:i.a.bool,showReconnect:i.a.bool,showSaveNow:i.a.bool},pb.defaultProps={level:lb.a.WARN};var mb=pb;class hb extends o.a.Component{constructor(e){super(e),F()(this,["handleOnCloseAlert","handleOnReconnect"])}handleOnCloseAlert(){this.props.onCloseAlert(this.props.index)}handleOnReconnect(){this.props.onOpenConnectionModal(this.props.extensionId),this.handleOnCloseAlert()}render(){const{closeButton:e,content:t,extensionName:n,index:a,level:r,iconSpinner:i,iconURL:s,message:l,onSaveNow:c,showDownload:d,showReconnect:u,showSaveNow:p}=this.props;return o.a.createElement(sb.a,null,(a,m)=>o.a.createElement(mb,{closeButton:e,content:t,extensionName:n,iconSpinner:i,iconURL:s,level:r,message:l,showDownload:d,showReconnect:u,showSaveNow:p,onCloseAlert:this.handleOnCloseAlert,onDownload:m,onReconnect:this.handleOnReconnect,onSaveNow:c}))}}hb.propTypes={closeButton:i.a.bool,content:i.a.element,extensionId:i.a.string,extensionName:i.a.string,iconSpinner:i.a.bool,iconURL:i.a.string,index:i.a.number,level:i.a.string.isRequired,message:i.a.string,onCloseAlert:i.a.func.isRequired,onOpenConnectionModal:i.a.func,onSaveNow:i.a.func,showDownload:i.a.bool,showReconnect:i.a.bool,showSaveNow:i.a.bool};var gb=Object(l.b)(()=>({}),e=>({onOpenConnectionModal:t=>{e(Object(Ga.c)(t)),e(Object(f.s)())},onSaveNow:()=>{e(Object(g.v)())}}))(hb),bb=n(865),fb=n.n(bb);const wb=({alertsList:e,className:t,onCloseAlert:n})=>o.a.createElement(at.a,{bounds:"parent",className:t},o.a.createElement(at.a,{className:fb.a.alertsInnerContainer},e.map((e,t)=>o.a.createElement(gb,{closeButton:e.closeButton,content:e.content,extensionId:e.extensionId,extensionName:e.extensionName,iconSpinner:e.iconSpinner,iconURL:e.iconURL,index:t,key:t,level:e.level,message:e.message,showDownload:e.showDownload,showReconnect:e.showReconnect,showSaveNow:e.showSaveNow,onCloseAlert:n}))));wb.propTypes={alertsList:i.a.arrayOf(i.a.object),className:i.a.string,onCloseAlert:i.a.func};var vb=wb;const yb=({alertsList:e,className:t,onCloseAlert:n})=>o.a.createElement(vb,{alertsList:Object(se.f)(e),className:t,onCloseAlert:n});yb.propTypes={alertsList:i.a.arrayOf(i.a.object),className:i.a.string,onCloseAlert:i.a.func};var _b=Object(l.b)(e=>({alertsList:e.scratchGui.alerts.alertsList}),e=>({onCloseAlert:t=>e(Object(se.b)(t))}))(yb),kb=n(373),Sb=n.n(kb);const Eb=({dragging:e,img:t,currentOffset:n})=>e?o.a.createElement("div",{className:Sb.a.dragLayer},o.a.createElement("div",{className:Sb.a.imageWrapper,style:{transform:"translate(".concat(n.x,"px, ").concat(n.y,"px)")}},o.a.createElement("img",{className:Sb.a.image,src:t}))):null;Eb.propTypes={currentOffset:i.a.shape({x:i.a.number.isRequired,y:i.a.number.isRequired}),dragging:i.a.bool.isRequired,img:i.a.string};var xb=Eb;var Cb=Object(l.b)(e=>({dragging:e.scratchGui.assetDrag.dragging,currentOffset:e.scratchGui.assetDrag.currentOffset,img:e.scratchGui.assetDrag.img}))(xb),Ob=n(55),Fb=n.n(Ob),jb=n(8),Mb=n.n(jb);class Pb extends o.a.Component{constructor(e){super(e),F()(this,["handleConnecting"])}handleConnecting(){this.props.onConnecting(this.props.peripheralId)}render(){return o.a.createElement(at.a,{className:Mb.a.peripheralTile},o.a.createElement(at.a,{className:Mb.a.peripheralTileName},o.a.createElement("img",{className:Mb.a.peripheralTileImage,src:this.props.connectionSmallIconURL}),o.a.createElement(at.a,{className:Mb.a.peripheralTileNameWrapper},o.a.createElement(at.a,{className:Mb.a.peripheralTileNameLabel},o.a.createElement(m.b,{defaultMessage:"Device name",id:"gui.connection.peripheral-name-label"})),o.a.createElement(at.a,{className:Mb.a.peripheralTileNameText},this.props.name))),o.a.createElement(at.a,{className:Mb.a.peripheralTileWidgets},o.a.createElement(at.a,{className:Mb.a.signalStrengthMeter},o.a.createElement("div",{className:qe()(Mb.a.signalBar,{[Mb.a.greenBar]:this.props.rssi>-80})}),o.a.createElement("div",{className:qe()(Mb.a.signalBar,{[Mb.a.greenBar]:this.props.rssi>-60})}),o.a.createElement("div",{className:qe()(Mb.a.signalBar,{[Mb.a.greenBar]:this.props.rssi>-40})}),o.a.createElement("div",{className:qe()(Mb.a.signalBar,{[Mb.a.greenBar]:this.props.rssi>-20})})),o.a.createElement("button",{onClick:this.handleConnecting},o.a.createElement(m.b,{defaultMessage:"Connect",id:"gui.connection.connect"}))))}}Pb.propTypes={connectionSmallIconURL:i.a.string,name:i.a.string,onConnecting:i.a.func,peripheralId:i.a.string,rssi:i.a.number};var Tb=Pb;const Rb=e=>o.a.createElement(at.a,{className:qe()(e.className,Mb.a.dotsRow)},o.a.createElement("div",{className:qe()(Mb.a.dotsHolder,{[Mb.a.dotsHolderError]:e.error,[Mb.a.dotsHolderSuccess]:e.success})},Array(e.total).fill(0).map((t,n)=>{let a="inactive";return e.counter===n&&(a="active"),e.success&&(a="success"),e.error&&(a="error"),o.a.createElement(Ib,{key:"dot-".concat(n),type:a})})));Rb.propTypes={className:i.a.string,counter:i.a.number,error:i.a.bool,success:i.a.bool,total:i.a.number};const Ib=e=>o.a.createElement("div",{className:qe()(Mb.a.dot,{[Mb.a.inactiveStepDot]:"inactive"===e.type,[Mb.a.activeStepDot]:"active"===e.type,[Mb.a.successDot]:"success"===e.type,[Mb.a.errorDot]:"error"===e.type})});Ib.propTypes={type:i.a.string};var Db=Rb,Ab=n(292),Bb=n.n(Ab),Nb=n(866),Lb=n.n(Nb);const zb=e=>o.a.createElement(at.a,{className:Mb.a.body},o.a.createElement(at.a,{className:Mb.a.activityArea},e.scanning?0===e.peripheralList.length?o.a.createElement("div",{className:Mb.a.activityAreaInfo},o.a.createElement("div",{className:Mb.a.centeredRow},o.a.createElement("img",{className:qe()(Mb.a.radarSmall,Mb.a.radarSpin),src:Bb.a}),o.a.createElement(m.b,{defaultMessage:"Looking for devices",id:"gui.connection.scanning.lookingforperipherals"}))):o.a.createElement("div",{className:Mb.a.peripheralTilePane},e.peripheralList.map(t=>o.a.createElement(Tb,{connectionSmallIconURL:e.connectionSmallIconURL,key:t.peripheralId,name:t.name,peripheralId:t.peripheralId,rssi:t.rssi,onConnecting:e.onConnecting}))):o.a.createElement(at.a,{className:Mb.a.instructions},o.a.createElement(m.b,{defaultMessage:"No devices found",id:"gui.connection.scanning.noPeripheralsFound"}))),o.a.createElement(at.a,{className:Mb.a.bottomArea},o.a.createElement(at.a,{className:qe()(Mb.a.bottomAreaItem,Mb.a.instructions)},o.a.createElement(m.b,{defaultMessage:"Select your device in the list above.",id:"gui.connection.scanning.instructions"})),o.a.createElement(Db,{className:Mb.a.bottomAreaItem,counter:0,total:3}),o.a.createElement("button",{className:qe()(Mb.a.bottomAreaItem,Mb.a.connectionButton),onClick:e.onRefresh},o.a.createElement(m.b,{defaultMessage:"Refresh",id:"gui.connection.search"}),o.a.createElement("img",{className:Mb.a.buttonIconRight,src:Lb.a}))));zb.propTypes={connectionSmallIconURL:i.a.string,onConnecting:i.a.func,onRefresh:i.a.func,peripheralList:i.a.arrayOf(i.a.shape({name:i.a.string,rssi:i.a.number,peripheralId:i.a.string})),scanning:i.a.bool.isRequired},zb.defaultProps={peripheralList:[],scanning:!0};var Ub=zb;class qb extends o.a.Component{constructor(e){super(e),F()(this,["handlePeripheralListUpdate","handlePeripheralScanTimeout","handleRefresh"]),this.state={scanning:!0,peripheralList:[]}}componentDidMount(){this.props.vm.scanForPeripheral(this.props.extensionId),this.props.vm.on("PERIPHERAL_LIST_UPDATE",this.handlePeripheralListUpdate),this.props.vm.on("PERIPHERAL_SCAN_TIMEOUT",this.handlePeripheralScanTimeout)}componentWillUnmount(){this.props.vm.removeListener("PERIPHERAL_LIST_UPDATE",this.handlePeripheralListUpdate),this.props.vm.removeListener("PERIPHERAL_SCAN_TIMEOUT",this.handlePeripheralScanTimeout)}handlePeripheralScanTimeout(){this.setState({scanning:!1,peripheralList:[]})}handlePeripheralListUpdate(e){const t=Object.keys(e).map(t=>e[t]);this.setState({peripheralList:t})}handleRefresh(){this.props.vm.scanForPeripheral(this.props.extensionId),this.setState({scanning:!0,peripheralList:[]})}render(){return o.a.createElement(Ub,{connectionSmallIconURL:this.props.connectionSmallIconURL,peripheralList:this.state.peripheralList,phase:this.state.phase,scanning:this.state.scanning,title:this.props.extensionId,onConnected:this.props.onConnected,onConnecting:this.props.onConnecting,onRefresh:this.handleRefresh})}}qb.propTypes={connectionSmallIconURL:i.a.string,extensionId:i.a.string.isRequired,onConnected:i.a.func.isRequired,onConnecting:i.a.func.isRequired,vm:i.a.instanceOf(p.a).isRequired};var Wb=qb,Hb=n(227),Gb=n.n(Hb),Vb=n(228),Kb=n.n(Vb);const Xb=Fb()({prescan:null,pressbutton:null,notfound:null}),Qb=e=>o.a.createElement(at.a,{className:Mb.a.body},o.a.createElement(at.a,{className:Mb.a.activityArea},o.a.createElement("div",{className:Mb.a.activityAreaInfo},o.a.createElement("div",{className:Mb.a.centeredRow},e.phase===Xb.prescan&&o.a.createElement(o.a.Fragment,null,o.a.createElement("img",{className:Mb.a.radarBig,src:Bb.a}),o.a.createElement("img",{className:Mb.a.bluetoothCenteredIcon,src:Gb.a})),e.phase===Xb.pressbutton&&o.a.createElement(o.a.Fragment,null,o.a.createElement("img",{className:qe()(Mb.a.radarBig,Mb.a.radarSpin),src:Bb.a}),o.a.createElement("img",{className:Mb.a.connectionTipIcon,src:e.connectionTipIconURL})),e.phase===Xb.notfound&&o.a.createElement(at.a,{className:Mb.a.instructions},o.a.createElement(m.b,{defaultMessage:"No devices found",id:"gui.connection.auto-scanning.noPeripheralsFound"}))))),o.a.createElement(at.a,{className:Mb.a.bottomArea},o.a.createElement(at.a,{className:qe()(Mb.a.bottomAreaItem,Mb.a.instructions)},e.phase===Xb.prescan&&o.a.createElement(m.b,{defaultMessage:"Have your device nearby, then begin searching.",id:"gui.connection.auto-scanning.prescan"}),e.phase===Xb.pressbutton&&o.a.createElement(m.b,{defaultMessage:"Press the button on your device.",id:"gui.connection.auto-scanning.pressbutton"})),o.a.createElement(Db,{className:Mb.a.bottomAreaItem,counter:0,total:3}),o.a.createElement(at.a,{className:qe()(Mb.a.bottomAreaItem,Mb.a.buttonRow)},e.phase===Xb.prescan&&o.a.createElement("button",{className:Mb.a.connectionButton,onClick:e.onStartScan},o.a.createElement(m.b,{defaultMessage:"Start Searching",id:"gui.connection.auto-scanning.start-search"})),e.phase===Xb.pressbutton&&o.a.createElement("div",{className:Mb.a.segmentedButton},o.a.createElement("button",{disabled:!0,className:Mb.a.connectionButton},o.a.createElement(m.b,{defaultMessage:"Searching...",id:"gui.connection.connecting-searchbutton"})),o.a.createElement("button",{className:Mb.a.connectionButton,onClick:e.onRefresh},o.a.createElement("img",{className:Mb.a.abortConnectingIcon,src:lt.a}))),e.phase===Xb.notfound&&o.a.createElement("button",{className:Mb.a.connectionButton,onClick:e.onRefresh},o.a.createElement("img",{className:Mb.a.buttonIconLeft,src:Kb.a}),o.a.createElement(m.b,{defaultMessage:"Try again",id:"gui.connection.auto-scanning.try-again"})))));Qb.propTypes={connectionTipIconURL:i.a.string,onRefresh:i.a.func,onStartScan:i.a.func,phase:i.a.oneOf(Object.keys(Xb))},Qb.defaultProps={phase:Xb.prescan};class Yb extends o.a.Component{constructor(e){super(e),F()(this,["handlePeripheralListUpdate","handlePeripheralScanTimeout","handleStartScan","handleRefresh"]),this.state={phase:Xb.prescan}}componentWillUnmount(){this.unbindPeripheralUpdates()}handlePeripheralScanTimeout(){this.setState({phase:Xb.notfound}),this.unbindPeripheralUpdates()}handlePeripheralListUpdate(e){const t=Object.keys(e).map(t=>e[t]);t.length>0&&this.props.onConnecting(t[0].peripheralId)}bindPeripheralUpdates(){this.props.vm.on("PERIPHERAL_LIST_UPDATE",this.handlePeripheralListUpdate),this.props.vm.on("PERIPHERAL_SCAN_TIMEOUT",this.handlePeripheralScanTimeout)}unbindPeripheralUpdates(){this.props.vm.removeListener("PERIPHERAL_LIST_UPDATE",this.handlePeripheralListUpdate),this.props.vm.removeListener("PERIPHERAL_SCAN_TIMEOUT",this.handlePeripheralScanTimeout)}handleRefresh(){this.setState({phase:Xb.prescan}),this.unbindPeripheralUpdates()}handleStartScan(){this.bindPeripheralUpdates(),this.props.vm.scanForPeripheral(this.props.extensionId),this.setState({phase:Xb.pressbutton})}render(){return o.a.createElement(Qb,{connectionTipIconURL:this.props.connectionTipIconURL,phase:this.state.phase,title:this.props.extensionId,onRefresh:this.handleRefresh,onStartScan:this.handleStartScan})}}Yb.propTypes={connectionTipIconURL:i.a.string,extensionId:i.a.string.isRequired,onConnecting:i.a.func.isRequired,vm:i.a.instanceOf(p.a).isRequired};var Jb=Yb;const Zb=e=>o.a.createElement(at.a,{className:Mb.a.body},o.a.createElement(at.a,{className:Mb.a.activityArea},o.a.createElement(at.a,{className:Mb.a.centeredRow},o.a.createElement("div",{className:Mb.a.peripheralActivity},o.a.createElement("img",{className:Mb.a.peripheralActivityIcon,src:e.connectionIconURL}),o.a.createElement("img",{className:Mb.a.bluetoothConnectingIcon,src:Gb.a})))),o.a.createElement(at.a,{className:Mb.a.bottomArea},o.a.createElement(at.a,{className:qe()(Mb.a.bottomAreaItem,Mb.a.instructions)},e.connectingMessage),o.a.createElement(Db,{className:Mb.a.bottomAreaItem,counter:1,total:3}),o.a.createElement("div",{className:qe()(Mb.a.bottomAreaItem,Mb.a.segmentedButton)},o.a.createElement("button",{disabled:!0,className:Mb.a.connectionButton},o.a.createElement(m.b,{defaultMessage:"Connecting...",id:"gui.connection.connecting-cancelbutton"})),o.a.createElement("button",{className:Mb.a.connectionButton,onClick:e.onDisconnect},o.a.createElement("img",{className:Mb.a.abortConnectingIcon,src:lt.a})))));Zb.propTypes={connectingMessage:i.a.node.isRequired,connectionIconURL:i.a.string.isRequired,onDisconnect:i.a.func};var $b=Zb;const ef=e=>o.a.createElement(at.a,{className:Mb.a.body},o.a.createElement(at.a,{className:Mb.a.activityArea},o.a.createElement(at.a,{className:Mb.a.centeredRow},o.a.createElement("div",{className:Mb.a.peripheralActivity},o.a.createElement("img",{className:Mb.a.peripheralActivityIcon,src:e.connectionIconURL}),o.a.createElement("img",{className:Mb.a.bluetoothConnectedIcon,src:Gb.a})))),o.a.createElement(at.a,{className:Mb.a.bottomArea},o.a.createElement(at.a,{className:qe()(Mb.a.bottomAreaItem,Mb.a.instructions)},o.a.createElement(m.b,{defaultMessage:"Connected",id:"gui.connection.connected"})),o.a.createElement(Db,{success:!0,className:Mb.a.bottomAreaItem,total:3}),o.a.createElement("div",{className:qe()(Mb.a.bottomAreaItem,Mb.a.cornerButtons)},o.a.createElement("button",{className:qe()(Mb.a.redButton,Mb.a.connectionButton),onClick:e.onDisconnect},o.a.createElement(m.b,{defaultMessage:"Disconnect",id:"gui.connection.disconnect"})),o.a.createElement("button",{className:Mb.a.connectionButton,onClick:e.onCancel},o.a.createElement(m.b,{defaultMessage:"Go to Editor",id:"gui.connection.go-to-editor"})))));ef.propTypes={connectionIconURL:i.a.string.isRequired,onCancel:i.a.func,onDisconnect:i.a.func};var tf=ef,nf=n(356),af=n.n(nf);const of=e=>o.a.createElement(at.a,{className:Mb.a.body},o.a.createElement(at.a,{className:Mb.a.activityArea},o.a.createElement(at.a,{className:Mb.a.centeredRow},o.a.createElement("div",{className:Mb.a.peripheralActivity},o.a.createElement("img",{className:Mb.a.peripheralActivityIcon,src:e.connectionIconURL})))),o.a.createElement(at.a,{className:Mb.a.bottomArea},o.a.createElement("div",{className:qe()(Mb.a.bottomAreaItem,Mb.a.instructions)},o.a.createElement(m.b,{defaultMessage:"Oops, looks like something went wrong.",id:"gui.connection.error.errorMessage"})),o.a.createElement(Db,{error:!0,className:Mb.a.bottomAreaItem,total:3}),o.a.createElement(at.a,{className:qe()(Mb.a.bottomAreaItem,Mb.a.buttonRow)},o.a.createElement("button",{className:Mb.a.connectionButton,onClick:e.onScanning},o.a.createElement("img",{className:qe()(Mb.a.buttonIconLeft,Mb.a.buttonIconBack),src:Kb.a}),o.a.createElement(m.b,{defaultMessage:"Try again",id:"gui.connection.error.tryagainbutton"})),o.a.createElement("button",{className:Mb.a.connectionButton,onClick:e.onHelp},o.a.createElement("img",{className:Mb.a.buttonIconLeft,src:af.a}),o.a.createElement(m.b,{defaultMessage:"Help",id:"gui.connection.error.helpbutton"})))));of.propTypes={connectionIconURL:i.a.string.isRequired,onHelp:i.a.func,onScanning:i.a.func};var rf=of,sf=n(867),lf=n.n(sf),cf=n(868),df=n.n(cf);const uf=e=>o.a.createElement(at.a,{className:Mb.a.body},o.a.createElement(at.a,{className:Mb.a.activityArea},o.a.createElement("div",{className:Mb.a.scratchLinkHelp},o.a.createElement("div",{className:Mb.a.scratchLinkHelpStep},o.a.createElement("div",{className:Mb.a.helpStepNumber},"1"),o.a.createElement("div",{className:Mb.a.helpStepImage},o.a.createElement("img",{className:Mb.a.scratchLinkIcon,src:df.a})),o.a.createElement("div",{className:Mb.a.helpStepText},o.a.createElement(m.b,{defaultMessage:"Make sure you have Scratch Link installed and running",id:"gui.connection.unavailable.installscratchlink"}))),o.a.createElement("div",{className:Mb.a.scratchLinkHelpStep},o.a.createElement("div",{className:Mb.a.helpStepNumber},"2"),o.a.createElement("div",{className:Mb.a.helpStepImage},o.a.createElement("img",{className:Mb.a.scratchLinkIcon,src:lf.a})),o.a.createElement("div",{className:Mb.a.helpStepText},o.a.createElement(m.b,{defaultMessage:"Check that Bluetooth is enabled",id:"gui.connection.unavailable.enablebluetooth"}))))),o.a.createElement(at.a,{className:Mb.a.bottomArea},o.a.createElement(Db,{error:!0,className:Mb.a.bottomAreaItem,total:3}),o.a.createElement(at.a,{className:qe()(Mb.a.bottomAreaItem,Mb.a.buttonRow)},o.a.createElement("button",{className:Mb.a.connectionButton,onClick:e.onScanning},o.a.createElement("img",{className:qe()(Mb.a.buttonIconLeft,Mb.a.buttonIconBack),src:Kb.a}),o.a.createElement(m.b,{defaultMessage:"Try again",id:"gui.connection.unavailable.tryagainbutton"})),o.a.createElement("button",{className:Mb.a.connectionButton,onClick:e.onHelp},o.a.createElement("img",{className:Mb.a.buttonIconLeft,src:af.a}),o.a.createElement(m.b,{defaultMessage:"Help",id:"gui.connection.unavailable.helpbutton"})))));uf.propTypes={onHelp:i.a.func,onScanning:i.a.func};var pf=uf;const mf=Fb()({scanning:null,connecting:null,connected:null,error:null,unavailable:null}),hf=e=>o.a.createElement(St,{className:Mb.a.modalContent,contentLabel:e.name,headerClassName:Mb.a.header,headerImage:e.connectionSmallIconURL,id:"connectionModal",onHelp:e.onHelp,onRequestClose:e.onCancel},o.a.createElement(at.a,{className:Mb.a.body},e.phase===mf.scanning&&!e.useAutoScan&&o.a.createElement(Wb,e),e.phase===mf.scanning&&e.useAutoScan&&o.a.createElement(Jb,e),e.phase===mf.connecting&&o.a.createElement($b,e),e.phase===mf.connected&&o.a.createElement(tf,e),e.phase===mf.error&&o.a.createElement(rf,e),e.phase===mf.unavailable&&o.a.createElement(pf,e)));hf.propTypes={connectingMessage:i.a.node.isRequired,connectionSmallIconURL:i.a.string,connectionTipIconURL:i.a.string,name:i.a.node,onCancel:i.a.func.isRequired,onHelp:i.a.func.isRequired,phase:i.a.oneOf(Object.keys(mf)).isRequired,title:i.a.string.isRequired,useAutoScan:i.a.bool.isRequired},hf.defaultProps={connectingMessage:"Connecting"};class gf extends o.a.Component{constructor(e){super(e),F()(this,["handleScanning","handleCancel","handleConnected","handleConnecting","handleDisconnect","handleError","handleHelp"]),this.state={extension:Lt.a.find(t=>t.extensionId===e.extensionId),phase:e.vm.getPeripheralIsConnected(e.extensionId)?mf.connected:mf.scanning}}componentDidMount(){this.props.vm.on("PERIPHERAL_CONNECTED",this.handleConnected),this.props.vm.on("PERIPHERAL_REQUEST_ERROR",this.handleError)}componentWillUnmount(){this.props.vm.removeListener("PERIPHERAL_CONNECTED",this.handleConnected),this.props.vm.removeListener("PERIPHERAL_REQUEST_ERROR",this.handleError)}handleScanning(){this.setState({phase:mf.scanning})}handleConnecting(e){this.props.vm.connectPeripheral(this.props.extensionId,e),this.setState({phase:mf.connecting}),me.a.event({category:"extensions",action:"connecting",label:this.props.extensionId})}handleDisconnect(){try{this.props.vm.disconnectPeripheral(this.props.extensionId)}finally{this.props.onCancel()}}handleCancel(){try{this.props.vm.getPeripheralIsConnected(this.props.extensionId)||this.props.vm.disconnectPeripheral(this.props.extensionId)}finally{this.props.onCancel()}}handleError(){this.state.phase===mf.scanning||this.state.phase===mf.unavailable?this.setState({phase:mf.unavailable}):(this.setState({phase:mf.error}),me.a.event({category:"extensions",action:"connecting error",label:this.props.extensionId}))}handleConnected(){this.setState({phase:mf.connected}),me.a.event({category:"extensions",action:"connected",label:this.props.extensionId})}handleHelp(){window.open(this.state.extension.helpLink,"_blank"),me.a.event({category:"extensions",action:"help",label:this.props.extensionId})}render(){return o.a.createElement(hf,{connectingMessage:this.state.extension&&this.state.extension.connectingMessage,connectionIconURL:this.state.extension&&this.state.extension.connectionIconURL,connectionSmallIconURL:this.state.extension&&this.state.extension.connectionSmallIconURL,connectionTipIconURL:this.state.extension&&this.state.extension.connectionTipIconURL,extensionId:this.props.extensionId,name:this.state.extension&&this.state.extension.name,phase:this.state.phase,title:this.props.extensionId,useAutoScan:this.state.extension&&this.state.extension.useAutoScan,vm:this.props.vm,onCancel:this.handleCancel,onConnected:this.handleConnected,onConnecting:this.handleConnecting,onDisconnect:this.handleDisconnect,onHelp:this.handleHelp,onScanning:this.handleScanning})}}gf.propTypes={extensionId:i.a.string.isRequired,onCancel:i.a.func.isRequired,vm:i.a.instanceOf(p.a).isRequired};var bf=Object(l.b)(e=>({extensionId:e.scratchGui.connectionModal.extensionId}),e=>({onCancel:()=>{e(Object(f.b)())}}))(gf),ff=n(118),wf=n.n(ff);function vf(){return(vf=Object.assign||function(e){for(var t=1;tthis.handleSettingWasUpdatedTimeout(e),3e3);this.setState({settingWasUpdatedTimer:e})}handleSettingWasUpdatedTimeout(e){e===this.state.settingWasUpdatedTimer&&this.setState({settingWasUpdatedTimer:null})}render(){const e="boolean"!=typeof this.props.isTelemetryEnabled,t=!1===this.props.isTelemetryEnabled,n=!0===this.props.isTelemetryEnabled,a=this.state.settingWasUpdatedTimer&&o.a.createElement(m.b,yf.settingWasUpdated);return o.a.createElement(d.a,{isOpen:!0,className:wf.a.modalContent,contentLabel:this.props.intl.formatMessage(yf.label),overlayClassName:wf.a.modalOverlay,onRequestClose:this.handleCancel},o.a.createElement("div",{dir:this.props.isRtl?"rtl":"ltr"},o.a.createElement(at.a,{className:wf.a.illustration}),o.a.createElement(at.a,{className:wf.a.body},o.a.createElement("p",null,o.a.createElement(m.b,yf.bodyText1)),o.a.createElement("p",null,o.a.createElement(m.b,vf({},yf.bodyText2,{values:{privacyPolicyLink:o.a.createElement("a",{className:wf.a.privacyPolicyLink,href:"https://scratch.mit.edu/privacy_policy/",onClick:this.props.onShowPrivacyPolicy,target:"_blank",rel:"noopener noreferrer"},o.a.createElement(m.b,yf.privacyPolicyLink))}}))),o.a.createElement(at.a,{className:wf.a.radioButtons},o.a.createElement("label",{className:n?wf.a.labelSelected:null},o.a.createElement("input",{name:"optInOut",type:"radio",value:"true",title:this.props.intl.formatMessage(yf.optInTooltip),checked:!0===this.props.isTelemetryEnabled,onChange:this.handleOptInOutChanged}),o.a.createElement(m.b,yf.optInText)),o.a.createElement("label",{className:t?wf.a.labelSelected:null},o.a.createElement("input",{name:"optInOut",type:"radio",value:"false",title:this.props.intl.formatMessage(yf.optOutTooltip),checked:!1===this.props.isTelemetryEnabled,onChange:this.handleOptInOutChanged}),o.a.createElement(m.b,yf.optOutText))),o.a.createElement(at.a,{className:wf.a.buttonRow},o.a.createElement("span",{className:wf.a.settingWasUpdated,key:this.state.settingWasUpdatedTimer},a),o.a.createElement("button",{className:wf.a.optIn,onClick:this.props.onRequestClose,disabled:e},o.a.createElement(m.b,yf.closeButton))))))}}_f.propTypes={intl:m.i.isRequired,isRtl:i.a.bool,isTelemetryEnabled:i.a.bool,onCancel:i.a.func,onOptIn:i.a.func.isRequired,onOptOut:i.a.func.isRequired,onRequestClose:i.a.func,onShowPrivacyPolicy:i.a.func};var kf=Object(m.h)(_f),Sf=n(104),Ef=n.n(Sf);const xf=Object(m.g)({title:{id:"tw.usernameModal.title",defaultMessage:"Change Username"}}),Cf=e=>o.a.createElement(St,{className:Ef.a.modalContent,onRequestClose:e.onCancel,contentLabel:e.intl.formatMessage(xf.title),id:"usernameModal"},o.a.createElement(at.a,{className:Ef.a.body},e.mustChangeUsername&&o.a.createElement(o.a.Fragment,null,o.a.createElement("p",{className:qe()(Ef.a.helpText,Ef.a.mustChange)},o.a.createElement(m.b,{defaultMessage:"Sorry, the cloud variable server thinks your username may be unsafe. Please change it to something else or {resetIt}.",id:"tw.usernameModal.mustChange",values:{resetIt:o.a.createElement("a",{className:Ef.a.resetLink,onClick:e.onReset},o.a.createElement(m.b,{defaultMessage:"reset it (recommended)",id:"tw.usernameModal.mustChange.resetIt"}))}}))),Object(Bh.a)()?o.a.createElement("p",{className:Ef.a.helpText},o.a.createElement(m.b,{defaultMessage:"New username:",id:"tw.usernameModal.new"})):null,o.a.createElement(at.a,null,o.a.createElement("input",{autoFocus:!0,className:Ef.a.textInput,value:e.value,onChange:e.onChange,onFocus:e.onFocus,onKeyPress:e.onKeyPress,pattern:"^[a-zA-Z0-9_-]*$",maxLength:"20",spellCheck:"false"})),Object(Bh.a)()?null:o.a.createElement(o.a.Fragment,null,o.a.createElement("p",{className:Ef.a.helpText},o.a.createElement(m.b,{defaultMessage:"This value will be stored in your browser's storage. It may be logged when you interact with projects that contain cloud variables.",id:"tw.usernameModal.help"})),o.a.createElement("p",{className:Ef.a.helpText},o.a.createElement(m.b,{defaultMessage:"Values that do not correspond to a valid Scratch account will typically be rejected by the cloud variable server. We recommend leaving it as-is or changing it to your Scratch username.",id:"tw.usernameModal.help2"}))),o.a.createElement(at.a,{className:Ef.a.buttonRow},o.a.createElement("button",{className:Ef.a.cancelButton,onClick:e.onReset},o.a.createElement(m.b,{defaultMessage:"Reset",id:"tw.usernameModal.reset"})),o.a.createElement("button",{className:Ef.a.cancelButton,onClick:e.onCancel},o.a.createElement(m.b,{defaultMessage:"Cancel",id:"gui.prompt.cancel"})),o.a.createElement("button",{className:Ef.a.okButton,onClick:e.onOk,disabled:!e.valueValid},o.a.createElement(m.b,{defaultMessage:"OK",id:"gui.prompt.ok"})))));Cf.propTypes={intl:m.i,mustChangeUsername:i.a.bool.isRequired,value:i.a.string.isRequired,valueValid:i.a.bool.isRequired,onCancel:i.a.func.isRequired,onChange:i.a.func.isRequired,onFocus:i.a.func.isRequired,onKeyPress:i.a.func.isRequired,onOk:i.a.func.isRequired,onReset:i.a.func.isRequired};var Of=Object(m.h)(Cf),Ff=n(342);class jf extends o.a.Component{constructor(e){super(e),F()(this,["handleKeyPress","handleFocus","handleOk","handleCancel","handleChange","handleReset"]),this.state={value:this.props.username,valueValid:!this.props.usernameInvalid}}handleKeyPress(e){"Enter"===e.key&&this.state.valueValid&&this.handleOk()}handleFocus(e){e.target.select()}handleOk(){this.props.onSetUsername(this.state.value),this.props.onCloseUsernameModal()}handleCancel(){this.props.onCloseUsernameModal()}handleChange(e){this.setState({value:e.target.value,valueValid:e.target.checkValidity()})}handleReset(){const e=Object(Bh.a)()?"player":Object(Ff.a)();this.props.onCloseUsernameModal(),this.props.onSetUsername(e)}render(){return o.a.createElement(Of,{mustChangeUsername:this.props.usernameInvalid,value:this.state.value,valueValid:this.state.valueValid,onKeyPress:this.handleKeyPress,onFocus:this.handleFocus,onOk:this.handleOk,onCancel:this.handleCancel,onChange:this.handleChange,onReset:this.handleReset})}}jf.propTypes={onCloseUsernameModal:i.a.func,onSetUsername:i.a.func,username:i.a.string,usernameInvalid:i.a.bool};var Mf=Object(l.b)(e=>({username:e.scratchGui.tw.username,usernameInvalid:e.scratchGui.tw.usernameInvalid}),e=>({onCloseUsernameModal:()=>e(Object(f.o)()),onSetUsername:t=>{e(Object(ye.q)(t)),e(Object(ye.r)(!1))}}))(jf),Pf=n(869),Tf=n.n(Pf);function Rf(){return(Rf=Object.assign||function(e){for(var t=1;to.a.createElement("input",Rf({},e,{type:"checkbox",className:qe()(e.className,Tf.a.checkbox)}));If.propTypes={className:i.a.string};var Df=If;const Af=({slug:e,children:t})=>o.a.createElement("a",{href:"https://docs.turbowarp.org/".concat(e),target:"_blank",rel:"noopener noreferrer"},t);Af.propTypes={slug:i.a.string,children:i.a.node};var Bf=Af,Nf=n(71),Lf=n.n(Nf);const zf=["value","onChange","label"];function Uf(){return(Uf=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const Wf=Object(ri.a)(oi.a),Hf=Object(m.g)({title:{id:"tw.settingsModal.title",defaultMessage:"Advanced Settings"},help:{id:"tw.settingsModal.help",defaultMessage:"Click for help"}}),Gf=e=>o.a.createElement(o.a.Fragment,null," ",o.a.createElement(Bf,e,o.a.createElement(m.b,{defaultMessage:"Learn more.",id:"gui.alerts.cloudInfoLearnMore"})));class Vf extends o.a.Component{constructor(e){super(e),F()(this,["handleClickHelp"]),this.state={helpVisible:!1}}componentDidUpdate(e){this.props.active&&!e.active&&this.setState({helpVisible:!0})}handleClickHelp(){this.setState(e=>({helpVisible:!e.helpVisible}))}render(){return o.a.createElement("div",{className:qe()(Lf.a.setting,{[Lf.a.active]:this.props.active})},o.a.createElement("div",{className:Lf.a.label},this.props.primary,o.a.createElement("button",{className:Lf.a.helpIcon,onClick:this.handleClickHelp,title:this.props.intl.formatMessage(Hf.help)})),this.state.helpVisible&&o.a.createElement("div",{className:Lf.a.detail},this.props.help,this.props.slug&&o.a.createElement(Gf,{slug:this.props.slug})),this.props.secondary)}}Vf.propTypes={intl:m.i,active:i.a.bool,help:i.a.node,primary:i.a.node,secondary:i.a.node,slug:i.a.string};const Kf=Object(m.h)(Vf),Xf=e=>{let{value:t,onChange:n,label:a}=e,r=qf(e,zf);return o.a.createElement(Kf,Uf({},r,{active:t,primary:o.a.createElement("label",{className:Lf.a.label},o.a.createElement(Df,{className:Lf.a.checkbox,checked:t,onChange:n}),a)}))};Xf.propTypes={onChange:i.a.func.isRequired,value:i.a.bool.isRequired,label:i.a.node.isRequired};const Qf=e=>o.a.createElement(Xf,Uf({},e,{label:o.a.createElement(m.b,{defaultMessage:"High Quality Pen",id:"tw.settingsModal.highQualityPen"}),help:o.a.createElement(m.b,{defaultMessage:"Allows pen projects to render at higher resolutions and disables some coordinate rounding in the editor. Not all projects benefit from this setting and it may impact performance.",id:"tw.settingsModal.highQualityPenHelp"}),slug:"high-quality-pen"})),Yf=e=>o.a.createElement(Xf,{value:30!==e.framerate,onChange:e.onChange,label:o.a.createElement(m.b,{defaultMessage:"60 FPS (Custom FPS)",id:"tw.settingsModal.fps"}),help:o.a.createElement(m.b,{defaultMessage:"Runs scripts 60 times per second instead of 30. Most projects will not work properly with this enabled. You should try Interpolation with 60 FPS mode disabled if that is the case. {customFramerate}.",id:"tw.settingsModal.fpsHelp",values:{customFramerate:o.a.createElement("a",{onClick:e.onCustomizeFramerate,tabIndex:"0"},o.a.createElement(m.b,{defaultMessage:"Click to use a framerate other than 30 or 60",id:"tw.settingsModal.fpsHelp.customFramerate"}))}}),slug:"custom-fps"});Yf.propTypes={framerate:i.a.number,onChange:i.a.func,onCustomizeFramerate:i.a.func};const Jf=e=>o.a.createElement(Xf,Uf({},e,{label:o.a.createElement(m.b,{defaultMessage:"Interpolation",id:"tw.settingsModal.interpolation"}),help:o.a.createElement(m.b,{defaultMessage:"Makes projects appear smoother by interpolating sprite motion. Interpolation should not be used on 3D projects, raytracers, pen projects, and laggy projects as interpolation will make them run slower without making them appear smoother.",id:"tw.settingsModal.interpolationHelp"}),slug:"interpolation"})),Zf=e=>o.a.createElement(Xf,Uf({},e,{label:o.a.createElement(m.b,{defaultMessage:"Infinite Clones",id:"tw.settingsModal.infiniteClones"}),help:o.a.createElement(m.b,{defaultMessage:"Disables Scratch's 300 clone limit.",id:"tw.settingsModal.infiniteClonesHelp"}),slug:"infinite-clones"})),$f=e=>o.a.createElement(Xf,Uf({},e,{label:o.a.createElement(m.b,{defaultMessage:"Remove Fencing",id:"tw.settingsModal.removeFencing"}),help:o.a.createElement(m.b,{defaultMessage:"Allows sprites to move offscreen, become as large or as small as they want, and makes touching blocks work offscreen.",id:"tw.settingsModal.removeFencingHelp"}),slug:"remove-fencing"})),ew=e=>o.a.createElement(Xf,Uf({},e,{label:o.a.createElement(m.b,{defaultMessage:"Remove Miscellaneous Limits",id:"tw.settingsModal.removeMiscLimits"}),help:o.a.createElement(m.b,{defaultMessage:"Removes sound effect limits and pen size limits.",id:"tw.settingsModal.removeMiscLimitsHelp"}),slug:"remove-misc-limits"})),tw=e=>o.a.createElement(Xf,Uf({},e,{label:o.a.createElement(m.b,{defaultMessage:"Warp Timer",id:"tw.settingsModal.warpTimer"}),help:o.a.createElement(m.b,{defaultMessage:"Makes scripts check if they are stuck in a long or infinite loop and run at a low framerate instead of getting stuck until the loop finishes. This fixes most crashes but has a significant performance impact, so it's only enabled by default in the editor.",id:"tw.settingsModal.warpTimerHelp"}),slug:"warp-timer"})),nw=e=>o.a.createElement(Xf,Uf({},e,{label:o.a.createElement(m.b,{defaultMessage:"Disable Compiler",id:"tw.settingsModal.disableCompiler"}),help:o.a.createElement(m.b,{defaultMessage:"Disables the TurboWarp compiler. You may want to enable this while editing projects so that scripts update immediately. Otherwise, you should never enable this.",id:"tw.settingsModal.disableCompilerHelp"}),slug:"disable-compiler"})),aw=({customStageSizeEnabled:e,stageWidth:t,onStageWidthChange:n,stageHeight:a,onStageHeightChange:r})=>o.a.createElement(Kf,{active:e,primary:o.a.createElement("div",{className:qe()(Lf.a.label,Lf.a.customStageSize)},o.a.createElement(m.b,{defaultMessage:"Custom Stage Size:",id:"tw.settingsModal.customStageSize"}),o.a.createElement(Wf,{value:t,onSubmit:n,className:Lf.a.customStageSizeInput,type:"number",min:"0",max:"1024",step:"1"}),o.a.createElement("span",null,"×"),o.a.createElement(Wf,{value:a,onSubmit:r,className:Lf.a.customStageSizeInput,type:"number",min:"0",max:"1024",step:"1"})),secondary:(t>=1e3||a>=1e3)&&o.a.createElement("div",{className:Lf.a.warning},o.a.createElement(m.b,{defaultMessage:"Using a custom stage size this large is not recommended! Instead, use a lower size with the same aspect ratio and let fullscreen mode upscale it to match the user's display.",id:"tw.settingsModal.largeStageWarning"}),o.a.createElement(Gf,{slug:"custom-stage-size"})),help:o.a.createElement(m.b,{defaultMessage:"Changes the size of the Scratch stage from 480x360 to something else. Try 640x360 to make the stage widescreen. Very few projects will handle this properly.",id:"tw.settingsModal.customStageSizeHelp"}),slug:"custom-stage-size"});aw.propTypes={customStageSizeEnabled:i.a.bool,stageWidth:i.a.number,onStageWidthChange:i.a.func,stageHeight:i.a.number,onStageHeightChange:i.a.func};const ow=({onStoreProjectOptions:e})=>o.a.createElement("div",{className:Lf.a.setting},o.a.createElement("div",null,o.a.createElement("button",{onClick:e,className:Lf.a.button},o.a.createElement(m.b,{defaultMessage:"Store settings in project",id:"tw.settingsModal.storeProjectOptions"})),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"Stores the selected settings in the project so they will be automatically applied when TurboWarp loads this project. Warp timer and disable compiler will not be saved.",id:"tw.settingsModal.storeProjectOptionsHelp"}))));ow.propTypes={onStoreProjectOptions:i.a.func};const rw=e=>o.a.createElement("div",{className:Lf.a.header},e.children,o.a.createElement("div",{className:Lf.a.divider}));rw.propTypes={children:i.a.node};const iw=e=>o.a.createElement(St,{className:Lf.a.modalContent,onRequestClose:e.onClose,contentLabel:e.intl.formatMessage(Hf.title),id:"settingsModal"},o.a.createElement(at.a,{className:Lf.a.body},o.a.createElement(rw,null,o.a.createElement(m.b,{defaultMessage:"Featured",id:"tw.settingsModal.featured"})),o.a.createElement(Yf,{framerate:e.framerate,onChange:e.onFramerateChange,onCustomizeFramerate:e.onCustomizeFramerate}),o.a.createElement(Jf,{value:e.interpolation,onChange:e.onInterpolationChange}),o.a.createElement(Qf,{value:e.highQualityPen,onChange:e.onHighQualityPenChange}),o.a.createElement(tw,{value:e.warpTimer,onChange:e.onWarpTimerChange}),o.a.createElement(rw,null,o.a.createElement(m.b,{defaultMessage:"Remove Limits",id:"tw.settingsModal.removeLimits"})),o.a.createElement(Zf,{value:e.infiniteClones,onChange:e.onInfiniteClonesChange}),o.a.createElement($f,{value:e.removeFencing,onChange:e.onRemoveFencingChange}),o.a.createElement(ew,{value:e.removeLimits,onChange:e.onRemoveLimitsChange}),o.a.createElement(rw,null,o.a.createElement(m.b,{defaultMessage:"Danger Zone",id:"tw.settingsModal.dangerZone"})),!e.isEmbedded&&o.a.createElement(aw,e),o.a.createElement(nw,{value:e.disableCompiler,onChange:e.onDisableCompilerChange}),!e.isEmbedded&&o.a.createElement(ow,e)));iw.propTypes={intl:m.i,onClose:i.a.func,isEmbedded:i.a.bool,framerate:i.a.number,onFramerateChange:i.a.func,onCustomizeFramerate:i.a.func,highQualityPen:i.a.bool,onHighQualityPenChange:i.a.func,interpolation:i.a.bool,onInterpolationChange:i.a.func,infiniteClones:i.a.bool,onInfiniteClonesChange:i.a.func,removeFencing:i.a.bool,onRemoveFencingChange:i.a.func,removeLimits:i.a.bool,onRemoveLimitsChange:i.a.func,warpTimer:i.a.bool,onWarpTimerChange:i.a.func,disableCompiler:i.a.bool,onDisableCompilerChange:i.a.func};var sw=Object(m.h)(iw);const lw=["onClose","vm"];function cw(){return(cw=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const uw=Object(m.g)({newFramerate:{id:"tw.menuBar.newFramerate",defaultMessage:"New framerate:"}});class pw extends o.a.Component{constructor(e){super(e),F()(this,["handleFramerateChange","handleCustomizeFramerate","handleHighQualityPenChange","handleInterpolationChange","handleInfiniteClonesChange","handleRemoveFencingChange","handleRemoveLimitsChange","handleWarpTimerChange","handleStageWidthChange","handleStageHeightChange","handleDisableCompilerChange","handleStoreProjectOptions"])}handleFramerateChange(e){this.props.vm.setFramerate(e.target.checked?60:30)}async handleCustomizeFramerate(){const e=await prompt(this.props.intl.formatMessage(uw.newFramerate),this.props.framerate),t=parseFloat(e);isFinite(t)&&this.props.vm.setFramerate(t)}handleHighQualityPenChange(e){this.props.vm.renderer.setUseHighQualityRender(e.target.checked)}handleInterpolationChange(e){this.props.vm.setInterpolation(e.target.checked)}handleInfiniteClonesChange(e){this.props.vm.setRuntimeOptions({maxClones:e.target.checked?1/0:300})}handleRemoveFencingChange(e){this.props.vm.setRuntimeOptions({fencing:!e.target.checked})}handleRemoveLimitsChange(e){this.props.vm.setRuntimeOptions({miscLimits:!e.target.checked})}handleWarpTimerChange(e){this.props.vm.setCompilerOptions({warpTimer:e.target.checked})}handleDisableCompilerChange(e){this.props.vm.setCompilerOptions({enabled:!e.target.checked})}handleStageWidthChange(e){this.props.vm.setStageSize(e,this.props.customStageSize.height)}handleStageHeightChange(e){this.props.vm.setStageSize(this.props.customStageSize.width,e)}handleStoreProjectOptions(){this.props.vm.storeProjectOptions()}render(){const e=this.props,{onClose:t,vm:n}=e,a=dw(e,lw);return o.a.createElement(sw,cw({onClose:this.props.onClose,onFramerateChange:this.handleFramerateChange,onCustomizeFramerate:this.handleCustomizeFramerate,onHighQualityPenChange:this.handleHighQualityPenChange,onInterpolationChange:this.handleInterpolationChange,onInfiniteClonesChange:this.handleInfiniteClonesChange,onRemoveFencingChange:this.handleRemoveFencingChange,onRemoveLimitsChange:this.handleRemoveLimitsChange,onWarpTimerChange:this.handleWarpTimerChange,onStageWidthChange:this.handleStageWidthChange,onStageHeightChange:this.handleStageHeightChange,onDisableCompilerChange:this.handleDisableCompilerChange,stageWidth:this.props.customStageSize.width,stageHeight:this.props.customStageSize.height,customStageSizeEnabled:this.props.customStageSize.width!==_e.c.width||this.props.customStageSize.height!==_e.c.height,onStoreProjectOptions:this.handleStoreProjectOptions},a))}}pw.propTypes={intl:m.i,onClose:i.a.func,vm:i.a.shape({renderer:i.a.shape({setUseHighQualityRender:i.a.func}),setFramerate:i.a.func,setCompilerOptions:i.a.func,setInterpolation:i.a.func,setRuntimeOptions:i.a.func,setStageSize:i.a.func,storeProjectOptions:i.a.func}),isEmbedded:i.a.bool,framerate:i.a.number,highQualityPen:i.a.bool,interpolation:i.a.bool,infiniteClones:i.a.bool,removeFencing:i.a.bool,removeLimits:i.a.bool,warpTimer:i.a.bool,customStageSize:i.a.shape({width:i.a.number,height:i.a.number}),disableCompiler:i.a.bool};var mw=Object(m.h)(Object(l.b)(e=>({vm:e.scratchGui.vm,isEmbedded:e.scratchGui.mode.isEmbedded,framerate:e.scratchGui.tw.framerate,highQualityPen:e.scratchGui.tw.highQualityPen,interpolation:e.scratchGui.tw.interpolation,infiniteClones:e.scratchGui.tw.runtimeOptions.maxClones===1/0,removeFencing:!e.scratchGui.tw.runtimeOptions.fencing,removeLimits:!e.scratchGui.tw.runtimeOptions.miscLimits,warpTimer:e.scratchGui.tw.compilerOptions.warpTimer,customStageSize:e.scratchGui.customStageSize,disableCompiler:!e.scratchGui.tw.compilerOptions.enabled}),e=>({onClose:()=>e(Object(f.i)())}))(pw));var hw={LoadExtension:"LoadExtension",Fetch:"Fetch",OpenWindow:"OpenWindow",Redirect:"Redirect",RecordAudio:"RecordAudio",RecordVideo:"RecordVideo",ReadClipboard:"ReadClipboard",Notify:"Notify",Geolocate:"Geolocate",Embed:"Embed"},gw=n(299),bw=n.n(gw),fw=n(870),ww=n.n(fw);const vw=({url:e})=>o.a.createElement("p",{className:ww.a.url},(e=>e.length>100?"".concat(e.substring(0,100),"..."):e)(e));vw.propTypes={url:i.a.string.isRequired};var yw=vw,_w=n(871),kw=n.n(_w);const Sw=e=>{const t=e.indexOf(",");if(-1===t)return e;const n=e.substring(0,t),a=e.substring(t+1);if(n.endsWith(";base64"))try{return atob(a)}catch(t){return e}try{return decodeURIComponent(a)}catch(t){return e}},Ew=e=>o.a.createElement("textarea",{className:kw.a.code,value:Sw(e.url),readOnly:!0,spellCheck:!1,autoComplete:"off"});Ew.propTypes={url:i.a.string.isRequired};var xw=Ew,Cw=n(83);const Ow=e=>o.a.createElement("div",null,e.url.startsWith("data:")?o.a.createElement(o.a.Fragment,null,o.a.createElement(m.b,{defaultMessage:"The project wants to load a custom extension with the code:",id:"tw.loadExtension.embedded"}),o.a.createElement(xw,{url:e.url})):o.a.createElement(o.a.Fragment,null,o.a.createElement(m.b,{defaultMessage:"The project wants to load a custom extension from the URL:",id:"tw.loadExtension.url"}),o.a.createElement(yw,{url:e.url})),e.onChangeUnsandboxed&&o.a.createElement(o.a.Fragment,null,o.a.createElement("label",{className:bw.a.unsandboxedContainer},o.a.createElement(Df,{className:bw.a.unsandboxedCheckbox,checked:e.unsandboxed,onChange:e.onChangeUnsandboxed}),o.a.createElement(m.b,{defaultMessage:"Run extension without sandbox",id:"tw.loadExtension.unsandboxed"})),e.unsandboxed&&o.a.createElement("div",{className:bw.a.unsandboxedWarning},o.a.createElement(m.b,{defaultMessage:"Loading extensions without the sandbox is dangerous. It will be able to corrupt your project, delete your settings, phish for passwords, and other bad things. The {APP_NAME} developers are not responsible for any resulting issues.",id:"tw.loadExtension.unsandboxedWarning",values:{APP_NAME:Cw.a}}))),!e.unsandboxed&&o.a.createElement("div",{className:bw.a.sandboxed},o.a.createElement(m.b,{defaultMessage:"While the code will be sandboxed, it will still have access to information about your device such as your IP and general location. Make sure you trust the author of this extension before continuing.",id:"tw.loadExtension.sandboxed"})));Ow.propTypes={url:i.a.string.isRequired,unsandboxed:i.a.bool.isRequired,onChangeUnsandboxed:i.a.func};var Fw=Ow;const jw=e=>o.a.createElement("div",null,o.a.createElement(m.b,{defaultMessage:"The project wants to connect to the website:",id:"tw.fetch.title"}),o.a.createElement(yw,{url:e.url}),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"This could be used to download images or sounds, implement multiplayer, access an API, or for malicious purposes. This will share your IP address, general location, and possibly other data with the website.",id:"tw.securityManager.why"})),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"If allowed, further requests to the same website will be automatically allowed.",id:"tw.securityManager.trust"})));jw.propTypes={url:i.a.string.isRequired};var Mw=jw;const Pw=e=>o.a.createElement("div",null,o.a.createElement(m.b,{defaultMessage:"The project wants to open a new window or tab with the URL:",id:"tw.openWindow.title"}),o.a.createElement(yw,{url:e.url}),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"This website has not been reviewed by the {APP_NAME} developers. It may contain dangerous or malicious code.",id:"tw.openWindow.dangerous",values:{APP_NAME:Cw.a}})));Pw.propTypes={url:i.a.string.isRequired};var Tw=Pw;const Rw=e=>o.a.createElement("div",null,o.a.createElement(m.b,{defaultMessage:"The project wants to navigate this tab to the URL:",id:"tw.redirect.title"}),o.a.createElement(yw,{url:e.url}),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"This website has not been reviewed by the {APP_NAME} developers. It may contain dangerous or malicious code.",id:"tw.redirect.dangerous",values:{APP_NAME:Cw.a}})));Rw.propTypes={url:i.a.string.isRequired};var Iw=Rw;var Dw=()=>o.a.createElement("div",null,o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"The project wants to record audio from your microphone. This could include a text transcript or raw audio data. The project may be able to share audio with other users or servers.",id:"tw.recordAudio.title"})),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"If allowed, you may be prompted to enable microphone access by your browser, and further microphone access will be automatically allowed.",id:"tw.recordAudio.permission"})));var Aw=()=>o.a.createElement("div",null,o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"The project wants to record video from your camera. The project may be able to share images with other users or servers.",id:"tw.recordVideo.title"})),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"If allowed, you may be prompted to enable camera access by your browser, and further camera access will be automatically allowed.",id:"tw.recordVideo.permission"})));var Bw=()=>o.a.createElement("div",null,o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"The project wants to read data from your clipboard.",id:"tw.clipboard.title"})),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"If your clipboard contains things like passwords, the project may be able to share those with other users or servers.",id:"tw.clipboard.danger"})),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"Clipboard access may not work in some browsers. If allowed, further clipboard reads will be automatically allowed.",id:"tw.clipboard.permission"})));var Nw=()=>o.a.createElement("div",null,o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"The project wants to display notifications.",id:"tw.notify.title"})),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"If allowed, you may be prompted to enable notifications by your browser, and further notifications will be automatically allowed.",id:"tw.notify.permission"})));var Lw=()=>o.a.createElement("div",null,o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"The project wants to know your location.",id:"tw.geolocate.title"})),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"If allowed, you may be prompted to allow location access by your browser.",id:"tw.geolocate.permission"})));const zw=e=>o.a.createElement("div",null,e.url.startsWith("data:")?o.a.createElement(o.a.Fragment,null,o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"The project wants to embed HTML content over the stage:",id:"tw.embed.title1"})),o.a.createElement(xw,{url:e.url})):o.a.createElement(o.a.Fragment,null,o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"The project wants to embed remote content over the stage:",id:"tw.embed.title2"})),o.a.createElement(yw,{url:e.url})),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"While the embed will be sandboxed, it will still have access to information about your device such as your IP and general location.",id:"tw.embed.risks"})),!e.url.startsWith("data:")&&o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"If allowed, further embeds to the same site will be automatically allowed.",id:"tw.embed.persistent"})));zw.propTypes={url:i.a.string.isRequired};var Uw=zw;function qw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Ww(e){for(var t=1;t{this.setState({done:!0})},t)}componentWillUnmount(){clearTimeout(this.timeout)}render(){return o.a.createElement(e,this.state.done?Ww(Ww({},this.props),n):this.props)}}return a},Vw=n(240),Kw=n.n(Vw);const Xw=Object(m.g)({title:{id:"tw.securityManager.title",defaultMessage:"Extension Security"}}),Qw=()=>{},Yw=e=>o.a.createElement(St,{className:Kw.a.modalContent,onRequestClose:e.enableButtons?e.onDenied:Qw,contentLabel:e.intl.formatMessage(Xw.title),id:"securitymanagermodal"},o.a.createElement(at.a,{className:Kw.a.body},e.type===hw.LoadExtension?o.a.createElement(Fw,e.data):e.type===hw.Fetch?o.a.createElement(Mw,e.data):e.type===hw.OpenWindow?o.a.createElement(Tw,e.data):e.type===hw.Redirect?o.a.createElement(Iw,e.data):e.type===hw.RecordAudio?o.a.createElement(Dw,e.data):e.type===hw.RecordVideo?o.a.createElement(Aw,e.data):e.type===hw.ReadClipboard?o.a.createElement(Bw,e.data):e.type===hw.Notify?o.a.createElement(Nw,e.data):e.type===hw.Geolocate?o.a.createElement(Lw,e.data):e.type===hw.Embed?o.a.createElement(Uw,e.data):null,o.a.createElement(at.a,{className:Kw.a.buttons},o.a.createElement("button",{className:Kw.a.denyButton,onClick:e.onDenied,disabled:!e.enableButtons},o.a.createElement(m.b,{defaultMessage:"Deny",id:"tw.securityManager.deny"})),o.a.createElement("button",{className:Kw.a.allowButton,onClick:e.onAllowed,disabled:!e.enableButtons},o.a.createElement(m.b,{defaultMessage:"Allow",id:"tw.securityManager.allow"})))));Yw.propTypes={intl:m.i,type:i.a.oneOf(Object.values(hw)),enableButtons:i.a.bool,data:i.a.object.isRequired,onAllowed:i.a.func.isRequired,onDenied:i.a.func.isRequired};var Jw=Gw(Object(m.h)(Yw),750,{enableButtons:!0});function Zw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function $w(e){for(var t=1;t{tv.add(e)},av=e=>e.startsWith("https://extensions.turbowarp.org/")||e.startsWith("http://localhost:8000/")||tv.has(e),ov=new Set,rv=new Set,iv=e=>{let t;try{t=new URL(e)}catch(e){return null}return["http:","https:","ws:","wss:","data:","blob:"].includes(t.protocol)?t:null};let sv=!1,lv=!1,cv=!1,dv=!1,uv=!1;const pv=["getSandboxMode","canLoadExtensionFromProject","canFetch","canOpenWindow","canRedirect","canRecordAudio","canRecordVideo","canReadClipboard","canNotify","canGeolocate","canEmbed"];class mv extends o.a.Component{constructor(e){super(e),F()(this,["handleAllowed","handleDenied"]),F()(this,pv),this.nextModalCallbacks=[],this.modalLocked=!1,this.state={type:null,data:null,callback:null,modalCount:0}}componentDidMount(){const e=this.props.vm.extensionManager.securityManager;for(const t of pv)e[t]=this[t]}async acquireModalLock(){this.modalLocked?await new Promise(e=>{this.nextModalCallbacks.push(e)}):this.modalLocked=!0;const e=()=>{if(this.nextModalCallbacks.length){this.nextModalCallbacks.shift()()}else this.modalLocked=!1,this.setState({type:null})};return{showModal:async(t,n)=>{const a=await new Promise(e=>{this.setState(a=>({type:t,data:n,callback:e,modalCount:a.modalCount+1}))});return e(),a},releaseLock:e}}handleAllowed(){this.state.callback(!0)}handleDenied(){this.state.callback(!1)}getSandboxMode(e){return av(e)?(M.default.info("Loading extension ".concat(e," unsandboxed")),"unsandboxed"):"iframe"}handleChangeUnsandboxed(e){const t=e.target.checked;this.setState(e=>({data:$w($w({},e.data),{},{unsandboxed:t})}))}async canLoadExtensionFromProject(e){if(av(e))return M.default.info("Loading extension ".concat(e," automatically")),!0;const{showModal:t}=await this.acquireModalLock();if(e.startsWith("data:")){const n=await t(hw.LoadExtension,{url:e,unsandboxed:!1,onChangeUnsandboxed:this.handleChangeUnsandboxed.bind(this)});return this.state.data.unsandboxed&&nv(e),n}return t(hw.LoadExtension,{url:e,unsandboxed:!1})}async canFetch(e){const t=iv(e);if(!t)return!1;if((e=>av(e.href)||"https://turbowarp.org"===e.origin||e.origin.endsWith(".turbowarp.org")||e.origin.endsWith(".turbowarp.xyz")||"https://raw.githubusercontent.com"===e.origin||"https://api.github.com"===e.origin||"https://gitlab.com"===e.origin||e.origin.endsWith(".itch.io")||"https://api.gamejolt.com"===e.origin||"https://httpbin.org"===e.origin||"https://scratchdb.lefty.one"===e.origin)(t))return!0;const{showModal:n,releaseLock:a}=await this.acquireModalLock();if(ov.has(origin))return a(),!0;const o=await n(hw.Fetch,{url:e});return o&&ov.add(origin),o}async canOpenWindow(e){if(!iv(e))return!1;const{showModal:t}=await this.acquireModalLock();return t(hw.OpenWindow,{url:e})}async canRedirect(e){if(!iv(e))return!1;const{showModal:t}=await this.acquireModalLock();return t(hw.Redirect,{url:e})}async canRecordAudio(){if(!sv){const{showModal:e}=await this.acquireModalLock();sv=await e(hw.RecordAudio)}return sv}async canRecordVideo(){if(!lv){const{showModal:e}=await this.acquireModalLock();lv=await e(hw.RecordVideo)}return lv}async canReadClipboard(){if(!cv){const{showModal:e}=await this.acquireModalLock();cv=await e(hw.ReadClipboard)}return cv}async canNotify(){if(!dv){const{showModal:e}=await this.acquireModalLock();dv=await e(hw.Notify)}return dv}async canGeolocate(){if(!uv){const{showModal:e}=await this.acquireModalLock();uv=await e(hw.Geolocate)}return uv}async canEmbed(e){const t=iv(e);if(!t)return!1;const n="http:"===t.protocol||"https:"===t.protocol?t.origin:null,{showModal:a,releaseLock:o}=await this.acquireModalLock();if(n&&rv.has(n))return o(),!0;const r=await a(hw.Embed,{url:e});return n&&r&&rv.add(n),r}render(){return this.state.type?o.a.createElement(Jw,{type:this.state.type,data:this.state.data,onAllowed:this.handleAllowed,onDenied:this.handleDenied,key:this.state.modalCount}):null}}mv.propTypes={vm:i.a.shape({extensionManager:i.a.shape({securityManager:i.a.shape(pv.reduce((e,t)=>(e[t]=i.a.func.isRequired,e),{})).isRequired}).isRequired}).isRequired};const hv=Object(l.b)(e=>({vm:e.scratchGui.vm}),()=>({}))(mv);var gv=n(872),bv=n.n(gv);class fv extends o.a.Component{constructor(e){super(e),F()(this,["handleChange","handleClick"]),this.state={file:e.file}}handleChange(e){const t=e.target.files[0];this.props.onChange(t)}handleClick(){const e=document.createElement("input");e.type="file",e.accept=this.props.accept,e.addEventListener("change",this.handleChange),document.body.appendChild(e),e.click(),e.remove()}render(){return o.a.createElement("button",{className:bv.a.container,onClick:this.handleClick},this.props.file?o.a.createElement(m.b,{defaultMessage:"Selected: {name}",id:"tw.fileInput.selected",values:{name:this.props.file.name}}):o.a.createElement(m.b,{defaultMessage:"No file selected.",id:"tw.fileInput.none"}))}}fv.propTypes={file:i.a.instanceOf(File),accept:i.a.string,onChange:i.a.func};var wv=fv,vv=n(91),yv=n.n(vv);const _v=Object(m.g)({title:{id:"tw.customExtensionModal.title",defaultMessage:"Load Custom Extension"}}),kv=e=>o.a.createElement(St,{className:yv.a.modalContent,onRequestClose:e.onClose,contentLabel:e.intl.formatMessage(_v.title),id:"customExtensionModal"},o.a.createElement(at.a,{className:yv.a.body,onDragOver:e.onDragOver,onDragLeave:e.onDragLeave,onDrop:e.onDrop},o.a.createElement("div",{className:yv.a.typeSelectorContainer},o.a.createElement("div",{className:yv.a.typeSelectorButton,"data-active":"url"===e.type,onClick:e.onSwitchToURL,tabIndex:0},o.a.createElement(m.b,{defaultMessage:"URL",id:"tw.customExtensionModal.url"})),o.a.createElement("div",{className:yv.a.typeSelectorButton,"data-active":"file"===e.type,onClick:e.onSwitchToFile,tabIndex:0},o.a.createElement(m.b,{defaultMessage:"File",id:"tw.customExtensionModal.file"})),o.a.createElement("div",{className:yv.a.typeSelectorButton,"data-active":"text"===e.type,onClick:e.onSwitchToText,tabIndex:0},o.a.createElement(m.b,{defaultMessage:"Text",id:"tw.customExtensionModal.text"}))),"url"===e.type?o.a.createElement(o.a.Fragment,{key:e.type},o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"Enter the extension's URL:",id:"tw.customExtensionModal.promptURL"})),o.a.createElement("input",{type:"text",className:yv.a.urlInput,value:e.url,onChange:e.onChangeURL,onKeyDown:e.onKeyDown,placeholder:"https://extensions.turbowarp.org/...",autoFocus:!0})):"file"===e.type?o.a.createElement(o.a.Fragment,{key:e.type},o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"Select the extension's JavaScript file:",id:"tw.customExtensionModal.promptFile"})),o.a.createElement(wv,{accept:".js",onChange:e.onChangeFile,file:e.file})):o.a.createElement(o.a.Fragment,{key:e.type},o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"Paste the extension's JavaScript source code:",id:"tw.customExtensionModal.promptText"})),o.a.createElement("textarea",{className:yv.a.textCodeInput,placeholder:"class Extension {\n // ...\n}\nScratch.extensions.register(new Extension());",value:e.text,onChange:e.onChangeText,autoFocus:!0,spellCheck:!1})),e.onChangeUnsandboxed?o.a.createElement(o.a.Fragment,null,o.a.createElement("label",{className:yv.a.unsandboxedContainer},o.a.createElement(Df,{className:yv.a.unsandboxedCheckbox,checked:e.unsandboxed,onChange:e.onChangeUnsandboxed}),o.a.createElement(m.b,{defaultMessage:"Run extension without sandbox",id:"tw.customExtensionModal.unsandboxed"})),e.unsandboxed&&o.a.createElement("p",{className:yv.a.unsandboxedWarning},o.a.createElement(m.b,{defaultMessage:"Loading extensions without the sandbox is dangerous and should not be enabled if you don't know what you're doing.",id:"tw.customExtensionModal.unsandboxedWarning1"}),o.a.createElement(m.b,{defaultMessage:"Unsandboxed extensions can corrupt your project, delete your settings, phish for passwords, and other bad things. The {APP_NAME} developers are not responsible for any resulting issues.",id:"tw.customExtensionModal.unsandboxedWarning2",values:{APP_NAME:Cw.a}}))):e.unsandboxed?o.a.createElement("p",{className:yv.a.trustedExtension},o.a.createElement(m.b,{defaultMessage:"This extension will be loaded without the sandbox because it is from a trusted source.",id:"tw.customExtensionModal.trusted"})):o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"Extensions from untrusted URLs will always be loaded with the sandbox for security.",id:"tw.customExtensionModal.untrusted"})),o.a.createElement("div",{className:yv.a.buttonRow},o.a.createElement("button",{className:yv.a.loadButton,onClick:e.onLoadExtension,disabled:!e.canLoadExtension},o.a.createElement(m.b,{defaultMessage:"Load",id:"tw.customExtensionModal.load"})))));kv.propTypes={intl:m.i,canLoadExtension:i.a.bool.isRequired,type:i.a.oneOf(["url","file","text"]).isRequired,onSwitchToFile:i.a.func.isRequired,onSwitchToURL:i.a.func.isRequired,onSwitchToText:i.a.func.isRequired,file:i.a.instanceOf(File),onChangeFile:i.a.func.isRequired,onDragOver:i.a.func.isRequired,onDragLeave:i.a.func.isRequired,onDrop:i.a.func.isRequired,url:i.a.string.isRequired,onChangeURL:i.a.func.isRequired,onKeyDown:i.a.func.isRequired,text:i.a.string.isRequired,onChangeText:i.a.func.isRequired,unsandboxed:i.a.bool.isRequired,onChangeUnsandboxed:i.a.func,onLoadExtension:i.a.func.isRequired,onClose:i.a.func.isRequired};var Sv=Object(m.h)(kv);class Ev extends o.a.Component{constructor(e){super(e),F()(this,["handleChangeFile","handleChangeURL","handleClose","handleKeyDown","handleLoadExtension","handleSwitchToFile","handleSwitchToURL","handleSwitchToText","handleChangeText","handleDragOver","handleDragLeave","handleDrop","handleChangeUnsandboxed"]),this.state={files:null,type:"url",url:"",file:null,text:"",unsandboxed:!1}}getExtensionURL(){return"url"===this.state.type?this.state.url:"file"===this.state.type?new Promise((e,t)=>{const n=new FileReader;n.onload=()=>e(n.result),n.onerror=()=>t(new Error("Could not read extension as data URL: ".concat(n.error))),n.readAsDataURL(this.state.file)}):"text"===this.state.type?"data:application/javascript,".concat(encodeURIComponent(this.state.text)):Promise.reject(new Error("Unknown type"))}hasValidInput(){if("url"===this.state.type)try{const e=new URL(this.state.url);return"https:"===e.protocol||"http:"===e.protocol||"data:"===e.protocol}catch(e){return!1}return"file"===this.state.type?!!this.state.file:"text"===this.state.type&&!!this.state.text}handleChangeFile(e){this.setState({file:e})}handleChangeURL(e){this.setState({url:e.target.value})}handleClose(){this.props.onClose()}handleKeyDown(e){"Enter"===e.key&&this.hasValidInput()&&(e.preventDefault(),this.handleLoadExtension())}async handleLoadExtension(){this.handleClose();try{const e=await this.getExtensionURL();"url"!==this.state.type&&this.state.unsandboxed&&nv(e),await this.props.vm.extensionManager.loadExtensionURL(e)}catch(e){M.default.error(e),alert(e)}}handleSwitchToFile(){this.setState({type:"file"})}handleSwitchToURL(){this.setState({type:"url"})}handleSwitchToText(){this.setState({type:"text"})}handleChangeText(e){this.setState({text:e.target.value})}handleDragOver(e){e.dataTransfer.types.includes("Files")&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")}handleDragLeave(){}handleDrop(e){const t=e.dataTransfer.files[0];t&&(e.preventDefault(),this.setState({type:"file",file:t}))}isUnsandboxed(){return"url"===this.state.type?av(this.state.url):this.state.unsandboxed}canChangeUnsandboxed(){return"url"!==this.state.type}handleChangeUnsandboxed(e){this.setState({unsandboxed:e.target.checked})}render(){return o.a.createElement(Sv,{canLoadExtension:this.hasValidInput(),type:this.state.type,onSwitchToFile:this.handleSwitchToFile,onSwitchToURL:this.handleSwitchToURL,onSwitchToText:this.handleSwitchToText,file:this.state.file,onChangeFile:this.handleChangeFile,onDragOver:this.handleDragOver,onDragLeave:this.handleDragLeave,onDrop:this.handleDrop,url:this.state.url,onChangeURL:this.handleChangeURL,onKeyDown:this.handleKeyDown,text:this.state.text,onChangeText:this.handleChangeText,unsandboxed:this.isUnsandboxed(),onChangeUnsandboxed:this.canChangeUnsandboxed()?this.handleChangeUnsandboxed:null,onLoadExtension:this.handleLoadExtension,onClose:this.handleClose})}}Ev.propTypes={onClose:i.a.func,vm:i.a.shape({extensionManager:i.a.shape({loadExtensionURL:i.a.func})})};var xv=Object(l.b)(e=>({vm:e.scratchGui.vm}),e=>({onClose:()=>e(Object(f.d)())}))(Ev),Cv=n(62),Ov=n.n(Cv);const Fv=e=>e<1e6?"".concat((e/1e3).toFixed(2),"KB"):"".concat((e/1e3/1e3).toFixed(2),"MB");var jv=n(325),Mv=n.n(jv);const Pv=0,Tv=1,Rv=["meta","projects","assets","thumbnails"];let Iv=null;const Dv=()=>Iv?Promise.resolve(Iv):"undefined"==typeof indexedDB?Promise.resolve(null):new Promise((e,t)=>{const n=indexedDB.open("TW_RestorePoints",2);n.onupgradeneeded=()=>{const e=n.result;e.createObjectStore("meta",{autoIncrement:!0}),e.createObjectStore("projects"),e.createObjectStore("assets"),e.createObjectStore("thumbnails")},n.onsuccess=()=>{Iv=n.result,e(n.result)},n.onerror=()=>{t(new Error("Could not open database: ".concat(n.error)))}}),Av=e=>{e&&"object"==typeof e||(e={}),e.title="string"==typeof e.title?e.title:"?",e.created="number"==typeof e.created?e.created:0,e.type=[Pv,Tv].includes(e.type)?e.type:1,e.thumbnailSize="number"==typeof e.thumbnailSize?e.thumbnailSize:0,e.projectSize="number"==typeof e.projectSize?e.projectSize:0,e.thumbnailWidth="number"==typeof e.thumbnailWidth?e.thumbnailWidth:480,e.thumbnailHeight="number"==typeof e.thumbnailHeight?e.thumbnailHeight:360,e.assets=e.assets&&"object"==typeof e.assets?e.assets:{};for(const[t,n]of Object.entries(e.assets))"number"!=typeof n&&delete e.assets[t];return e},Bv=(e,t)=>new Promise(n=>{const a=e.getAllKeys();a.onsuccess=async()=>{const o=a.result;for(const n of o)t.has(n)||await new Promise(t=>{e.delete(n).onsuccess=()=>{t()}});n()}}),Nv=e=>new Promise(t=>{const n=e.objectStore("meta"),a=e.objectStore("projects"),o=e.objectStore("assets"),r=e.objectStore("thumbnails"),i=new Set,s=new Set,l=n.openCursor();l.onsuccess=()=>{const e=l.result;if(e){i.add(e.key);const t=Av(e.value);for(const e of Object.keys(t.assets))s.add(e);e.continue()}else Bv(a,i).then(()=>Bv(o,s)).then(()=>Bv(r,i)).then(()=>t())}});var Lv={TYPE_AUTOMATIC:Pv,TYPE_MANUAL:Tv,getAllRestorePoints:()=>Dv().then(e=>new Promise((t,n)=>{const a=e.transaction(["meta"],"readonly");a.onerror=()=>{n(new Error("Transaction error: ".concat(a.error)))};const o=[],r=new Set;let i=0;const s=a.objectStore("meta").openCursor(null,"prev");s.onsuccess=()=>{const e=s.result;if(e){const t=Av(e.value);t.id=e.key,o.push(t),i+=t.projectSize,i+=t.thumbnailSize;for(const[e,n]of Object.entries(t.assets))r.has(e)||(r.add(e),i+=n);e.continue()}else t({totalSize:i,restorePoints:o})}})),createRestorePoint:(e,t,n)=>Dv().then(a=>new Promise((o,r)=>{const i=e.saveProjectSb3DontZip(),s=i["project.json"],l=Object.keys(i).filter(e=>"project.json"!==e);if(0===l.length)throw new Error("There are no assets in this project");(e=>new Promise(t=>{const n=setTimeout(()=>{e.renderer.draw()},100);e.renderer.requestSnapshot(e=>{clearTimeout(n);const a=e.indexOf(","),o=e.substring(a+1),r=Cs(o);t({type:"image/png",data:r})})}))(e).then(c=>{const d=a.transaction(Rv,"readwrite");d.onerror=()=>{r(new Error("Transaction error: ".concat(d.error)))};let u=null;const p=async e=>{const t=d.objectStore("assets");for(const n of e)await new Promise(e=>{const a=i[n];t.add(a,n).onsuccess=()=>{e()}});d.objectStore("thumbnails").add(c,u).onsuccess=()=>{o()}},m=()=>{d.objectStore("projects").add(s,u).onsuccess=()=>{(()=>{const e=d.objectStore("assets").getAllKeys();e.onsuccess=()=>{const t=e.result,n=l.filter(e=>!t.includes(e));p(n)}})()}};(()=>{const a={};for(const e of l){const t=i[e];a[e]=t.byteLength}const o={title:t,created:Math.round(Date.now()/1e3),type:n,projectSize:s.byteLength,thumbnailSize:c.data.byteLength,thumbnailWidth:e.runtime.stageWidth,thumbnailHeight:e.runtime.stageHeight,assets:a},r=d.objectStore("meta").add(o);r.onsuccess=()=>{u=r.result,m()}})()})})),removeExtraneousRestorePoints:()=>Dv().then(e=>new Promise((t,n)=>{const a=e.transaction(Rv,"readwrite");a.onerror=()=>{n(new Error("Transaction error: ".concat(a.error)))};let o=0;const r=a.objectStore("meta").openCursor(null,"prev");r.onsuccess=()=>{const e=r.result;if(e){Av(e.value).type===Pv&&(o++,o>5&&e.delete()),e.continue()}else Nv(a).then(()=>t())}})),deleteRestorePoint:e=>Dv().then(t=>new Promise((n,a)=>{const o=t.transaction(Rv,"readwrite");o.onerror=()=>{a(new Error("Transaction error: ".concat(o.error)))};o.objectStore("meta").delete(e).onsuccess=()=>{Nv(o).then(()=>n())}})),deleteAllRestorePoints:()=>Dv().then(e=>new Promise((t,n)=>{const a=e.transaction(Rv,"readwrite");a.onerror=()=>{n(new Error("Transaction error: ".concat(a.error)))};(async()=>{for(const e of Rv)await new Promise(t=>{a.objectStore(e).clear().onsuccess=()=>{t()}});t()})()})),getThumbnail:e=>Dv().then(t=>new Promise((n,a)=>{const o=t.transaction(["thumbnails"],"readonly");o.onerror=()=>{a(new Error("Transaction error: ".concat(o.error)))};const r=o.objectStore("thumbnails").get(e);r.onsuccess=()=>{const e=r.result;if(!e)return void a(new Error("No thumbnail found"));const t=new Blob([e.data],{type:e.type}),o=URL.createObjectURL(t);n(o)}})),loadRestorePoint:(e,t)=>Dv().then(n=>new Promise((a,o)=>{const r=n.transaction(["meta","projects","assets"],"readonly");r.onerror=()=>{o(new Error("Transaction error: ".concat(r.error)))};const i=new Mv.a;let s;const l=async()=>{const t=r.objectStore("assets");for(const e of Object.keys(s.assets))await new Promise(n=>{const a=t.get(e);a.onsuccess=()=>{const t=a.result;i.file(e,t),n()}});a(i.generateAsync({type:"arraybuffer"}).then(t=>e.loadProject(t)).then(()=>{setTimeout(()=>{e.renderer.draw()})}))};e.stop(),(()=>{const e=r.objectStore("meta").get(t);e.onsuccess=()=>{s=Av(e.result),(()=>{const e=r.objectStore("projects").get(t);e.onsuccess=()=>{i.file("project.json",e.result),l()}})()}})()})),deleteLegacyRestorePoint:()=>{try{if("undefined"!=typeof indexedDB){indexedDB.deleteDatabase("TW_AutoSave")}}catch(e){}},readInterval:()=>{try{const e=localStorage.getItem("tw:restore-point-interval");if(e){const t=+e;if(Number.isFinite(t))return t}const t=localStorage.getItem("tw:addons");if(t){const e=JSON.parse(t)["tw-disable-restore-points"];if(e&&e.enabled)return-1}}catch(e){}return 3e5},setInterval:e=>{try{localStorage.setItem("tw:restore-point-interval",e)}catch(e){}}},zv=n(873),Uv=n.n(zv);const qv=()=>"undefined"!=typeof Intl&&void 0!==Intl.RelativeTimeFormat;class Wv extends o.a.Component{constructor(e){super(e),F()(this,["handleClickDelete","handleClickLoad"]),this.state={thumbnail:null,error:!1},this.unmounted=!1,this.totalSize=this.getTotalSize()}componentDidMount(){Lv.getThumbnail(this.props.id).then(e=>{this.unmounted?URL.revokeObjectURL(e):this.setState({thumbnail:e})}).catch(e=>{M.default.error(e),this.unmounted||this.setState({error:!0})})}componentWillUnmount(){this.state.thumbnail&&URL.revokeObjectURL(this.state.thumbnail),this.unmounted=!0}getTotalSize(){let e=this.props.projectSize+this.props.thumbnailSize;for(const t of Object.values(this.props.assets))e+=t;return e}handleClickDelete(e){e.stopPropagation(),this.props.onClickDelete(this.props.id)}handleClickLoad(){this.props.onClickLoad(this.props.id)}render(){const e=new Date(1e3*this.props.created);return o.a.createElement("div",{tabIndex:0,role:"button",className:Ov.a.restorePoint,onClick:this.handleClickLoad},o.a.createElement("div",{className:Ov.a.thumbnailContainer},this.state.error?o.a.createElement("span",{className:Ov.a.thumbnailPlaceholder},"?"):this.state.thumbnail?o.a.createElement("img",{className:Ov.a.thumbnailImage,src:this.state.thumbnail}):null),o.a.createElement("div",null,o.a.createElement("div",{className:Ov.a.restorePointTitle},this.props.title),o.a.createElement("div",null,qv()&&o.a.createElement("span",null,o.a.createElement(m.c,{value:e})," ("),o.a.createElement(m.a,{value:e}),", ",o.a.createElement(m.d,{value:e}),qv()&&")"),o.a.createElement("div",null,Fv(this.totalSize),", ",o.a.createElement(m.b,{defaultMessage:"{n} assets",id:"tw.restorePoints.assets",values:{n:Object.keys(this.props.assets).length}}))),o.a.createElement("button",{className:Ov.a.deleteButton,onClick:this.handleClickDelete},o.a.createElement("img",{src:Uv.a,alt:"Delete",draggable:!1})))}}Wv.propTypes={id:i.a.number.isRequired,title:i.a.string.isRequired,created:i.a.number.isRequired,projectSize:i.a.number.isRequired,thumbnailSize:i.a.number.isRequired,assets:i.a.shape({}).isRequired,onClickDelete:i.a.func.isRequired,onClickLoad:i.a.func.isRequired};var Hv=Wv;function Gv(){return(Gv=Object.assign||function(e){for(var t=1;to.a.createElement("select",{value:e.value,onChange:e.onChange},Kv.map(t=>o.a.createElement("option",{key:t,value:t},t<0?e.intl.formatMessage(Vv.never):6e4===t?e.intl.formatMessage(Vv.oneMinute):e.intl.formatMessage(Vv.minutes,{n:Math.round(t/6e4)}))),!Kv.includes(e.value)&&o.a.createElement("option",{value:e.value},"every ".concat(e.value,"ms")));Xv.propTypes={intl:m.i,value:i.a.number.isRequired,onChange:i.a.func.isRequired};const Qv=e=>o.a.createElement(St,{className:Ov.a.modalContent,onRequestClose:e.onClose,contentLabel:e.intl.formatMessage(Vv.title),id:"restorePointModal"},o.a.createElement("div",{className:Ov.a.body},o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"{APP_NAME} periodically saves restore points on your computer to help recover your project if you forget to save. This is intended as a last resort for recovery. Your computer may silently delete these restore points at any time. DO NOT rely on this feature.",id:"tw.restorePoints.description",values:{APP_NAME:Cw.a}})),o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"Restore points are created {time}.",id:"tw.restorePoints.intervalOption",values:{time:o.a.createElement(Xv,{intl:e.intl,value:e.interval,onChange:e.onChangeInterval})}})),e.interval<0&&o.a.createElement("p",{className:Ov.a.disabled},o.a.createElement(m.b,{defaultMessage:"Disabling restore points is dangerous.",id:"tw.restorePoints.off"})),e.error?o.a.createElement("div",{className:Ov.a.error},o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"Restore points are not available due to an error:",id:"tw.restorePoints.error",values:{error:e.error}})),o.a.createElement("p",{className:Ov.a.errorMessage},e.error)):e.isLoading?o.a.createElement("div",{className:Ov.a.loading},o.a.createElement(m.b,{defaultMessage:"Loading...",id:"tw.restorePoints.loading"})):0===e.restorePoints.length?o.a.createElement("div",{className:Ov.a.empty},o.a.createElement(m.b,{defaultMessage:"No restore points found.",id:"tw.restorePoints.empty"})):o.a.createElement(o.a.Fragment,null,o.a.createElement("div",{className:Ov.a.restorePointContainer},e.restorePoints.map(t=>o.a.createElement(Hv,Gv({key:t.id,onClickDelete:e.onClickDelete,onClickLoad:e.onClickLoad},t)))),o.a.createElement("div",{className:Ov.a.extraContainer},o.a.createElement("div",{className:Ov.a.totalSize},o.a.createElement("div",null,o.a.createElement(m.b,{defaultMessage:"Estimated storage used: {size}",id:"tw.restorePoints.size",values:{size:Fv(e.totalSize)}})),o.a.createElement("div",{className:Ov.a.totalSizeDescription},o.a.createElement(m.b,{defaultMessage:"Costumes or sounds used by multiple restore points are only stored once.",id:"tw.restorePoints.size2"}))),o.a.createElement("button",{onClick:e.onClickDeleteAll,className:qe()(Ov.a.button,Ov.a.deleteAllButton),disabled:e.isLoading},o.a.createElement(m.b,{defaultMessage:"Delete All",id:"tw.restorePoints.deleteAll"}))))));Qv.propTypes={intl:m.i,interval:i.a.number.isRequired,onChangeInterval:i.a.func.isRequired,onClose:i.a.func.isRequired,onClickCreate:i.a.func.isRequired,onClickDelete:i.a.func.isRequired,onClickDeleteAll:i.a.func.isRequired,onClickLoad:i.a.func.isRequired,isLoading:i.a.bool.isRequired,totalSize:i.a.number.isRequired,restorePoints:i.a.arrayOf(i.a.shape({})),error:i.a.string};var Yv=Object(m.h)(Qv);const Jv=e=>new Promise(t=>setTimeout(t,e)),Zv=Object(m.g)({confirmLoad:{id:"tw.restorePoints.confirmLoad",defaultMessage:"You have unsaved changes. Replace existing project?"},confirmDelete:{id:"tw.restorePoints.confirmDelete",defaultMessage:'Are you sure you want to delete "{projectTitle}"? This cannot be undone.'},confirmDeleteAll:{id:"tw.restorePoints.confirmDeleteAll",defaultMessage:"Are you sure you want to delete ALL restore points? This cannot be undone."},loadError:{id:"tw.restorePoints.error",defaultMessage:"Error loading restore point: {error}"}});class $v extends o.a.Component{constructor(e){super(e),F()(this,["handleClickCreate","handleClickDelete","handleClickDeleteAll","handleChangeInterval","handleClickLoad"]),this.state={loading:!0,totalSize:0,restorePoints:[],error:null,wasChanged:e.projectChanged,interval:Lv.readInterval()},this.timeout=null}componentDidMount(){this.state.wasChanged&&this.queueRestorePoint(),Lv.deleteLegacyRestorePoint()}componentWillReceiveProps(e){e.isModalVisible&&!this.props.isModalVisible?this.refreshState():!e.isModalVisible&&this.props.isModalVisible&&this.setState({restorePoints:[]}),!e.projectChanged||this.props.projectChanged||this.state.wasChanged||this.setState({wasChanged:!0}),!e.isShowingProject&&this.props.isShowingProject&&this.setState({wasChanged:!1})}componentDidUpdate(e,t){this.state.wasChanged&&!t.wasChanged?this.queueRestorePoint():!this.state.wasChanged&&t.wasChanged&&this.cancelQueuedRestorePoint()}componentWillUnmount(){this.cancelQueuedRestorePoint()}handleClickCreate(){this.createRestorePoint(Lv.TYPE_MANUAL).catch(e=>{this.handleModalError(e)})}handleClickDelete(e){const t=this.state.restorePoints.find(t=>t.id===e).title;confirm(this.props.intl.formatMessage(Zv.confirmDelete,{projectTitle:t}))&&(this.setState({loading:!0}),Lv.deleteRestorePoint(e).then(()=>{this.refreshState()}).catch(e=>{this.handleModalError(e)}))}handleClickDeleteAll(){confirm(this.props.intl.formatMessage(Zv.confirmDeleteAll))&&(this.setState({loading:!0}),Lv.deleteAllRestorePoints().then(()=>{this.refreshState()}).catch(e=>{this.handleModalError(e)}))}canLoadProject(){return!!this.props.isShowingProject&&!(this.props.projectChanged&&!confirm(this.props.intl.formatMessage(Zv.confirmLoad)))}handleClickLoad(e){this.canLoadProject()&&(this.props.onCloseModal(),this.props.onStartLoadingRestorePoint(this.props.loadingState),Lv.loadRestorePoint(this.props.vm,e).then(()=>{this.props.onFinishLoadingRestorePoint(!0,this.props.loadingState),setTimeout(()=>{this.props.vm.renderer.draw()})}).catch(e=>{M.default.error(e),alert(this.props.intl.formatMessage(Zv.loadError,{error:e})),this.props.onFinishLoadingRestorePoint(!1,this.props.loadingState)}))}handleChangeInterval(e){const t=+e.target.value;Lv.setInterval(t),this.setState({interval:t},()=>{this.state.wasChanged&&(this.cancelQueuedRestorePoint(),this.queueRestorePoint())})}queueRestorePoint(){this.timeout||this.state.interval<0||(this.timeout=setTimeout(()=>{this.createRestorePoint(Lv.TYPE_AUTOMATIC).then(()=>{this.timeout=null,this.queueRestorePoint()})},this.state.interval))}cancelQueuedRestorePoint(){this.timeout&&(clearTimeout(this.timeout),this.timeout=null)}createRestorePoint(e){return this.props.isModalVisible&&this.setState({loading:!0}),this.props.onStartCreatingRestorePoint(),Promise.all([Jv(250).then(()=>Lv.createRestorePoint(this.props.vm,this.props.projectTitle,e)).then(()=>Lv.removeExtraneousRestorePoints()),Jv(750)]).then(()=>{this.props.onFinishCreatingRestorePoint(),this.props.isModalVisible&&this.refreshState()}).catch(e=>{M.default.error(e),this.props.onErrorCreatingRestorePoint(),this.props.isModalVisible&&this.refreshState()})}refreshState(){this.setState({loading:!0,error:null,restorePoints:[]}),Lv.getAllRestorePoints().then(e=>{this.setState({loading:!1,totalSize:e.totalSize,restorePoints:e.restorePoints})}).catch(e=>{this.handleModalError(e)})}handleModalError(e){M.default.error("Restore point error",e),this.setState({error:"".concat(e),loading:!1})}render(){return this.props.isModalVisible?o.a.createElement(Yv,{onClose:this.props.onCloseModal,onClickCreate:this.handleClickCreate,onClickDelete:this.handleClickDelete,onClickDeleteAll:this.handleClickDeleteAll,onClickLoad:this.handleClickLoad,interval:this.state.interval,onChangeInterval:this.handleChangeInterval,isLoading:this.state.loading,totalSize:this.state.totalSize,restorePoints:this.state.restorePoints,error:this.state.error}):null}}$v.propTypes={intl:m.i,projectChanged:i.a.bool.isRequired,projectTitle:i.a.string.isRequired,onStartCreatingRestorePoint:i.a.func.isRequired,onFinishCreatingRestorePoint:i.a.func.isRequired,onErrorCreatingRestorePoint:i.a.func.isRequired,onStartLoadingRestorePoint:i.a.func.isRequired,onFinishLoadingRestorePoint:i.a.func.isRequired,onCloseModal:i.a.func.isRequired,loadingState:i.a.oneOf(g.a).isRequired,isShowingProject:i.a.bool.isRequired,isModalVisible:i.a.bool.isRequired,vm:i.a.shape({loadProject:i.a.func.isRequired,stop:i.a.func.isRequired,renderer:i.a.shape({draw:i.a.func.isRequired})}).isRequired};var ey=Object(m.h)(Object(l.b)(e=>({projectChanged:e.scratchGui.projectChanged,projectTitle:e.scratchGui.projectTitle,loadingState:e.scratchGui.projectState.loadingState,isShowingProject:Object(g.r)(e.scratchGui.projectState.loadingState),isModalVisible:e.scratchGui.modals.restorePointModal,vm:e.scratchGui.vm}),e=>({onStartCreatingRestorePoint:()=>e(Object(se.i)("twCreatingRestorePoint")),onFinishCreatingRestorePoint:()=>Object(se.g)(e,"twRestorePointSuccess"),onErrorCreatingRestorePoint:()=>Object(se.g)(e,"twRestorePointError"),onStartLoadingRestorePoint:t=>{e(Object(f.x)()),e(Object(g.C)(t))},onFinishLoadingRestorePoint:(t,n)=>{e(Object(g.x)(n,!1,t)),e(Object(f.g)()),e(Object(ye.j)(null))},onCloseModal:()=>e(Object(f.h)())}))($v)),ty=n(27),ny=n.n(ty),ay=n(874),oy=n.n(ay),ry=n(875),iy=n.n(ry);const sy=Object(m.g)({delete:{id:"tw.fonts.delete",defaultMessage:'Are you sure you want to delete "{font}"? Any vector costumes will use the fallback font instead.'}});class ly extends o.a.Component{constructor(e){super(e),F()(this,["handleExport","handleDelete"])}handleExport(){const e=new Blob([this.props.data],{contentType:"font/".concat(this.props.format)});Object(Er.a)("".concat(this.props.name,".").concat(this.props.format),e)}handleDelete(){confirm(this.props.intl.formatMessage(sy.delete,{font:this.props.name}))&&this.props.fontManager.deleteFont(this.props.index)}render(){return o.a.createElement("div",{className:ny.a.manageFont},o.a.createElement("div",null,o.a.createElement("div",{className:ny.a.manageFontName,title:this.props.family,style:{fontFamily:this.props.family}},this.props.name),o.a.createElement("div",{className:ny.a.manageFontDetails},this.props.system?o.a.createElement(m.b,{defaultMessage:"System font",id:"tw.fonts.system"}):Fv(this.props.data.byteLength))),o.a.createElement("div",{className:ny.a.manageFontButtons},!this.props.system&&o.a.createElement("button",{className:ny.a.manageFontButton,onClick:this.handleExport},o.a.createElement("img",{src:iy.a,alt:"Export",draggable:!1})),o.a.createElement("button",{className:ny.a.manageFontButton,onClick:this.handleDelete},o.a.createElement("img",{src:oy.a,alt:"Delete",draggable:!1}))))}}ly.propTypes={intl:m.i,system:i.a.bool.isRequired,name:i.a.string.isRequired,family:i.a.string.isRequired,data:i.a.instanceOf(Uint8Array),format:i.a.string,index:i.a.number.isRequired,fontManager:i.a.shape({deleteFont:i.a.func.isRequired}).isRequired};var cy=Object(m.h)(ly);class dy extends o.a.Component{constructor(e){super(e),F()(this,["handleSelect"])}handleSelect(){this.props.onSelect(this.props.family)}render(){return o.a.createElement("div",{className:ny.a.fontDropdownItem,title:this.props.family,style:{fontFamily:this.props.family},onMouseDown:this.handleSelect},this.props.family)}}dy.propTypes={family:i.a.string.isRequired,onSelect:i.a.func.isRequired};var uy=dy;const py=["name","onChange","fontManager","options"];function my(){return(my=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class gy extends o.a.Component{constructor(e){super(e),F()(this,["setInputRef","handleChange","handleFocus","handleBlur","handleResize","handleSelectFont","handleKeyDown"]),this.state={focused:!1,rect:null}}componentDidMount(){window.addEventListener("resize",this.handleResize)}componentWillUnmount(){window.removeEventListener("resize",this.handleResize)}setInputRef(e){this.input=e,e&&e.focus()}handleChange(e){this.props.onChange(e.target.value)}handleFocus(){this.setState({focused:!0,rect:this.input.getBoundingClientRect()})}handleBlur(){this.props.onChange(this.props.fontManager.getSafeName(this.props.name)),this.setState({focused:!1})}handleResize(){this.state.focused&&this.setState({rect:this.input.getBoundingClientRect()})}handleSelectFont(e){this.props.onChange(e)}handleKeyDown(e){"Enter"===e.key&&(this.handleBlur(),e.target.blur())}getFilteredOptions(){if(!this.state.focused||!this.props.options)return[];const e=this.props.name.toLowerCase(),t=this.props.options.filter(t=>t.toLowerCase().includes(e));return 0===t.length&&t[0]===this.props.name?[]:t}render(){const e=this.props,{name:t,onChange:n,fontManager:a,options:r}=e,i=hy(e,py),s=this.getFilteredOptions();return o.a.createElement("div",{className:ny.a.fontInputOuter},o.a.createElement("input",my({},i,{type:"text",className:ny.a.fontInput,value:this.props.name,ref:this.setInputRef,onChange:this.handleChange,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown})),s.length>0&&qp.a.createPortal(o.a.createElement("div",{className:ny.a.fontDropdownOuter,style:{left:"".concat(this.state.rect.left-4,"px"),top:"".concat(this.state.rect.top+this.state.rect.height+4,"px"),width:"".concat(this.state.rect.width+8,"px")}},this.getFilteredOptions().map(e=>o.a.createElement(uy,{key:e,family:e,onSelect:this.handleSelectFont}))),document.body))}}gy.propTypes={name:i.a.string.isRequired,onChange:i.a.func.isRequired,fontManager:i.a.shape({getSafeName:i.a.func.isRequired}).isRequired,options:i.a.arrayOf(i.a.string.isRequired)};var by=gy;class fy extends o.a.Component{constructor(e){super(e),F()(this,["handleChange"]),this.state={value:"The quick brown fox jumps over the lazy dog."}}handleChange(e){this.setState({value:e.target.value})}render(){return o.a.createElement("textarea",{className:ny.a.fontPlayground,value:this.state.value,onChange:this.handleChange,placeholder:"The quick brown fox jumps over the lazy dog.",style:{fontFamily:this.props.family}})}}fy.propTypes={family:i.a.string.isRequired};var wy=fy,vy=n(37);class yy extends o.a.Component{constructor(e){super(e),F()(this,["handleClick"])}handleClick(){this.props.onClick(this.props.family)}formatName(){switch(this.props.family){case vy.a.CHINESE:return"中文";case vy.a.KOREAN:return"한국어";case vy.a.JAPANESE:return"日本語"}return this.props.family}render(){return o.a.createElement("button",{className:qe()(ny.a.fallbackButton,{[ny.a.fallbackButtonSelected]:this.props.selected}),onClick:this.handleClick,style:{fontFamily:this.props.family}},this.formatName())}}yy.propTypes={family:i.a.string.isRequired,onClick:i.a.func.isRequired,selected:i.a.bool.isRequired};const _y=e=>o.a.createElement("div",{className:ny.a.fallbackContainer},o.a.createElement("div",{className:ny.a.fallbackLabel},o.a.createElement(m.b,{defaultMessage:"Choose a fallback font to use if the font fails to load or is deleted:",id:"tw.fonts.fallback"})),o.a.createElement("div",{className:ny.a.fallbackList},Object.values(vy.a).map(t=>o.a.createElement(yy,{key:t,family:t,onClick:e.onChange,selected:e.fallback===t}))));_y.DEFAULT="Sans Serif",_y.propTypes={fallback:i.a.string.isRequired,onChange:i.a.func.isRequired};var ky=_y;const Sy=e=>o.a.createElement("button",{onClick:e.onClick,disabled:e.disabled,className:ny.a.button},o.a.createElement(m.b,{defaultMessage:"Add",id:"tw.fonts.add"}));Sy.propTypes={onClick:i.a.func.isRequired,disabled:i.a.bool};var Ey=Sy;class xy extends o.a.Component{constructor(e){super(e),F()(this,["handleChangeName","handleChangeFallback","handleFinish"]),this.state={name:"",fallback:ky.DEFAULT,localFonts:null}}componentDidMount(){"function"==typeof queryLocalFonts&&queryLocalFonts().then(e=>{const t=[...new Set(e.map(e=>e.family))];this.setState({localFonts:t})})}handleChangeName(e){this.setState({name:e})}handleChangeFallback(e){this.setState({fallback:e})}handleFinish(){this.props.fontManager.addSystemFont(this.state.name,this.state.fallback),this.props.onClose()}render(){return o.a.createElement(o.a.Fragment,null,o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"Type in the name of any font built in to your computer. The font may not appear correctly for everyone.",id:"tw.fonts.system.name"})),o.a.createElement(by,{name:this.state.name,onChange:this.handleChangeName,fontManager:this.props.fontManager,placeholder:"Wingdings",options:this.state.localFonts}),this.state.name&&o.a.createElement(o.a.Fragment,null,o.a.createElement(wy,{family:"".concat(this.state.name,", ").concat(this.state.fallback)}),o.a.createElement(ky,{fallback:this.state.fallback,onChange:this.handleChangeFallback})),o.a.createElement(Ey,{onClick:this.handleFinish,disabled:!this.state.name}))}}xy.propTypes={fontManager:i.a.shape({addSystemFont:i.a.func.isRequired,hasFont:i.a.func.isRequired}).isRequired,onClose:i.a.func.isRequired};var Cy=xy;let Oy=0;class Fy extends o.a.Component{constructor(e){super(e),this.id=++Oy}componentDidMount(){this.style=document.createElement("style"),this.style.className="gui-temp-font",document.head.appendChild(this.style),this.updateStyle()}componentDidUpdate(e){this.props.url!==e.url&&this.updateStyle()}componentWillUnmount(){this.style.remove()}updateStyle(){this.style.textContent='@font-face { font-family: "'.concat(this.getFamily(),'"; src: url("').concat(this.props.url,'"); }')}getFamily(){return"GUITempFont".concat(this.id)}render(){return this.props.children(this.getFamily())}}Fy.propTypes={url:i.a.string.isRequired,children:i.a.func.isRequired};var jy=Fy;const My=Object(m.g)({error:{id:"tw.fonts.readError",defaultMessage:"Failed to read font file: {error}"}}),Py=["ttf","otf","woff","woff2"],Ty=e=>{const t=e.indexOf(".");return-1!==t&&(e=e.substring(0,t)),e},Ry=e=>{const t=e.split("."),n=t[t.length-1];return Py.includes(n)?n:"ttf"};class Iy extends o.a.Component{constructor(e){super(e),F()(this,["handleChangeFile","handleChangeName","handleChangeFallback","handleFinish"]),this.state={file:null,url:null,name:"",format:"",fallback:ky.DEFAULT,loading:!1}}componentWillUnmount(){URL.revokeObjectURL(this.state.url)}handleChangeFile(e){const t=e.target.files[0]||null;t?this.setState({file:t,name:Ty(t.name),format:Ry(t.name),url:URL.createObjectURL(t)}):(URL.revokeObjectURL(this.state.url),this.setState({file:t,name:null,url:null}))}handleChangeName(e){this.setState({name:e})}handleChangeFallback(e){this.setState({fallback:e})}handleFinish(){this.setState({loading:!0});const e=new FileReader;e.onload=()=>{const t=new Uint8Array(e.result),n=this.props.fontManager.runtime.storage,a=n.createAsset(n.AssetType.Font,this.state.format,t,null,!0);this.props.fontManager.addCustomFont(this.state.name,this.state.fallback,a),this.props.onClose()},e.onerror=()=>{alert(this.props.intl.formatMessage(My.error),{error:e.error}),this.setState({loading:!1})},e.readAsArrayBuffer(this.state.file)}render(){return o.a.createElement(o.a.Fragment,null,o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"Select a font file from your computer:",id:"tw.fonts.custom.file"})),o.a.createElement("input",{type:"file",onChange:this.handleChangeFile,className:ny.a.fileInput,accept:Py.map(e=>".".concat(e)).join(","),readOnly:this.state.loading}),this.state.file&&o.a.createElement(o.a.Fragment,null,o.a.createElement("p",null,o.a.createElement(m.b,{defaultMessage:"Give the font a name:",id:"tw.fonts.custom.name"})),o.a.createElement(by,{name:this.state.name,onChange:this.handleChangeName,fontManager:this.props.fontManager}),o.a.createElement(jy,{url:this.state.url},e=>o.a.createElement(wy,{family:"".concat(e,", ").concat(this.state.fallback)})),o.a.createElement(ky,{fallback:this.state.fallback,onChange:this.handleChangeFallback})),o.a.createElement(Ey,{onClick:this.handleFinish,disabled:!this.state.file||!this.state.name||this.state.loading}))}}Iy.propTypes={intl:m.i,fontManager:i.a.shape({addCustomFont:i.a.func,runtime:i.a.shape({storage:i.a.any})}),onClose:i.a.func.isRequired};var Dy=Object(m.h)(Iy);const Ay=Object(m.g)({title:{id:"tw.fonts.title",defaultMessage:"Fonts"}}),By=e=>o.a.createElement(St,{className:ny.a.modalContent,onRequestClose:e.onClose,contentLabel:e.intl.formatMessage(Ay.title),id:"fontModal"},o.a.createElement("div",{className:ny.a.body},""===e.screen?o.a.createElement("div",{className:ny.a.openButtons},o.a.createElement("button",{className:ny.a.openButton,onClick:e.onOpenSystemFonts},o.a.createElement("img",{className:qe()(ny.a.openButtonImage,ny.a.systemImage)}),o.a.createElement("div",{className:ny.a.openButtonText},o.a.createElement("div",{className:ny.a.openButtonTextMain},o.a.createElement(m.b,{defaultMessage:"Add a system font",id:"tw.fonts.system1"})),o.a.createElement("div",{className:ny.a.openButtonTextSub},o.a.createElement(m.b,{defaultMessage:"May work in Scratch, but will not appear correctly for everyone.",id:"tw.fonts.system2"})))),o.a.createElement("button",{className:ny.a.openButton,onClick:e.onOpenCustomFonts},o.a.createElement("img",{className:qe()(ny.a.openButtonImage,ny.a.customImage)}),o.a.createElement("div",{className:ny.a.openButtonText},o.a.createElement("div",{className:ny.a.openButtonTextMain},o.a.createElement(m.b,{defaultMessage:"Add font from a file",id:"tw.fonts.custom1"})),o.a.createElement("div",{className:ny.a.openButtonTextSub},o.a.createElement(m.b,{defaultMessage:"Usually will not work in Scratch. Supported formats: {formats}.",id:"tw.fonts.custom2",values:{formats:Object.values(Py).map(e=>".".concat(e)).join(", ")}}))))):"system"===e.screen?o.a.createElement(Cy,{fontManager:e.fontManager,onClose:e.onClose}):"custom"===e.screen?o.a.createElement(Dy,{fontManager:e.fontManager,onClose:e.onClose}):null,""===e.screen&&o.a.createElement("div",{className:ny.a.fontsOuter},o.a.createElement("p",null,e.fonts.length?o.a.createElement(m.b,{defaultMessage:"Installed fonts:",id:"tw.fonts.list"}):o.a.createElement(m.b,{defaultMessage:"No fonts added yet.",id:"tw.fonts.none"})),e.fonts.length>0&&o.a.createElement("div",{className:ny.a.fonts},e.fonts.map((t,n)=>o.a.createElement(cy,{key:n,system:t.system,name:t.name,family:t.family,data:t.data,format:t.format,index:n,fontManager:e.fontManager}))))));By.propTypes={intl:m.i,onClose:i.a.func.isRequired,fonts:i.a.arrayOf(i.a.shape({system:i.a.bool.isRequired,name:i.a.string.isRequired,family:i.a.string.isRequired,data:i.a.instanceOf(Uint8Array),format:i.a.string}).isRequired).isRequired,fontManager:i.a.shape({}),screen:i.a.oneOf(["","system","custom"]),onOpenSystemFonts:i.a.func.isRequired,onOpenCustomFonts:i.a.func.isRequired};var Ny=Object(m.h)(By);class Ly extends o.a.Component{constructor(e){super(e),F()(this,["handleClose","handleCustomFontsChanged","handleCancelAddFont","handleOpenSystemFonts","handleOpenLibaryFonts","handleOpenCustomFonts"]),this.state={fonts:this.props.vm.runtime.fontManager.getFonts(),screen:""}}componentDidMount(){this.props.vm.runtime.fontManager.on("change",this.handleCustomFontsChanged)}componentWillUnmount(){this.props.vm.runtime.fontManager.off("change",this.handleCustomFontsChanged)}handleClose(){this.state.screen?this.setState({screen:""}):this.props.onClose()}handleCustomFontsChanged(){this.setState({fonts:this.props.vm.runtime.fontManager.getFonts()})}handleCancelAddFont(){this.setState({screen:""})}handleOpenSystemFonts(){this.setState({screen:"system"})}handleOpenLibaryFonts(){this.setState({screen:"library"})}handleOpenCustomFonts(){this.setState({screen:"custom"})}render(){return o.a.createElement(Ny,{onClose:this.handleClose,screen:this.state.screen,fonts:this.state.fonts,fontManager:this.props.vm.runtime.fontManager,onCancelAddFont:this.handleCancelAddFont,onOpenSystemFonts:this.handleOpenSystemFonts,onOpenLibraryFonts:this.handleOpenLibaryFonts,onOpenCustomFonts:this.handleOpenCustomFonts})}}Ly.propTypes={onClose:i.a.func.isRequired,vm:i.a.shape({runtime:i.a.shape({fontManager:i.a.shape({getFonts:i.a.func,addSystemFont:i.a.func,on:i.a.func,off:i.a.func})})})};var zy=Object(l.b)(e=>({vm:e.scratchGui.vm}),e=>({onClose:()=>e(Object(f.f)())}))(Ly),Uy=n(106),qy=n(60),Wy=n.n(qy),Hy=n(876),Gy=n.n(Hy),Vy=n(877),Ky=n.n(Vy),Xy=n(878),Qy=n.n(Xy),Yy=n(879),Jy=n.n(Yy);const Zy=["accountNavOpen","activeTabIndex","alertsVisible","authorId","authorThumbnailUrl","authorUsername","basePath","backdropLibraryVisible","backpackHost","backpackVisible","blocksTabVisible","cardsVisible","canChangeLanguage","canCreateNew","canEditTitle","canManageFiles","canRemix","canSave","canCreateCopy","canShare","canUseCloud","children","connectionModalVisible","costumeLibraryVisible","costumesTabVisible","customStageSize","enableCommunity","intl","isCreating","isDark","isEmbedded","isFullScreen","isPlayerOnly","isRtl","isShared","isWindowFullScreen","isTelemetryEnabled","loading","logo","renderLogin","onClickAbout","onClickAccountNav","onCloseAccountNav","onClickAddonSettings","onClickNewWindow","onClickTheme","onClickPackager","onLogOut","onOpenRegistration","onToggleLoginOpen","onActivateCostumesTab","onActivateSoundsTab","onActivateTab","onClickLogo","onExtensionButtonClick","onProjectTelemetryEvent","onRequestCloseBackdropLibrary","onRequestCloseCostumeLibrary","onRequestCloseTelemetryModal","onSeeCommunity","onShare","onShowPrivacyPolicy","onStartSelectingFileUpload","onTelemetryModalCancel","onTelemetryModalOptIn","onTelemetryModalOptOut","showComingSoon","soundsTabVisible","stageSizeMode","targetIsStage","telemetryModalVisible","tipsLibraryVisible","usernameModalVisible","settingsModalVisible","customExtensionModalVisible","fontsModalVisible","vm"];function $y(){return($y=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const t_=Object(m.g)({addExtension:{id:"gui.gui.addExtension",defaultMessage:"Add Extension"}}),n_=(()=>{const e=new URLSearchParams(location.search);return e.has("fullscreen-background")?e.get("fullscreen-background"):window.matchMedia("(prefers-color-scheme: dark)").matches?"#111":"white"})(),a_=e=>{const t=v()(e,"dispatch"),{accountNavOpen:n,activeTabIndex:a,alertsVisible:r,authorId:i,authorThumbnailUrl:s,authorUsername:l,basePath:c,backdropLibraryVisible:d,backpackHost:u,backpackVisible:p,blocksTabVisible:h,cardsVisible:g,canChangeLanguage:b,canCreateNew:f,canEditTitle:w,canManageFiles:y,canRemix:_,canSave:k,canCreateCopy:S,canShare:E,canUseCloud:x,children:C,connectionModalVisible:O,costumeLibraryVisible:F,costumesTabVisible:j,customStageSize:M,enableCommunity:P,intl:T,isCreating:R,isDark:I,isEmbedded:D,isFullScreen:A,isPlayerOnly:B,isRtl:N,isShared:L,isWindowFullScreen:z,isTelemetryEnabled:U,loading:q,logo:W,renderLogin:H,onClickAbout:G,onClickAccountNav:V,onCloseAccountNav:K,onClickAddonSettings:X,onClickNewWindow:Q,onClickTheme:Y,onClickPackager:J,onLogOut:Z,onOpenRegistration:$,onToggleLoginOpen:ee,onActivateCostumesTab:te,onActivateSoundsTab:ne,onActivateTab:ae,onClickLogo:oe,onExtensionButtonClick:re,onProjectTelemetryEvent:ie,onRequestCloseBackdropLibrary:se,onRequestCloseCostumeLibrary:le,onRequestCloseTelemetryModal:ce,onSeeCommunity:de,onShare:ue,onShowPrivacyPolicy:pe,onStartSelectingFileUpload:me,onTelemetryModalCancel:he,onTelemetryModalOptIn:ge,onTelemetryModalOptOut:be,showComingSoon:fe,soundsTabVisible:we,stageSizeMode:ve,targetIsStage:ye,telemetryModalVisible:_e,tipsLibraryVisible:ke,usernameModalVisible:Se,settingsModalVisible:Ee,customExtensionModalVisible:xe,fontsModalVisible:Ce,vm:Oe}=t,Fe=e_(t,Zy);if(C)return o.a.createElement(at.a,Fe,C);const je={tabs:Wy.a.tabs,tab:qe()(Ke.a.reactTabsTab,Wy.a.tab),tabList:qe()(Ke.a.reactTabsTabList,Wy.a.tabList),tabPanel:qe()(Ke.a.reactTabsTabPanel,Wy.a.tabPanel),tabPanelSelected:qe()(Ke.a.reactTabsTabPanelSelected,Wy.a.isSelected),tabSelected:qe()(Ke.a.reactTabsTabSelected,Wy.a.isSelected)},Me=Oa.e.fullSizeMinWidth+Math.max(0,M.width-Oa.e.referenceWidth);return o.a.createElement(He.a,{minWidth:Me},e=>{const t=((e,t)=>e===Oa.d.small?Oa.c.small:t?Oa.c.large:Oa.c.largeConstrained)(ve,e),v=o.a.createElement(o.a.Fragment,null,o.a.createElement(hv,null),o.a.createElement(ey,null),Se&&o.a.createElement(Mf,null),Ee&&o.a.createElement(mw,null),xe&&o.a.createElement(xv,null),Ce&&o.a.createElement(zy,null));return B?o.a.createElement(o.a.Fragment,null,z?o.a.createElement("div",{className:Wy.a.fullscreenBackground,style:{backgroundColor:n_}}):null,o.a.createElement(Kh,{isFullScreen:A,isEmbedded:D,isRendererSupported:Object(Uy.c)(),isRtl:N,loading:q,stageSize:Oa.d.large,vm:Oe},r?o.a.createElement(_b,{className:Wy.a.alertsContainer}):null),v):o.a.createElement(at.a,$y({className:Wy.a.pageWrapper,dir:N?"rtl":"ltr"},Fe),v,_e?o.a.createElement(kf,{isRtl:N,isTelemetryEnabled:U,onCancel:he,onOptIn:ge,onOptOut:be,onRequestClose:ce,onShowPrivacyPolicy:pe}):null,q?o.a.createElement(Uh,{isFullScreen:!0}):null,R?o.a.createElement(Uh,{isFullScreen:!0,messageId:"gui.loader.creating"}):null,Object(Uy.a)()?null:o.a.createElement(Eg.a,{isRtl:N}),ke?o.a.createElement(Fg,null):null,g?o.a.createElement(ib,null):null,r?o.a.createElement(_b,{className:Wy.a.alertsContainer}):null,O?o.a.createElement(bf,{vm:Oe}):null,F?o.a.createElement(Jh,{vm:Oe,onRequestClose:le}):null,d?o.a.createElement(tg,{vm:Oe,onRequestClose:se}):null,o.a.createElement(Xh.a,{accountNavOpen:n,authorId:i,authorThumbnailUrl:s,authorUsername:l,canChangeLanguage:b,canCreateCopy:S,canCreateNew:f,canEditTitle:w,canManageFiles:y,canRemix:_,canSave:k,canShare:E,className:Wy.a.menuBarPosition,enableCommunity:P,isShared:L,logo:W,renderLogin:H,showComingSoon:fe,onClickAbout:G,onClickAccountNav:V,onClickAddonSettings:X,onClickNewWindow:Q,onClickTheme:Y,onClickPackager:J,onClickLogo:oe,onCloseAccountNav:K,onLogOut:Z,onOpenRegistration:$,onProjectTelemetryEvent:ie,onSeeCommunity:de,onShare:ue,onStartSelectingFileUpload:me,onToggleLoginOpen:ee}),o.a.createElement(at.a,{className:Wy.a.bodyWrapper},o.a.createElement(at.a,{className:Wy.a.flexWrapper},o.a.createElement(at.a,{className:Wy.a.editorWrapper},o.a.createElement(Ge.d,{forceRenderTabPanel:!0,className:je.tabs,selectedIndex:a,selectedTabClassName:je.tabSelected,selectedTabPanelClassName:je.tabPanelSelected,onSelect:ae},o.a.createElement(Ge.b,{className:je.tabList},o.a.createElement(Ge.a,{className:je.tab},o.a.createElement("img",{draggable:!1,src:Ky.a}),o.a.createElement(m.b,{defaultMessage:"Code",id:"gui.gui.codeTab"})),o.a.createElement(Ge.a,{className:je.tab,onClick:te},o.a.createElement("img",{draggable:!1,src:Qy.a}),ye?o.a.createElement(m.b,{defaultMessage:"Backdrops",id:"gui.gui.backdropsTab"}):o.a.createElement(m.b,{defaultMessage:"Costumes",id:"gui.gui.costumesTab"})),o.a.createElement(Ge.a,{className:je.tab,onClick:ne},o.a.createElement("img",{draggable:!1,src:Jy.a}),o.a.createElement(m.b,{defaultMessage:"Sounds",id:"gui.gui.soundsTab"}))),o.a.createElement(Ge.c,{className:je.tabPanel},o.a.createElement(at.a,{className:Wy.a.blocksWrapper},o.a.createElement(eo,{canUseCloud:x,grow:1,isVisible:h,options:{media:"".concat(c,"static/blocks-media/")},stageSize:t,vm:Oe})),o.a.createElement(at.a,{className:Wy.a.extensionButtonContainer},o.a.createElement("button",{className:Wy.a.extensionButton,title:T.formatMessage(t_.addExtension),onClick:re},o.a.createElement("img",{className:Wy.a.extensionButtonIcon,draggable:!1,src:Gy.a}))),o.a.createElement(at.a,{className:Wy.a.watermark},o.a.createElement(lg,null))),o.a.createElement(Ge.c,{className:je.tabPanel},j?o.a.createElement(Xr,{vm:Oe,isDark:I}):null),o.a.createElement(Ge.c,{className:je.tabPanel},we?o.a.createElement(pu,{vm:Oe}):null)),p?o.a.createElement(Sg,{host:u}):null),o.a.createElement(at.a,{className:qe()(Wy.a.stageAndTargetWrapper,Wy.a[t])},o.a.createElement(Kh,{isFullScreen:A,isRendererSupported:Object(Uy.c)(),isRtl:N,stageSize:t,vm:Oe}),o.a.createElement(at.a,{className:Wy.a.targetWrapper},o.a.createElement(Sl,{stageSize:t,vm:Oe}))))),o.a.createElement(Cb,null))})};a_.propTypes={accountNavOpen:i.a.bool,activeTabIndex:i.a.number,authorId:i.a.oneOfType([i.a.string,i.a.bool]),authorThumbnailUrl:i.a.string,authorUsername:i.a.oneOfType([i.a.string,i.a.bool]),backdropLibraryVisible:i.a.bool,backpackHost:i.a.string,backpackVisible:i.a.bool,basePath:i.a.string,blocksTabVisible:i.a.bool,canChangeLanguage:i.a.bool,canCreateCopy:i.a.bool,canCreateNew:i.a.bool,canEditTitle:i.a.bool,canManageFiles:i.a.bool,canRemix:i.a.bool,canSave:i.a.bool,canShare:i.a.bool,canUseCloud:i.a.bool,cardsVisible:i.a.bool,children:i.a.node,costumeLibraryVisible:i.a.bool,costumesTabVisible:i.a.bool,customStageSize:i.a.shape({width:i.a.number,height:i.a.number}),enableCommunity:i.a.bool,intl:m.i.isRequired,isCreating:i.a.bool,isDark:i.a.bool,isEmbedded:i.a.bool,isFullScreen:i.a.bool,isPlayerOnly:i.a.bool,isRtl:i.a.bool,isShared:i.a.bool,isWindowFullScreen:i.a.bool,loading:i.a.bool,logo:i.a.string,onActivateCostumesTab:i.a.func,onActivateSoundsTab:i.a.func,onActivateTab:i.a.func,onClickAccountNav:i.a.func,onClickAddonSettings:i.a.func,onClickNewWindow:i.a.func,onClickTheme:i.a.func,onClickPackager:i.a.func,onClickLogo:i.a.func,onCloseAccountNav:i.a.func,onExtensionButtonClick:i.a.func,onLogOut:i.a.func,onOpenRegistration:i.a.func,onRequestCloseBackdropLibrary:i.a.func,onRequestCloseCostumeLibrary:i.a.func,onRequestCloseTelemetryModal:i.a.func,onSeeCommunity:i.a.func,onShare:i.a.func,onShowPrivacyPolicy:i.a.func,onStartSelectingFileUpload:i.a.func,onTabSelect:i.a.func,onTelemetryModalCancel:i.a.func,onTelemetryModalOptIn:i.a.func,onTelemetryModalOptOut:i.a.func,onToggleLoginOpen:i.a.func,renderLogin:i.a.func,showComingSoon:i.a.bool,soundsTabVisible:i.a.bool,stageSizeMode:i.a.oneOf(Object.keys(Oa.d)),targetIsStage:i.a.bool,telemetryModalVisible:i.a.bool,tipsLibraryVisible:i.a.bool,usernameModalVisible:i.a.bool,settingsModalVisible:i.a.bool,customExtensionModalVisible:i.a.bool,fontsModalVisible:i.a.bool,vm:i.a.instanceOf(p.a).isRequired},a_.defaultProps={backpackHost:null,backpackVisible:!1,basePath:"./",canChangeLanguage:!0,canCreateNew:!1,canEditTitle:!1,canManageFiles:!0,canRemix:!1,canSave:!1,canCreateCopy:!1,canShare:!1,canUseCloud:!1,enableCommunity:!1,isCreating:!1,isShared:!1,loading:!1,showComingSoon:!1,stageSizeMode:Oa.d.large};var o_=Object(m.h)(Object(l.b)(e=>({customStageSize:e.scratchGui.customStageSize,isWindowFullScreen:e.scratchGui.tw.isWindowFullScreen,stageSizeMode:e.scratchGui.stageSize.stageSize}))(a_));const r_=["assetHost","cloudHost","error","isError","isScratchDesktop","isShowingProject","onProjectLoaded","onStorageInit","onUpdateProjectId","onVmInit","projectHost","projectId","children","fetchingProject","isLoading","loadingStateVisible"];function i_(){return(i_=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class l_ extends o.a.Component{componentDidMount(){Object(Bh.d)(this.props.isScratchDesktop),this.props.onStorageInit(P.a),this.props.onVmInit(this.props.vm)}componentDidUpdate(e){this.props.projectId!==e.projectId&&null!==this.props.projectId&&this.props.onUpdateProjectId(this.props.projectId),this.props.isShowingProject&&!e.isShowingProject&&this.props.onProjectLoaded()}render(){if(this.props.isError)throw this.props.error;const e=this.props,{assetHost:t,cloudHost:n,error:a,isError:r,isScratchDesktop:i,isShowingProject:s,onProjectLoaded:l,onStorageInit:c,onUpdateProjectId:d,onVmInit:u,projectHost:p,projectId:m,children:h,fetchingProject:g,isLoading:b,loadingStateVisible:f}=e,w=s_(e,r_);return o.a.createElement(o_,i_({loading:g||b||f},w),h)}}l_.propTypes={assetHost:i.a.string,children:i.a.node,cloudHost:i.a.string,error:i.a.oneOfType([i.a.object,i.a.string]),fetchingProject:i.a.bool,intl:m.i,isError:i.a.bool,isEmbedded:i.a.bool,isFullScreen:i.a.bool,isLoading:i.a.bool,isScratchDesktop:i.a.bool,isShowingProject:i.a.bool,loadingStateVisible:i.a.bool,onProjectLoaded:i.a.func,onSeeCommunity:i.a.func,onStorageInit:i.a.func,onUpdateProjectId:i.a.func,onVmInit:i.a.func,projectHost:i.a.string,projectId:i.a.oneOfType([i.a.string,i.a.number]),telemetryModalVisible:i.a.bool,vm:i.a.instanceOf(p.a).isRequired},l_.defaultProps={isScratchDesktop:!1,onStorageInit:e=>e.addOfficialScratchWebStores(),onProjectLoaded:()=>{},onUpdateProjectId:()=>{},onVmInit:()=>{}};const c_=Object(m.h)(Object(l.b)(e=>{const t=e.scratchGui.projectState.loadingState;return{activeTabIndex:e.scratchGui.editorTab.activeTabIndex,alertsVisible:e.scratchGui.alerts.visible,backdropLibraryVisible:e.scratchGui.modals.backdropLibrary,blocksTabVisible:e.scratchGui.editorTab.activeTabIndex===b.a,cardsVisible:e.scratchGui.cards.visible,connectionModalVisible:e.scratchGui.modals.connectionModal,costumeLibraryVisible:e.scratchGui.modals.costumeLibrary,costumesTabVisible:e.scratchGui.editorTab.activeTabIndex===b.b,error:e.scratchGui.projectState.error,isError:Object(g.k)(t),isEmbedded:e.scratchGui.mode.isEmbedded,isFullScreen:e.scratchGui.mode.isFullScreen||e.scratchGui.mode.isEmbedded,isPlayerOnly:e.scratchGui.mode.isPlayerOnly,isRtl:e.locales.isRtl,isShowingProject:Object(g.r)(t),loadingStateVisible:e.scratchGui.modals.loadingProject,projectId:e.scratchGui.projectState.projectId,soundsTabVisible:e.scratchGui.editorTab.activeTabIndex===b.c,targetIsStage:e.scratchGui.targets.stage&&e.scratchGui.targets.stage.id===e.scratchGui.targets.editingTarget,telemetryModalVisible:e.scratchGui.modals.telemetryModal,tipsLibraryVisible:e.scratchGui.modals.tipsLibrary,usernameModalVisible:e.scratchGui.modals.usernameModal,settingsModalVisible:e.scratchGui.modals.settingsModal,customExtensionModalVisible:e.scratchGui.modals.customExtensionModal,fontsModalVisible:e.scratchGui.modals.fontsModal,vm:e.scratchGui.vm}},e=>({onExtensionButtonClick:()=>e(Object(f.v)()),onActivateTab:t=>e(Object(b.d)(t)),onActivateCostumesTab:()=>e(Object(b.d)(b.b)),onActivateSoundsTab:()=>e(Object(b.d)(b.c)),onRequestCloseBackdropLibrary:()=>e(Object(f.a)()),onRequestCloseCostumeLibrary:()=>e(Object(f.c)()),onRequestCloseTelemetryModal:()=>e(Object(f.m)())}))(l_)),d_=Object(s.d)(x,Object(h.a)("Top Level App"),(function(e){class t extends o.a.Component{componentDidMount(){this.props.fontsLoaded||Object(_.loadFonts)().then(()=>this.props.onSetFontsLoaded())}render(){const t=v()(this.props,["onSetFontsLoaded"]);return o.a.createElement(e,t)}}t.propTypes={fontsLoaded:i.a.bool.isRequired,onSetFontsLoaded:i.a.func.isRequired};return Object(l.b)(e=>({fontsLoaded:e.scratchGui.fontsLoaded}),e=>({onSetFontsLoaded:()=>e(Object(y.c)())}))(t)}),(function(e){class t extends o.a.Component{constructor(e){super(e),F()(this,["fetchProject"]),P.a.setProjectHost(e.projectHost),P.a.setProjectToken(e.projectToken),P.a.setAssetHost(e.assetHost),P.a.setTranslatorFunction(e.intl.formatMessage),""!==e.projectId&&null!==e.projectId&&void 0!==e.projectId&&this.props.setProjectId(e.projectId.toString())}componentDidUpdate(e){e.projectHost!==this.props.projectHost&&P.a.setProjectHost(this.props.projectHost),e.projectToken!==this.props.projectToken&&P.a.setProjectToken(this.props.projectToken),e.assetHost!==this.props.assetHost&&P.a.setAssetHost(this.props.assetHost),this.props.isFetchingWithId&&!e.isFetchingWithId&&this.fetchProject(this.props.reduxProjectId,this.props.loadingState),this.props.isShowingProject&&!e.isShowingProject&&this.props.onProjectUnchanged(),this.props.isShowingProject&&(e.isLoadingProject||e.isCreatingNew)&&this.props.onActivateTab(b.a)}fetchProject(e,t){let n;this.props.vm.clear(),this.props.vm.stop();let a="undefined"==typeof URLSearchParams?null:new URLSearchParams(location.search).get("project_url");return a?(a.startsWith("http:")||a.startsWith("https:")||(a="https://".concat(a)),n=W(a).then(e=>{if(!e.ok)throw new Error("Request returned status ".concat(e.status));return e.arrayBuffer()}).then(e=>({data:e}))):n=(async e=>{if("0"===e)return null;const t=new URLSearchParams(location.search);if(t.has("token"))return t.get("token");const n=new URLSearchParams(location.hash.split("?")[1]);if(n.has("token"))return n.get("token");try{return(await Object(V.b)(e)).project_token}catch(e){throw M.default.error(e),new Error("Cannot access project token. Project is probably unshared. See https://docs.turbowarp.org/unshared-projects")}})(e).then(t=>(P.a.setProjectToken(t),P.a.load(P.a.AssetType.Project,e,P.a.DataFormat.JSON))),n.then(e=>{if(e&&e.data){const t=e.data[0];if("<"===t||t==="<".charCodeAt(0))return P.a.load(P.a.AssetType.Project,T.a,P.a.DataFormat.JSON)}return e}).then(e=>{if(!e)throw new Error("Could not find project");this.props.onFetchedProjectData(e.data,t)}).catch(e=>{this.props.onError(e),M.default.error(e)})}render(){const t=this.props,{assetHost:n,intl:a,isLoadingProject:r,loadingState:i,onActivateTab:s,onError:l,onFetchedProjectData:c,onProjectUnchanged:d,projectHost:u,projectId:p,reduxProjectId:m,setProjectId:h,isFetchingWithId:g}=t,b=Q(t,K);return o.a.createElement(e,X({fetchingProject:g},b))}}t.propTypes={assetHost:i.a.string,canSave:i.a.bool,intl:m.i.isRequired,isCreatingNew:i.a.bool,isFetchingWithId:i.a.bool,isLoadingProject:i.a.bool,isShowingProject:i.a.bool,loadingState:i.a.oneOf(g.a),onActivateTab:i.a.func,onError:i.a.func,onFetchedProjectData:i.a.func,onProjectUnchanged:i.a.func,projectHost:i.a.string,projectToken:i.a.string,projectId:i.a.oneOfType([i.a.string,i.a.number]),reduxProjectId:i.a.oneOfType([i.a.string,i.a.number]),setProjectId:i.a.func,vm:i.a.instanceOf(p.a)},t.defaultProps={assetHost:"https://assets.scratch.mit.edu",projectHost:"https://projects.scratch.mit.edu"};return Object(m.h)(Object(l.b)(e=>({isCreatingNew:Object(g.j)(e.scratchGui.projectState.loadingState),isFetchingWithId:Object(g.l)(e.scratchGui.projectState.loadingState),isLoadingProject:Object(g.m)(e.scratchGui.projectState.loadingState),isShowingProject:Object(g.r)(e.scratchGui.projectState.loadingState),loadingState:e.scratchGui.projectState.loadingState,reduxProjectId:e.scratchGui.projectState.projectId,vm:e.scratchGui.vm}),e=>({onActivateTab:t=>e(Object(b.d)(t)),onError:t=>e(Object(g.y)(t)),onFetchedProjectData:(t,n)=>e(Object(g.w)(t,n)),setProjectId:t=>e(Object(g.E)(t)),onProjectUnchanged:()=>e(Object(j.d)())}),(e,t,n)=>Object.assign({},e,t,n))(t))}),(function(e){class t extends o.a.Component{componentDidMount(){this.handleReceivedProjectTitle(this.props.projectTitle)}componentDidUpdate(e){if(this.props.projectTitle!==e.projectTitle&&this.handleReceivedProjectTitle(this.props.projectTitle),this.props.isShowingWithoutId&&e.isAnyCreatingNewState){const e=this.handleReceivedProjectTitle();this.props.onUpdateProjectTitle(e,!0)}if(this.props.reduxProjectTitle!==e.reduxProjectTitle&&this.props.reduxProjectTitle!==this.props.projectTitle){const e=this.props.intl.formatMessage($.defaultProjectTitle);this.props.onUpdateProjectTitle(this.props.reduxProjectTitle,this.props.reduxProjectTitle===e)}}handleReceivedProjectTitle(e){let t=e,n=!1;return null==t&&(t=this.props.intl.formatMessage($.defaultProjectTitle),n=!0),this.props.onChangedProjectTitle(t,n),t}render(){const t=this.props,{intl:n,isAnyCreatingNewState:a,isShowingWithoutId:r,onChangedProjectTitle:i,onUpdateProjectTitle:s,projectTitle:l,reduxProjectTitle:c}=t,d=Z(t,J);return o.a.createElement(e,d)}}t.propTypes={intl:m.i,isAnyCreatingNewState:i.a.bool,isShowingWithoutId:i.a.bool,onChangedProjectTitle:i.a.func,onUpdateProjectTitle:i.a.func,projectTitle:i.a.string,reduxProjectTitle:i.a.string},t.defaultProps={onUpdateProjectTitle:()=>{}};return Object(m.h)(Object(l.b)(e=>{const t=e.scratchGui.projectState.loadingState;return{isAnyCreatingNewState:Object(g.h)(t),isShowingWithoutId:Object(g.t)(t),reduxProjectTitle:e.scratchGui.projectTitle}},e=>({onChangedProjectTitle:t=>e(Object(Y.c)(t))}))(t))}),(function(e){class t extends o.a.Component{constructor(e){super(e),F()(this,["getProjectThumbnail","leavePageConfirm","tryToAutoSave"])}componentWillMount(){"object"==typeof window&&(window.onbeforeunload=e=>this.leavePageConfirm(e)),this.props.onSetProjectThumbnailer(this.getProjectThumbnail),this.props.onSetProjectSaver(this.tryToAutoSave)}componentDidUpdate(e){if(!this.props.isAnyCreatingNewState&&e.isAnyCreatingNewState&&this.reportTelemetryEvent("projectWasCreated"),!this.props.isLoading&&e.isLoading&&this.reportTelemetryEvent("projectDidLoad"),this.props.projectChanged&&!e.projectChanged&&this.scheduleAutoSave(),this.props.isUpdating&&!e.isUpdating&&this.updateProjectToStorage(),this.props.isCreatingNew&&!e.isCreatingNew&&this.createNewProjectToStorage(),this.props.isCreatingCopy&&!e.isCreatingCopy&&this.createCopyToStorage(),this.props.isRemixing&&!e.isRemixing?(this.props.onRemixing(!0),this.createRemixToStorage()):!this.props.isRemixing&&e.isRemixing&&this.props.onRemixing(!1),e.isCreatingNew)return;if(this.isShowingCreatable(this.props)&&!this.isShowingCreatable(e)&&this.props.onCreateProject(),e.isUpdating)return;const t=this.props.canSave&&!e.canSave,n=this.props.isShared&&!e.isShared;this.props.isShowingSaveable&&(t||n)&&this.props.onAutoUpdateProject()}componentWillUnmount(){this.clearAutoSaveTimeout(),this.props.onSetProjectThumbnailer(null),this.props.onSetProjectSaver(null)}leavePageConfirm(e){if(this.props.projectChanged)return(e||window.event).returnValue=!0,!0}clearAutoSaveTimeout(){null!==this.props.autoSaveTimeoutId&&(clearTimeout(this.props.autoSaveTimeoutId),this.props.setAutoSaveTimeoutId(null))}scheduleAutoSave(){if(this.props.isShowingSaveable&&null===this.props.autoSaveTimeoutId){const e=setTimeout(this.tryToAutoSave,1e3*this.props.autoSaveIntervalSecs);this.props.setAutoSaveTimeoutId(e)}}tryToAutoSave(){this.props.projectChanged&&this.props.isShowingSaveable&&this.props.onAutoUpdateProject()}isShowingCreatable(e){return e.canCreateNew&&e.isShowingWithoutId}updateProjectToStorage(){return this.props.onShowSavingAlert(),this.storeProject(this.props.reduxProjectId).then(()=>{this.props.onUpdatedProject(this.props.loadingState),this.props.onShowSaveSuccessAlert()}).catch(e=>{this.props.onShowAlert("savingError"),this.props.onProjectError(e)})}createNewProjectToStorage(){return this.storeProject(null).then(e=>{this.props.onCreatedProject(e.id.toString(),this.props.loadingState)}).catch(e=>{this.props.onShowAlert("creatingError"),this.props.onProjectError(e)})}createCopyToStorage(){return this.props.onShowCreatingCopyAlert(),this.storeProject(null,{originalId:this.props.reduxProjectId,isCopy:1,title:this.props.reduxProjectTitle}).then(e=>{this.props.onCreatedProject(e.id.toString(),this.props.loadingState),this.props.onShowCopySuccessAlert()}).catch(e=>{this.props.onShowAlert("creatingError"),this.props.onProjectError(e)})}createRemixToStorage(){return this.props.onShowCreatingRemixAlert(),this.storeProject(null,{originalId:this.props.reduxProjectId,isRemix:1,title:this.props.reduxProjectTitle}).then(e=>{this.props.onCreatedProject(e.id.toString(),this.props.loadingState),this.props.onShowRemixSuccessAlert()}).catch(e=>{this.props.onShowAlert("creatingError"),this.props.onProjectError(e)})}storeProject(e,t){t=t||{},this.clearAutoSaveTimeout();const n=this.props.vm.toJSON();return Promise.all(this.props.vm.assets.filter(e=>!e.clean).map(e=>P.a.store(e.assetType,e.dataFormat,e.data,e.assetId).then(t=>{if("ok"!==t.status)return Promise.reject(t.code);e.clean=!0}))).then(()=>this.props.onUpdateProjectData(e,n,t)).then(e=>{this.props.onSetProjectUnchanged();const t=e.id.toString();return t&&this.props.onUpdateProjectThumbnail&&this.storeProjectThumbnail(t),this.reportTelemetryEvent("projectDidSave"),e}).catch(e=>{throw M.default.error(e),e})}storeProjectThumbnail(e){try{this.getProjectThumbnail(t=>{this.props.onUpdateProjectThumbnail(e,Object(te.a)(t))})}catch(e){M.default.error("Project thumbnail save error",e)}}getProjectThumbnail(e){this.props.vm.postIOData("video",{forceTransparentPreview:!0}),this.props.vm.renderer.requestSnapshot(t=>{this.props.vm.postIOData("video",{forceTransparentPreview:!1}),e(t)}),this.props.vm.renderer.draw()}reportTelemetryEvent(e){try{if(this.props.onProjectTelemetryEvent){const t=Object(ee.a)(this.props.vm,this.props.reduxProjectTitle,this.props.locale);this.props.onProjectTelemetryEvent(e,t)}}catch(t){M.default.error("Telemetry error",e,t)}}render(){const t=this.props,{autoSaveTimeoutId:n,autoSaveIntervalSecs:a,isCreatingCopy:r,isCreatingNew:i,projectChanged:s,isAnyCreatingNewState:l,isLoading:c,isManualUpdating:d,isRemixing:u,isShowingSaveable:p,isShowingWithId:m,isShowingWithoutId:h,isUpdating:g,loadingState:b,onAutoUpdateProject:f,onCreatedProject:w,onCreateProject:v,onProjectError:y,onRemixing:_,onSetProjectUnchanged:k,onSetProjectThumbnailer:S,onSetProjectSaver:E,onShowAlert:x,onShowCopySuccessAlert:C,onShowRemixSuccessAlert:O,onShowCreatingCopyAlert:F,onShowCreatingRemixAlert:j,onShowSaveSuccessAlert:M,onShowSavingAlert:P,onUpdatedProject:T,onUpdateProjectData:R,onUpdateProjectThumbnail:I,reduxProjectId:D,reduxProjectTitle:A,setAutoSaveTimeoutId:B}=t,N=ue(t,ce);return o.a.createElement(e,de({isCreating:l},N))}}t.propTypes={autoSaveIntervalSecs:i.a.number.isRequired,autoSaveTimeoutId:i.a.number,canCreateNew:i.a.bool,canSave:i.a.bool,isAnyCreatingNewState:i.a.bool,isCreatingCopy:i.a.bool,isCreatingNew:i.a.bool,isLoading:i.a.bool,isManualUpdating:i.a.bool,isRemixing:i.a.bool,isShared:i.a.bool,isShowingSaveable:i.a.bool,isShowingWithId:i.a.bool,isShowingWithoutId:i.a.bool,isUpdating:i.a.bool,loadingState:i.a.oneOf(g.a),locale:i.a.string.isRequired,onAutoUpdateProject:i.a.func,onCreateProject:i.a.func,onCreatedProject:i.a.func,onProjectError:i.a.func,onProjectTelemetryEvent:i.a.func,onRemixing:i.a.func,onSetProjectSaver:i.a.func.isRequired,onSetProjectThumbnailer:i.a.func.isRequired,onSetProjectUnchanged:i.a.func.isRequired,onShowAlert:i.a.func,onShowCopySuccessAlert:i.a.func,onShowCreatingCopyAlert:i.a.func,onShowCreatingRemixAlert:i.a.func,onShowRemixSuccessAlert:i.a.func,onShowSaveSuccessAlert:i.a.func,onShowSavingAlert:i.a.func,onUpdateProjectData:i.a.func.isRequired,onUpdateProjectThumbnail:i.a.func,onUpdatedProject:i.a.func,projectChanged:i.a.bool,reduxProjectId:i.a.oneOfType([i.a.string,i.a.number]),reduxProjectTitle:i.a.string,setAutoSaveTimeoutId:i.a.func.isRequired,vm:i.a.instanceOf(p.a).isRequired},t.defaultProps={autoSaveIntervalSecs:120,onRemixing:()=>{},onSetProjectThumbnailer:()=>{},onSetProjectSaver:()=>{},onUpdateProjectData:ie};return Object(l.b)((e,t)=>{const n=e.scratchGui.projectState.loadingState,a=Object(g.s)(n);return{autoSaveTimeoutId:e.scratchGui.timeout.autoSaveTimeoutId,isAnyCreatingNewState:Object(g.h)(n),isLoading:Object(g.m)(n),isCreatingCopy:Object(g.i)(n),isCreatingNew:Object(g.j)(n),isRemixing:Object(g.q)(n),isShowingSaveable:t.canSave&&a,isShowingWithId:a,isShowingWithoutId:Object(g.t)(n),isUpdating:Object(g.u)(n),isManualUpdating:Object(g.p)(n),loadingState:n,locale:e.locales.locale,projectChanged:e.scratchGui.projectChanged,reduxProjectId:e.scratchGui.projectState.projectId,reduxProjectTitle:e.scratchGui.projectTitle,vm:e.scratchGui.vm}},e=>({onAutoUpdateProject:()=>e(Object(g.b)()),onCreatedProject:(t,n)=>e(Object(g.f)(t,n)),onCreateProject:()=>e(Object(g.c)()),onProjectError:t=>e(Object(g.y)(t)),onSetProjectUnchanged:()=>e(Object(j.d)()),onShowAlert:t=>e(Object(se.i)(t)),onShowCopySuccessAlert:()=>Object(se.g)(e,"createCopySuccess"),onShowRemixSuccessAlert:()=>Object(se.g)(e,"createRemixSuccess"),onShowCreatingCopyAlert:()=>Object(se.g)(e,"creatingCopy"),onShowCreatingRemixAlert:()=>Object(se.g)(e,"creatingRemix"),onShowSaveSuccessAlert:()=>Object(se.g)(e,"saveSuccess"),onShowSavingAlert:()=>Object(se.g)(e,"saving"),onUpdatedProject:t=>e(Object(g.g)(t)),setAutoSaveTimeoutId:t=>e(Object(le.b)(t))}),(e,t,n)=>Object.assign({},e,t,n))(t)}),xe,Pe,C.a,Ne,(function(e){class t extends o.a.Component{constructor(e){super(e),F()(this,["handleResize"])}componentDidMount(){window.addEventListener("resize",this.handleResize)}componentWillUnmount(){window.removeEventListener("resize",this.handleResize)}handleResize(){this.props.isFullScreen&&this.props.onSetDimensions([window.innerWidth,window.innerHeight])}render(){const t=this.props,{onSetDimensions:n,isFullScreen:a}=t,r=ze(t,Le);return o.a.createElement(e,r)}}t.propTypes={isFullScreen:i.a.bool,onSetDimensions:i.a.func};return Object(l.b)(e=>({isFullScreen:e.scratchGui.mode.isFullScreen||e.scratchGui.mode.isEmbedded}),e=>({onSetDimensions:t=>e(Object(ye.i)(t))}))(t)}))(c_);d_.setAppElement=d.a.setAppElement;var u_=d_;function p_(){return(p_=Object.assign||function(e){for(var t=1;to.a.createElement(u_,p_({cloudHost:m_,canSave:!1,basePath:"",canEditTitle:!0,enableCommunity:!0},e))},function(e,t,n){"use strict";var a=n(4),o=n.n(a),r=n(6),i=n(40),s=n(2),l=n(0),c=n.n(l),d=n(5),u=n.n(d),p=n(349),m=n.n(p),h=n(1),g=n.n(h),b=n(13),f=n.n(b),w=n(7),v=n(59),y=n(355),_=n.n(y),k=n(459),S=n.n(k);const E=({className:e,onClick:t})=>g.a.createElement(v.a,{className:o()(e,S.a.communityButton),iconClassName:S.a.communityButtonIcon,iconSrc:_.a,onClick:t},g.a.createElement(s.b,{defaultMessage:"See Project Page",id:"gui.menuBar.seeProjectPage"}));E.propTypes={className:c.a.string,onClick:c.a.func},E.defaultProps={onClick:()=>{}};var x=E,C=n(460),O=n.n(C);const F=({className:e,isShared:t,onClick:n})=>g.a.createElement(v.a,{className:o()(e,O.a.shareButton,{[O.a.shareButtonIsShared]:t}),onClick:n},t?g.a.createElement(s.b,{defaultMessage:"Shared",id:"gui.menuBar.isShared"}):g.a.createElement(s.b,{defaultMessage:"Share",id:"gui.menuBar.share"}));F.propTypes={className:c.a.string,isShared:c.a.bool,onClick:c.a.func},F.defaultProps={onClick:()=>{}};var j=F,M=n(291),P=n(347),T=n(201),R=n(36),I=n(107),D=n(851),A=n.n(D);const B=[],N=({currentLocale:e,label:t,onChange:n})=>g.a.createElement("select",{"aria-label":t,className:A.a.languageSelect,value:e,onChange:n},Object.keys(I.a).filter(e=>!B.includes(e)).map(e=>g.a.createElement("option",{key:e,value:e},I.a[e].name)));N.propTypes={currentLocale:c.a.string,label:c.a.string,onChange:c.a.func};var L=N;const z=["onChangeLanguage","messagesByLocale","children"];function U(){return(U=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class W extends g.a.Component{constructor(e){super(e),u()(this,["handleChange"]),document.documentElement.lang=e.currentLocale}handleChange(e){const t=e.target.value;this.props.messagesByLocale[t]&&(this.props.onChangeLanguage(t),document.documentElement.lang=t)}render(){const e=this.props,{onChangeLanguage:t,messagesByLocale:n,children:a}=e,o=q(e,z);return g.a.createElement(L,U({onChange:this.handleChange},o),a)}}W.propTypes={children:c.a.node,currentLocale:c.a.string.isRequired,messagesByLocale:c.a.object,onChangeLanguage:c.a.func.isRequired};var H=Object(r.b)(e=>({currentLocale:e.locales.locale,messagesByLocale:e.locales.messagesByLocale}),e=>({onChangeLanguage:t=>{e(Object(T.d)(t)),e(Object(R.h)())}}))(W),G=n(11);class V extends g.a.Component{constructor(e){super(e),u()(this,["waitForUpdate"]),this.state={waiting:!1}}componentDidUpdate(e){this.state.waiting&&this.props.isShowingWithId&&!e.isShowingWithId&&this.fulfill()}fulfill(){this.props.onDoneUpdating(),this.setState({waiting:!1})}waitForUpdate(e){e?this.setState({waiting:!0}):this.fulfill()}render(){return this.props.children(this.waitForUpdate)}}V.propTypes={children:c.a.func,isShowingWithId:c.a.bool,onDoneUpdating:c.a.func},V.defaultProps={onDoneUpdating:()=>{}};var K=Object(r.b)(e=>{const t=e.scratchGui.projectState.loadingState;return{isShowingWithId:Object(G.s)(t)}},()=>({}))(V),X=n(208),Q=n.n(X);const Y=({className:e="",children:t,componentRef:n,place:a="right"})=>g.a.createElement("ul",{className:o()(Q.a.menu,e,{[Q.a.left]:"left"===a,[Q.a.right]:"right"===a}),ref:n},t);Y.propTypes={children:c.a.node,className:c.a.string,componentRef:c.a.func,place:c.a.oneOf(["left","right"])};const J=({children:e,className:t,onClick:n})=>g.a.createElement("li",{className:o()(Q.a.menuItem,Q.a.hoverable,t),onClick:n},e);J.propTypes={children:c.a.node,className:c.a.string,onClick:c.a.func};const Z=(e,t)=>e&&g.a.cloneElement(e,{className:o()(e.className,{[Q.a.menuSection]:0===t}),key:t}),$=({children:e})=>g.a.createElement(g.a.Fragment,null,g.a.Children.map(e,Z));$.propTypes={children:c.a.node};const ee=["open","children"];function te(){return(te=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class ae extends g.a.Component{constructor(e){super(e),u()(this,["addListeners","removeListeners","handleClick","ref"])}componentDidMount(){this.props.open&&this.addListeners()}componentDidUpdate(e){this.props.open&&!e.open&&this.addListeners(),!this.props.open&&e.open&&this.removeListeners()}componentWillUnmount(){this.removeListeners()}addListeners(){document.addEventListener("mouseup",this.handleClick)}removeListeners(){document.removeEventListener("mouseup",this.handleClick)}handleClick(e){this.props.open&&!this.menu.contains(e.target)&&this.props.onRequestClose()}ref(e){this.menu=e}render(){const e=this.props,{open:t,children:n}=e,a=ne(e,ee);return t?g.a.createElement(Y,te({componentRef:this.ref},a),n):null}}ae.propTypes={children:c.a.node,onRequestClose:c.a.func.isRequired,open:c.a.bool.isRequired};var oe=ae;const re=({children:e,className:t,onRequestClose:n,open:a,place:o="right"})=>g.a.createElement("div",{className:t},g.a.createElement(oe,{open:a,place:o,onRequestClose:n},e));re.propTypes={children:c.a.node,className:c.a.string,onRequestClose:c.a.func,open:c.a.bool,place:c.a.oneOf(["left","right"])};var ie=re,se=n(100),le=n(137),ce=n(114),de=n(852),ue=n.n(de);const pe=Object(le.a)(ce.a),me=Object(s.g)({projectTitlePlaceholder:{id:"gui.gui.projectTitlePlaceholder",defaultMessage:"Project title here"}}),he=({className:e,intl:t,onSubmit:n,projectTitle:a})=>g.a.createElement(pe,{className:o()(ue.a.titleField,e),maxLength:"100",placeholder:t.formatMessage(me.projectTitlePlaceholder),tabIndex:"0",type:"text",value:a,onSubmit:n});he.propTypes={className:c.a.string,intl:s.i.isRequired,onSubmit:c.a.func,projectTitle:c.a.string};var ge=Object(s.h)(Object(r.b)(e=>({projectTitle:e.scratchGui.projectTitle}),e=>({onSubmit:t=>e(Object(se.c)(t))}))(he)),be=n(853),fe=n.n(be);const we=({className:e,imageUrl:t})=>g.a.createElement("img",{className:o()(e,fe.a.userThumbnail),src:t});we.propTypes={className:c.a.string,imageUrl:c.a.string};var ve=we,ye=n(185),_e=n.n(ye);const ke=["projectId"];function Se(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const Ee=({className:e,imageUrl:t,projectTitle:n,userId:a,username:r})=>g.a.createElement("div",{className:o()(e,_e.a.authorInfo)},g.a.createElement(ve,{className:_e.a.avatar,imageUrl:t}),g.a.createElement("div",{className:_e.a.titleAuthor},g.a.createElement("h1",{className:_e.a.projectTitle},n),g.a.createElement("div",null,g.a.createElement("span",{className:_e.a.usernameLine},g.a.createElement(s.b,{defaultMessage:"by {username}",id:"gui.authorInfo.byUser",values:{username:g.a.createElement("span",{className:_e.a.username},r)}})))));Ee.propTypes={className:c.a.string,imageUrl:c.a.string,projectTitle:c.a.string,userId:c.a.oneOfType([c.a.string,c.a.bool]),username:c.a.oneOfType([c.a.string,c.a.bool])};const xe=e=>{let{projectId:t}=e,n=Se(e,ke);return t?g.a.createElement("a",{className:_e.a.link,href:"https://scratch.mit.edu/projects/".concat(t),target:"_blank",rel:"noreferrer"},g.a.createElement(Ee,n)):g.a.createElement(Ee,n)};xe.propTypes={projectId:c.a.string};var Ce=xe,Oe=n(172),Fe=n(122);const je=["children","dispatchUpdateRestore"];function Me(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Pe(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class Ie extends g.a.Component{constructor(e){super(e),u()(this,["restoreDeletion"])}restoreDeletion(){"function"==typeof this.props.restore&&(this.props.restore(),this.props.dispatchUpdateRestore({restoreFun:null,deletedItem:""}))}render(){const e=this.props,{children:t,dispatchUpdateRestore:n}=e,a=Re(e,je),o="function"==typeof this.props.restore;return this.props.children(this.restoreDeletion,Pe(Pe({},a),{},{restorable:o}))}}Ie.propTypes={children:c.a.func,deletedItem:c.a.string,dispatchUpdateRestore:c.a.func,restore:c.a.func};var De=Object(r.b)(e=>({deletedItem:e.scratchGui.restoreDeletion.deletedItem,restore:e.scratchGui.restoreDeletion.restoreFun}),e=>({dispatchUpdateRestore:t=>{e(Object(Fe.c)(t))}}))(Ie);const Ae=["children","vm"];function Be(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}class Ne extends g.a.Component{constructor(e){super(e),u()(this,["toggleTurboMode"])}toggleTurboMode(){this.props.vm.setTurboMode(!this.props.turboMode)}render(){const e=this.props,{children:t,vm:n}=e,a=Be(e,Ae);return this.props.children(this.toggleTurboMode,a)}}Ne.propTypes={children:c.a.func,turboMode:c.a.bool,vm:c.a.shape({setTurboMode:c.a.func})};var Le=Object(r.b)(e=>({vm:e.scratchGui.vm,turboMode:e.scratchGui.vmStatus.turbo}),()=>({}))(Ne);const ze=["projectChanged"];function Ue(){return(Ue=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var We=function(e){class t extends g.a.PureComponent{constructor(e){super(e),u()(this,["confirmReadyToReplaceProject","shouldSaveBeforeTransition"])}confirmReadyToReplaceProject(e){let t=!0;return this.props.projectChanged&&!this.props.canCreateNew&&(t=this.props.confirmWithMessage(e)),t}shouldSaveBeforeTransition(){return this.props.canSave&&this.props.projectChanged}render(){const t=this.props,{projectChanged:n}=t,a=qe(t,ze);return g.a.createElement(Oe.a,null,(t,n,o)=>g.a.createElement(e,Ue({confirmReadyToReplaceProject:this.confirmReadyToReplaceProject,shouldSaveBeforeTransition:this.shouldSaveBeforeTransition,handleSaveProject:o.smartSave},a)))}}t.propTypes={canCreateNew:c.a.bool,canSave:c.a.bool,confirmWithMessage:c.a.func,projectChanged:c.a.bool},t.defaultProps={confirmWithMessage:e=>confirm(e)};return Object(r.b)(e=>({projectChanged:e.scratchGui.projectChanged}),()=>({}),(e,t,n)=>Object.assign({},e,t,n))(t)};const He=["intl","children","vm"];function Ge(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const Ve=Object(s.g)({newFramerate:{id:"tw.menuBar.newFramerate",defaultMessage:"New framerate:"}});class Ke extends g.a.Component{constructor(e){super(e),u()(this,["changeFramerate"])}async changeFramerate(e){if(e&&(e.ctrlKey||e.shiftKey)){const e=await prompt(this.props.intl.formatMessage(Ve.newFramerate),this.props.framerate);if(null===e)return;const t=+e;isFinite(t)&&t>0&&this.props.vm.setFramerate(t)}else 60===this.props.framerate?this.props.vm.setFramerate(30):this.props.vm.setFramerate(60)}render(){const e=this.props,{intl:t,children:n,vm:a}=e,o=Ge(e,He);return this.props.children(this.changeFramerate,o)}}Ke.propTypes={intl:s.i,children:c.a.func,framerate:c.a.number,vm:c.a.instanceOf(f.a)};var Xe=Object(s.h)(Object(r.b)(e=>({framerate:e.scratchGui.tw.framerate,vm:e.scratchGui.vm}),()=>({}))(Ke)),Qe=n(15),Ye=n(58);const Je=Object(s.g)({cannotChangeWhileRunning:{id:"tw.changeUsername.cannotChangeWhileRunning",defaultMessage:"Username cannot be changed while the project is running."}});class Ze extends g.a.Component{constructor(e){super(e),u()(this,["changeUsername"])}changeUsername(){!this.props.running||Object(Ye.a)()?this.props.onOpenUsernameModal():alert(this.props.intl.formatMessage(Je.cannotChangeWhileRunning))}render(){return this.props.children(this.changeUsername)}}Ze.propTypes={children:c.a.func,onOpenUsernameModal:c.a.func,running:c.a.bool,intl:s.i};var $e=Object(s.h)(Object(r.b)(e=>({running:e.scratchGui.vmStatus.running}),e=>({onOpenUsernameModal:()=>{e(Object(Qe.E)()),e(Object(R.e)())}}))(Ze)),et=n(25);const tt=["children"];function nt(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}const at=Object(s.g)({cloudUnavailableAlert:{id:"tw.menuBar.cloudUnavailableAlert",defaultMessage:"Cannot use cloud variables, most likely because you opened the editor."},cloudUnavailableDesktop:{id:"tw.menuBar.cloudUnavailableDesktop",defaultMessage:"Cannot use cloud variables in desktop app."}});class ot extends g.a.Component{constructor(e){super(e),u()(this,["toggleCloudVariables"])}toggleCloudVariables(){if(this.props.canUseCloudVariables)this.props.onCloudChange(!this.props.enabled);else{const e=this.props.intl.formatMessage(Object(Ye.a)()?at.cloudUnavailableDesktop:at.cloudUnavailableAlert);alert(e)}}render(){const e=this.props,{children:t}=e,n=nt(e,tt);return this.props.children(this.toggleCloudVariables,n)}}ot.propTypes={intl:s.i,children:c.a.func,enabled:c.a.bool,username:c.a.string,onCloudChange:c.a.func,canUseCloudVariables:c.a.bool};var rt=Object(s.h)(Object(r.b)(e=>({username:e.scratchGui.tw.username,enabled:e.scratchGui.tw.cloud,canUseCloudVariables:!e.scratchGui.mode.hasEverEnteredEditor}),e=>({onCloudChange:t=>e(Object(et.e)(t))}))(ot)),it=n(29),st=n(224),lt=n(85),ct=n(372),dt=n.n(ct);const ut=({content:e,iconSpinner:t,level:n})=>g.a.createElement("div",{className:o()(dt.a.inlineMessage,dt.a[n])},t&&g.a.createElement(st.a,{small:!0,className:dt.a.spinner,level:"info"}),e);ut.propTypes={content:c.a.element,iconSpinner:c.a.bool,level:c.a.string},ut.defaultProps={level:lt.a.INFO};var pt=ut;const mt=({alertsList:e,className:t})=>{if(!e)return null;const n=Object(it.e)(e);if(!n||!n.length)return null;const a=n[0],{content:o,iconSpinner:r,level:i}=a;return g.a.createElement(pt,{className:t,content:o,iconSpinner:r,level:i})};mt.propTypes={alertsList:c.a.arrayOf(c.a.object),className:c.a.string};var ht=Object(r.b)(e=>({alertsList:e.scratchGui.alerts.alertsList}),()=>({}))(mt),gt=n(854),bt=n.n(gt);const ft=({alertsList:e,fileHandle:t,projectChanged:n})=>Object(it.e)(e).length>0?g.a.createElement(ht,null):n&&g.a.createElement(Oe.a,null,(e,n,{smartSave:a})=>g.a.createElement("div",{onClick:a,className:bt.a.saveNow},t?g.a.createElement(s.b,{defaultMessage:"Save as {file}",id:"tw.menuBar.saveAs",values:{file:t.name}}):g.a.createElement(s.b,{defaultMessage:"Save to your computer",id:"gui.menuBar.downloadToComputer"})));ft.propTypes={alertsList:c.a.arrayOf(c.a.object),fileHandle:c.a.shape({name:c.a.string}),projectChanged:c.a.bool};var wt=Object(r.b)(e=>({alertsList:e.scratchGui.alerts.alertsList,fileHandle:e.scratchGui.tw.fileHandle,projectChanged:e.scratchGui.projectChanged}),()=>({}))(ft),vt=n(78),yt=n(343),_t=n(16),kt=n.n(_t),St=(n(441),n(1575),n(1576),n(855)),Et=n.n(St),xt=n(461),Ct=n.n(xt),Ot=n(856),Ft=n.n(Ot),jt=n(462),Mt=n.n(jt),Pt=n(857),Tt=n.n(Pt),Rt=n(858),It=n.n(Rt),Dt=n(859),At=n.n(Dt),Bt=n(89),Nt=n(463),Lt=n.n(Nt);const zt=({className:e,onClick:t})=>g.a.createElement(v.a,{className:o()(e,Lt.a.seeInsideButton),iconClassName:Lt.a.seeInsideButtonIcon,iconSrc:_.a,iconWidth:"20",iconHeight:"20",onClick:t},g.a.createElement(s.b,{defaultMessage:"See inside",id:"tw.menuBar.seeInside"}));zt.propTypes={className:c.a.string,onClick:c.a.func},zt.defaultProps={onClick:()=>{}};var Ut=zt;const qt=Object(s.g)({language:{id:"gui.menuBar.LanguageSelector",defaultMessage:"language selector"},tutorials:{id:"gui.menuBar.tutorialsLibrary",defaultMessage:"Tutorials"}}),Wt=Object(s.g)({compileError:{id:"tw.menuBar.compileError",defaultMessage:"{sprite}: {error}"}}),Ht=({children:e,className:t,enable:n,id:a,place:r="bottom"})=>n?g.a.createElement(g.a.Fragment,null,e):g.a.createElement(M.a,{className:o()(kt.a.comingSoon,t),place:r,tooltipClassName:kt.a.comingSoonTooltip,tooltipId:a},e);Ht.propTypes={children:c.a.node,className:c.a.string,enable:c.a.bool,id:c.a.string,place:c.a.oneOf(["top","bottom","left","right"])};c.a.node,c.a.string,c.a.string,c.a.bool;const Gt=e=>g.a.createElement(v.a,{className:o()(kt.a.menuBarItem,kt.a.hoverable),iconClassName:kt.a.aboutIcon,iconSrc:Mt.a,onClick:e.onClick});Gt.propTypes={onClick:c.a.func.isRequired};const Vt=e=>g.a.createElement("a",{href:e.href,target:"_blank",rel:"noopener",className:kt.a.menuItemLink},g.a.createElement(J,null,e.children));Vt.propTypes={children:c.a.node.isRequired,href:c.a.string.isRequired};class Kt extends g.a.Component{constructor(e){super(e),u()(this,["handleClickSeeInside","handleClickNew","handleClickNewWindow","handleClickRemix","handleClickSave","handleClickSaveAsCopy","handleClickPackager","handleClickRestorePoints","handleClickSeeCommunity","handleClickShare","handleKeyPress","handleLanguageMouseUp","handleRestoreOption","getSaveToComputerHandler","restoreOptionMessage"])}componentDidMount(){document.addEventListener("keydown",this.handleKeyPress)}componentWillUnmount(){document.removeEventListener("keydown",this.handleKeyPress)}handleClickNew(){const e=this.props.confirmReadyToReplaceProject(this.props.intl.formatMessage(Bt.a.replaceProjectWarning));this.props.onRequestCloseFile(),e&&this.props.onClickNew(this.props.canSave&&this.props.canCreateNew),this.props.onRequestCloseFile()}handleClickNewWindow(){this.props.onClickNewWindow(),this.props.onRequestCloseFile()}handleClickRemix(){this.props.onClickRemix(),this.props.onRequestCloseFile()}handleClickSave(){this.props.onClickSave(),this.props.onRequestCloseFile()}handleClickSaveAsCopy(){this.props.onClickSaveAsCopy(),this.props.onRequestCloseFile()}handleClickPackager(){this.props.onClickPackager(),this.props.onRequestCloseFile()}handleClickRestorePoints(){this.props.onClickRestorePoints(),this.props.onRequestCloseFile()}handleClickSeeCommunity(e){this.props.shouldSaveBeforeTransition()?(this.props.autoUpdateProject(),e(!0)):e(!1)}handleClickShare(e){this.props.isShared||(this.props.canShare&&this.props.onShare(),this.props.canSave?(this.props.autoUpdateProject(),e(!0)):e(!1))}handleRestoreOption(e){return()=>{e(),this.props.onRequestCloseEdit()}}handleKeyPress(e){(m.a.mac?e.metaKey:e.ctrlKey)&&"s"===e.key.toLowerCase()&&(this.props.handleSaveProject(),e.preventDefault())}getSaveToComputerHandler(e){return()=>{if(this.props.onRequestCloseFile(),e(),this.props.onProjectTelemetryEvent){const e=Object(yt.a)(this.props.vm,this.props.projectTitle,this.props.locale);this.props.onProjectTelemetryEvent("projectDidSave",e)}}}handleLanguageMouseUp(e){this.props.languageMenuOpen||this.props.onClickLanguage(e)}restoreOptionMessage(e){switch(e){case"Sprite":return g.a.createElement(s.b,{defaultMessage:"Restore Sprite",id:"gui.menuBar.restoreSprite"});case"Sound":return g.a.createElement(s.b,{defaultMessage:"Restore Sound",id:"gui.menuBar.restoreSound"});case"Costume":return g.a.createElement(s.b,{defaultMessage:"Restore Costume",id:"gui.menuBar.restoreCostume"});default:return g.a.createElement(s.b,{defaultMessage:"Restore",id:"gui.menuBar.restore"})}}handleClickSeeInside(){this.props.onClickSeeInside()}buildAboutMenu(e){return e?"function"==typeof e?g.a.createElement(Gt,{onClick:e}):g.a.createElement("div",{className:o()(kt.a.menuBarItem,kt.a.hoverable,{[kt.a.active]:this.props.aboutMenuOpen}),onMouseUp:this.props.onRequestOpenAbout},g.a.createElement("img",{className:kt.a.aboutIcon,src:Mt.a,draggable:!1}),g.a.createElement(ie,{className:o()(kt.a.menuBarMenu),open:this.props.aboutMenuOpen,place:this.props.isRtl?"right":"left",onRequestClose:this.props.onRequestCloseAbout},e.map(e=>g.a.createElement(J,{key:e.title,isRtl:this.props.isRtl,onClick:this.wrapAboutMenuCallback(e.onClick)},e.title)))):null}wrapAboutMenuCallback(e){return()=>{e(),this.props.onRequestCloseAbout()}}render(){const e=g.a.createElement(s.b,{defaultMessage:"Save now",id:"gui.menuBar.saveNow"}),t=g.a.createElement(s.b,{defaultMessage:"Save as a copy",id:"gui.menuBar.saveAsCopy"}),n=g.a.createElement(s.b,{defaultMessage:"Remix",id:"gui.menuBar.remix"}),a=g.a.createElement(s.b,{defaultMessage:"New",id:"gui.menuBar.new"}),r=g.a.createElement(v.a,{className:o()(kt.a.menuBarButton,kt.a.remixButton),iconClassName:kt.a.remixButtonIcon,iconSrc:Et.a,onClick:this.handleClickRemix},n),i=this.buildAboutMenu(this.props.onClickAbout);return g.a.createElement(w.a,{className:o()(this.props.className,kt.a.menuBar)},g.a.createElement("div",{className:kt.a.mainMenu},g.a.createElement("div",{className:kt.a.fileGroup},this.props.onClickLogo?g.a.createElement("div",{className:o()(kt.a.menuBarItem)},g.a.createElement("img",{alt:"Scratch",className:o()(kt.a.scratchLogo,{[kt.a.clickable]:void 0!==this.props.onClickLogo}),draggable:!1,src:this.props.logo,onClick:this.props.onClickLogo})):null,this.props.canChangeLanguage&&g.a.createElement("div",{className:o()(kt.a.menuBarItem,kt.a.hoverable,kt.a.languageMenu)},g.a.createElement("div",null,g.a.createElement("img",{className:kt.a.languageIcon,src:Ft.a,width:"24",height:"24"}),g.a.createElement("img",{className:kt.a.languageCaret,src:Ct.a,width:"8",height:"5"})),g.a.createElement(H,{label:this.props.intl.formatMessage(qt.language)})),this.props.onClickTheme&&g.a.createElement("div",{className:o()(kt.a.menuBarItem,kt.a.hoverable),onMouseUp:this.props.onClickTheme},g.a.createElement("img",{src:It.a,width:"24",height:"24",draggable:!1})),this.props.compileErrors.length>0&&g.a.createElement("div",null,g.a.createElement("div",{className:o()(kt.a.menuBarItem,kt.a.hoverable,{[kt.a.active]:this.props.errorsMenuOpen}),onMouseUp:this.props.onClickErrors},g.a.createElement("div",{className:o()(kt.a.errorsMenu)},g.a.createElement("img",{className:kt.a.languageIcon,src:Tt.a}),g.a.createElement("img",{className:kt.a.languageCaret,src:Ct.a})),g.a.createElement(ie,{className:o()(kt.a.menuBarMenu),open:this.props.errorsMenuOpen,place:this.props.isRtl?"left":"right",onRequestClose:this.props.onRequestCloseErrors},g.a.createElement($,null,g.a.createElement(Vt,{href:"https://scratch.mit.edu/users/GarboMuffin/#comments"},g.a.createElement(s.b,{defaultMessage:"Some scripts could not be compiled.",id:"tw.menuBar.reportError1"})),g.a.createElement(Vt,{href:"https://scratch.mit.edu/users/GarboMuffin/#comments"},g.a.createElement(s.b,{defaultMessage:"This is a bug. Please report it.",id:"tw.menuBar.reportError2"}))),g.a.createElement($,null,this.props.compileErrors.map(({id:e,sprite:t,error:n})=>g.a.createElement(J,{key:e},this.props.intl.formatMessage(Wt.compileError,{sprite:t,error:n}))))))),this.props.canManageFiles&&g.a.createElement("div",{className:o()(kt.a.menuBarItem,kt.a.hoverable,{[kt.a.active]:this.props.fileMenuOpen}),onMouseUp:this.props.onClickFile},g.a.createElement(s.b,{defaultMessage:"File",id:"gui.menuBar.file"}),g.a.createElement(ie,{className:o()(kt.a.menuBarMenu),open:this.props.fileMenuOpen,place:this.props.isRtl?"left":"right",onRequestClose:this.props.onRequestCloseFile},g.a.createElement($,null,g.a.createElement(J,{isRtl:this.props.isRtl,onClick:this.handleClickNew},a)),this.props.onClickNewWindow&&g.a.createElement(J,{isRtl:this.props.isRtl,onClick:this.handleClickNewWindow},g.a.createElement(s.b,{defaultMessage:"New window",id:"tw.menuBar.newWindow"})),(this.props.canSave||this.props.canCreateCopy||this.props.canRemix)&&g.a.createElement($,null,this.props.canSave&&g.a.createElement(J,{onClick:this.handleClickSave},e),this.props.canCreateCopy&&g.a.createElement(J,{onClick:this.handleClickSaveAsCopy},t),this.props.canRemix&&g.a.createElement(J,{onClick:this.handleClickRemix},n)),g.a.createElement($,null,g.a.createElement(J,{onClick:this.props.onStartSelectingFileUpload},this.props.intl.formatMessage(Bt.a.loadFromComputerTitle)),g.a.createElement(Oe.a,null,(e,t,n)=>g.a.createElement(g.a.Fragment,null,n.available&&g.a.createElement(g.a.Fragment,null,null!==n.name&&g.a.createElement(J,{onClick:this.getSaveToComputerHandler(n.saveToLastFile)},g.a.createElement(s.b,{defaultMessage:"Save to {file}",id:"tw.saveTo",values:{file:n.name}})),g.a.createElement(J,{onClick:this.getSaveToComputerHandler(n.saveAsNew)},g.a.createElement(s.b,{defaultMessage:"Save as...",id:"tw.saveAs"}))),Object(Ye.c)()&&g.a.createElement(J,{onClick:this.getSaveToComputerHandler(t)},n.available?g.a.createElement(s.b,{defaultMessage:"Save to separate file...",id:"tw.oldDownload"}):g.a.createElement(s.b,{defaultMessage:"Save to your computer",id:"gui.menuBar.downloadToComputer"}))))),this.props.onClickPackager&&g.a.createElement($,null,g.a.createElement(J,{onClick:this.handleClickPackager},g.a.createElement(s.b,{defaultMessage:"Package project",id:"tw.menuBar.package"}))),g.a.createElement($,null,g.a.createElement(J,{onClick:this.handleClickRestorePoints},g.a.createElement(s.b,{defaultMessage:"Restore points",id:"tw.menuBar.restorePoints"}))))),g.a.createElement("div",{className:o()(kt.a.menuBarItem,kt.a.hoverable,{[kt.a.active]:this.props.editMenuOpen}),onMouseUp:this.props.onClickEdit},g.a.createElement("div",{className:o()(kt.a.editMenu)},g.a.createElement(s.b,{defaultMessage:"Edit",id:"gui.menuBar.edit"})),g.a.createElement(ie,{className:o()(kt.a.menuBarMenu),open:this.props.editMenuOpen,place:this.props.isRtl?"left":"right",onRequestClose:this.props.onRequestCloseEdit},this.props.isPlayerOnly?null:g.a.createElement(De,null,(e,{restorable:t,deletedItem:n})=>g.a.createElement(J,{className:o()({[kt.a.disabled]:!t}),onClick:this.handleRestoreOption(e)},this.restoreOptionMessage(n))),g.a.createElement($,null,g.a.createElement(Le,null,(e,{turboMode:t})=>g.a.createElement(J,{onClick:e},t?g.a.createElement(s.b,{defaultMessage:"Turn off Turbo Mode",id:"gui.menuBar.turboModeOff"}):g.a.createElement(s.b,{defaultMessage:"Turn on Turbo Mode",id:"gui.menuBar.turboModeOn"}))),g.a.createElement(Xe,null,(e,{framerate:t})=>g.a.createElement(J,{onClick:e},60===t?g.a.createElement(s.b,{defaultMessage:"Turn off 60 FPS Mode",id:"tw.menuBar.60off"}):g.a.createElement(s.b,{defaultMessage:"Turn on 60 FPS Mode",id:"tw.menuBar.60on"}))),g.a.createElement($e,null,e=>g.a.createElement(J,{onClick:e},g.a.createElement(s.b,{defaultMessage:"Change Username",id:"tw.menuBar.changeUsername"}))),g.a.createElement(rt,null,(e,{enabled:t,canUseCloudVariables:n})=>g.a.createElement(J,{className:o()({[kt.a.disabled]:!n}),onClick:e},n?t?g.a.createElement(s.b,{defaultMessage:"Disable Cloud Variables",id:"tw.menuBar.cloudOff"}):g.a.createElement(s.b,{defaultMessage:"Enable Cloud Variables",id:"tw.menuBar.cloudOn"}):g.a.createElement(s.b,{defaultMessage:"Cloud Variables are not Available",id:"tw.menuBar.cloudUnavailable"})))),g.a.createElement($,null,g.a.createElement(J,{onClick:this.props.onClickSettings},g.a.createElement(s.b,{defaultMessage:"Advanced Settings",id:"tw.menuBar.moreSettings"}))))),this.props.onClickAddonSettings&&g.a.createElement("div",{className:o()(kt.a.menuBarItem,kt.a.hoverable),onMouseUp:this.props.onClickAddonSettings},g.a.createElement("div",null,g.a.createElement(s.b,{defaultMessage:"Addons",id:"tw.menuBar.addons"}))),g.a.createElement("div",{className:o()(kt.a.menuBarItem,kt.a.hoverable),onMouseUp:this.props.onClickSettings},g.a.createElement("div",null,g.a.createElement(s.b,{defaultMessage:"Advanced",id:"tw.menuBar.advanced"})))),g.a.createElement(P.a,{className:o()(kt.a.divider)}),this.props.canEditTitle?g.a.createElement("div",{className:o()(kt.a.menuBarItem,kt.a.growable)},g.a.createElement(Ht,{enable:!0,id:"title-field"},g.a.createElement(ge,{className:o()(kt.a.titleFieldGrowable)}))):this.props.authorUsername&&this.props.authorUsername!==this.props.username?g.a.createElement(Ce,{className:kt.a.authorInfo,imageUrl:this.props.authorThumbnailUrl,projectId:this.props.projectId,projectTitle:this.props.projectTitle,userId:this.props.authorId,username:this.props.authorUsername}):null,g.a.createElement("div",{className:o()(kt.a.menuBarItem)},this.props.canShare?(this.props.isShowingProject||this.props.isUpdating)&&g.a.createElement(K,{onDoneUpdating:this.props.onSeeCommunity},e=>g.a.createElement(j,{className:kt.a.menuBarButton,isShared:this.props.isShared,onClick:()=>{this.handleClickShare(e)}})):this.props.showComingSoon?g.a.createElement(Ht,{id:"share-button"},g.a.createElement(j,{className:kt.a.menuBarButton})):[],this.props.canRemix?r:[]),g.a.createElement("div",{className:o()(kt.a.menuBarItem,kt.a.communityButtonWrapper)},this.props.enableCommunity?(this.props.isShowingProject||this.props.isUpdating)&&g.a.createElement(K,{onDoneUpdating:this.props.onSeeCommunity},e=>g.a.createElement(x,{className:kt.a.menuBarButton,onClick:()=>{this.handleClickSeeCommunity(e)}})):this.props.showComingSoon?g.a.createElement(Ht,{id:"community-button"},g.a.createElement(x,{className:kt.a.menuBarButton})):this.props.enableSeeInside?g.a.createElement(Ut,{className:kt.a.menuBarButton,onClick:this.handleClickSeeInside}):[]),g.a.createElement("div",{className:kt.a.menuBarItem},g.a.createElement("a",{className:kt.a.feedbackLink,href:"https://scratch.mit.edu/users/GarboMuffin/#comments",rel:"noopener noreferrer",target:"_blank"},g.a.createElement(v.a,{className:kt.a.feedbackButton},g.a.createElement(s.b,{defaultMessage:"TurboWarp Feedback",id:"tw.feedbackButton"}))))),g.a.createElement("div",{className:kt.a.accountInfoGroup},g.a.createElement("div",{className:kt.a.menuBarItem},g.a.createElement(wt,null))),i)}}Kt.propTypes={enableSeeInside:c.a.bool,onClickSeeInside:c.a.func,aboutMenuOpen:c.a.bool,accountMenuOpen:c.a.bool,authorId:c.a.oneOfType([c.a.string,c.a.bool]),authorThumbnailUrl:c.a.string,authorUsername:c.a.oneOfType([c.a.string,c.a.bool]),autoUpdateProject:c.a.func,canChangeLanguage:c.a.bool,canCreateCopy:c.a.bool,canCreateNew:c.a.bool,canEditTitle:c.a.bool,canManageFiles:c.a.bool,canRemix:c.a.bool,canSave:c.a.bool,canShare:c.a.bool,className:c.a.string,compileErrors:c.a.arrayOf(c.a.shape({sprite:c.a.string,error:c.a.string,id:c.a.number})),confirmReadyToReplaceProject:c.a.func,editMenuOpen:c.a.bool,enableCommunity:c.a.bool,fileMenuOpen:c.a.bool,handleSaveProject:c.a.func,intl:s.i,isPlayerOnly:c.a.bool,isRtl:c.a.bool,isShared:c.a.bool,isShowingProject:c.a.bool,isUpdating:c.a.bool,languageMenuOpen:c.a.bool,locale:c.a.string.isRequired,loginMenuOpen:c.a.bool,logo:c.a.string,onClickAbout:c.a.oneOfType([c.a.func,c.a.arrayOf(c.a.shape({title:c.a.string,onClick:c.a.func}))]),onClickAccount:c.a.func,onClickAddonSettings:c.a.func,onClickTheme:c.a.func,onClickPackager:c.a.func,onClickRestorePoints:c.a.func,onClickEdit:c.a.func,onClickFile:c.a.func,onClickLanguage:c.a.func,onClickLogin:c.a.func,onClickLogo:c.a.func,onClickNew:c.a.func,onClickNewWindow:c.a.func,onClickRemix:c.a.func,onClickSave:c.a.func,onClickSaveAsCopy:c.a.func,onClickSettings:c.a.func,onClickErrors:c.a.func,onRequestCloseErrors:c.a.func,onLogOut:c.a.func,onOpenRegistration:c.a.func,onOpenTipLibrary:c.a.func,onProjectTelemetryEvent:c.a.func,onRequestOpenAbout:c.a.func,onRequestCloseAbout:c.a.func,onRequestCloseAccount:c.a.func,onRequestCloseEdit:c.a.func,onRequestCloseFile:c.a.func,onRequestCloseLanguage:c.a.func,onRequestCloseLogin:c.a.func,onSeeCommunity:c.a.func,onShare:c.a.func,onStartSelectingFileUpload:c.a.func,onToggleLoginOpen:c.a.func,projectId:c.a.string,projectTitle:c.a.string,renderLogin:c.a.func,sessionExists:c.a.bool,errorsMenuOpen:c.a.bool,shouldSaveBeforeTransition:c.a.func,showComingSoon:c.a.bool,userOwnsProject:c.a.bool,username:c.a.string,vm:c.a.instanceOf(f.a).isRequired},Kt.defaultProps={logo:At.a,onShare:()=>{}};t.a=Object(i.d)(s.h,We,Object(r.b)((e,t)=>{const n=e.scratchGui.projectState.loadingState,a=e.session&&e.session.session&&e.session.session.user;return{aboutMenuOpen:Object(R.a)(e),accountMenuOpen:Object(R.b)(e),authorThumbnailUrl:e.scratchGui.tw.author.thumbnail,authorUsername:e.scratchGui.tw.author.username,compileErrors:e.scratchGui.tw.compileErrors,fileMenuOpen:Object(R.m)(e),editMenuOpen:Object(R.k)(e),isPlayerOnly:e.scratchGui.mode.isPlayerOnly,isRtl:e.locales.isRtl,isUpdating:Object(G.u)(n),isShowingProject:Object(G.r)(n),languageMenuOpen:Object(R.n)(e),locale:e.locales.locale,loginMenuOpen:Object(R.o)(e),projectId:e.scratchGui.projectState.projectId,projectTitle:e.scratchGui.projectTitle,sessionExists:e.session&&void 0!==e.session.session,errorsMenuOpen:Object(R.l)(e),username:a?a.username:null,userOwnsProject:t.authorUsername&&a&&t.authorUsername===a.username,vm:e.scratchGui.vm}},e=>({onClickSeeInside:()=>e(Object(vt.d)(!1)),autoUpdateProject:()=>e(Object(G.b)()),onOpenTipLibrary:()=>e(Object(Qe.D)()),onClickAccount:()=>e(Object(R.r)()),onRequestCloseAccount:()=>e(Object(R.d)()),onClickFile:()=>e(Object(R.u)()),onRequestCloseFile:()=>e(Object(R.g)()),onClickEdit:()=>e(Object(R.s)()),onRequestCloseEdit:()=>e(Object(R.e)()),onClickLanguage:()=>e(Object(R.v)()),onRequestCloseLanguage:()=>e(Object(R.h)()),onClickLogin:()=>e(Object(R.w)()),onRequestCloseLogin:()=>e(Object(R.i)()),onClickErrors:()=>e(Object(R.t)()),onRequestCloseErrors:()=>e(Object(R.f)()),onRequestOpenAbout:()=>e(Object(R.q)()),onRequestCloseAbout:()=>e(Object(R.c)()),onClickNew:t=>{e(Object(G.B)(t)),e(Object(et.j)(null))},onClickRemix:()=>e(Object(G.A)()),onClickSave:()=>e(Object(G.v)()),onClickSaveAsCopy:()=>e(Object(G.D)()),onClickRestorePoints:()=>e(Object(Qe.y)()),onClickSettings:()=>{e(Object(Qe.z)()),e(Object(R.e)())},onSeeCommunity:()=>e(Object(vt.d)(!0))})))(Kt)},,function(e,t,n){"use strict";n.d(t,"d",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return i})),n.d(t,"c",(function(){return s}));const a="scratch-gui/color-picker/SET_CALLBACK",o={active:!1,callback:()=>{throw new Error("Color picker callback not initialized")}},r=function(e,t){switch(void 0===e&&(e=o),t.type){case"scratch-gui/color-picker/ACTIVATE_COLOR_PICKER":return Object.assign({},e,{active:!0,callback:t.callback});case"scratch-gui/color-picker/DEACTIVATE_COLOR_PICKER":return"string"==typeof t.color&&e.callback(t.color),Object.assign({},e,{active:!1});case a:return Object.assign({},e,{callback:t.callback});default:return e}},i=e=>({type:"scratch-gui/color-picker/ACTIVATE_COLOR_PICKER",callback:e}),s=e=>({type:"scratch-gui/color-picker/DEACTIVATE_COLOR_PICKER",color:e})},function(e,t,n){"use strict";t.a={available:()=>document.fullscreenEnabled||document.webkitFullscreenEnabled,enabled:()=>void 0!==document.fullscreenElement?null!==document.fullscreenElement:void 0!==document.webkitFullscreenElement&&null!==document.webkitFullscreenElement,request:()=>{document.body.requestFullscreen?document.body.requestFullscreen():document.body.webkitRequestFullscreen&&document.body.webkitRequestFullscreen()},exit:()=>{document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()}}},function(e,t,n){e.exports=n.p+"static/assets/bc45b073cd2fc0c2265374bdb4e05d67.svg"},function(e,t,n){var a=n(1442);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1458);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1477);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1566);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1571);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,,,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));var a=n(142),o=n.n(a);const r="tw:language",i=e=>{try{const t=localStorage.getItem(r);if(t&&e.includes(t))return t}catch(e){}let t="en",n=window.navigator.userLanguage||window.navigator.language;n=n.toLowerCase(),e.includes(n)?t=n:(n=n.split("-")[0],e.includes(n)&&(t=n));const a=o.a.parse(location.search),i=[].concat(a.locale,a.lang).filter(e=>e);if(!i.length)return t;const s=i[0].toLowerCase();return e.includes(s)?s:t}},function(e,t,n){"use strict";t.a={appStateReducer:()=>{},appStateStore:null,blockly:null,blocklyCallbacks:[]}},function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return o})),n.d(t,"c",(function(){return i}));const a="scratch-gui/connection-modal/setId",o={extensionId:null},r=function(e,t){switch(void 0===e&&(e=o),t.type){case a:return Object.assign({},e,{extensionId:t.extensionId});default:return e}},i=function(e){return{type:a,extensionId:e}}},function(e,t,n){"use strict";function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t!e.isStage).reduce((e,t,n)=>Object.assign(e,{[t.id]:o({order:n},t)}),{}),stage:t.targets.filter(e=>e.isStage)[0]||{},editingTarget:t.editingTarget});case"scratch-gui/targets/HIGHLIGHT_TARGET":return Object.assign({},e,{highlightedTargetId:t.targetId,highlightedTargetTime:t.updateTime});default:return e}},l=function(e,t){return{type:"scratch-gui/targets/UPDATE_TARGET_LIST",targets:e,editingTarget:t}},c=function(e){return{type:"scratch-gui/targets/HIGHLIGHT_TARGET",targetId:e,updateTime:Date.now()}}},,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"c",(function(){return c})),n.d(t,"b",(function(){return p})),n.d(t,"d",(function(){return u}));var a=n(2),o=n(107),r=n(358),i=n(443);var s=e=>{for(const t of Object.keys(e)){const n=i[t.toLowerCase()];n&&Object.assign(e[t],n)}Object.assign(e["es-419"],i.es)},l=n(193);s(r.a),Object(a.f)(o.c);const c={isRtl:!1,locale:"en",messagesByLocale:r.a,messages:r.a.en},d=function(e,t){switch(void 0===e&&(e=c),t.type){case"scratch-gui/locales/SELECT_LOCALE":return Object.assign({},e,{isRtl:Object(o.b)(t.locale),locale:t.locale,messagesByLocale:e.messagesByLocale,messages:e.messagesByLocale[t.locale]});case"scratch-gui/locales/UPDATE_LOCALES":return Object.assign({},e,{isRtl:e.isRtl,locale:e.locale,messagesByLocale:t.messagesByLocale,messages:t.messagesByLocale[e.locale]});default:return e}},u=function(e){try{localStorage.setItem(l.a,e)}catch(e){}return{type:"scratch-gui/locales/SELECT_LOCALE",locale:e}},p=function(e,t){return e.messagesByLocale.hasOwnProperty(t)?Object.assign({},e,{isRtl:Object(o.b)(t),locale:t,messagesByLocale:e.messagesByLocale,messages:e.messagesByLocale[t]}):e}},,,function(e,t,n){var a=n(1372);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1449);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1476);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1482);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1568);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return o}));const a=1/0,o=10},,function(e,t,n){"use strict";var a=n(4),o=n.n(a),r=n(0),i=n.n(r),s=n(1),l=n.n(s),c=n(293),d=n.n(c);const u=function(e){const{className:t,level:n,small:a,large:r}=e;return l.a.createElement("div",{className:o()(t,d.a.spinner,d.a[n],{[d.a.small]:a,[d.a.large]:r})})};u.propTypes={className:i.a.string,large:i.a.bool,level:i.a.string,small:i.a.bool},u.defaultProps={className:"",large:!1,level:"info",small:!1},t.a=u},,function(e,t,n){e.exports=n.p+"static/assets/94b06fb716871f81bec601724e29a457.svg"},function(e,t,n){e.exports=n.p+"static/assets/0fd9fd69a38ab79358df5a77b29702c8.svg"},function(e,t,n){e.exports=n.p+"static/assets/42157e6edddc19588c3c2ff188703799.svg"},,function(e,t,n){"use strict";n.d(t,"d",(function(){return o})),n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return r})),n.d(t,"c",(function(){return i}));const a={active:!1,mutator:null,callback:null},o=function(e,t){switch(void 0===e&&(e=a),t.type){case"scratch-gui/custom-procedures/ACTIVATE_CUSTOM_PROCEDURES":return Object.assign({},e,{active:!0,mutator:t.mutator,callback:t.callback});case"scratch-gui/custom-procedures/DEACTIVATE_CUSTOM_PROCEDURES":return t.mutator&&e.callback(t.mutator),Object.assign({},e,{active:!1,mutator:null,callback:null});case"scratch-gui/custom-procedures/SET_CALLBACK":return Object.assign({},e,{callback:t.callback});default:return e}},r=(e,t)=>({type:"scratch-gui/custom-procedures/ACTIVATE_CUSTOM_PROCEDURES",mutator:e,callback:t}),i=e=>({type:"scratch-gui/custom-procedures/DEACTIVATE_CUSTOM_PROCEDURES",mutator:e})},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"c",(function(){return o})),n.d(t,"b",(function(){return i}));var a=n(22);const o={stageSize:a.c.large},r=function(e,t){switch(void 0===e&&(e=o),t.type){case"scratch-gui/StageSize/SET_STAGE_SIZE":return{stageSize:t.stageSize};default:return e}},i=function(e){return{type:"scratch-gui/StageSize/SET_STAGE_SIZE",stageSize:e}}},,function(e,t,n){"use strict";t.a={available:()=>!!window.showSaveFilePicker,showOpenFilePicker:async()=>{const[e]=await window.showOpenFilePicker({multiple:!1,types:[{description:"Scratch Project",accept:{"application/x.scratch.sb3":[".sb",".sb2",".sb3"]}}]});return e},showSaveFilePicker:e=>window.showSaveFilePicker({suggestedName:e,types:[{description:"Scratch 3 Project",accept:{"application/x.scratch.sb3":".sb3"}}],excludeAcceptAllOption:!0})}},,,,function(e,t,n){var a=n(1471);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1559);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1563);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1597);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return o})),n.d(t,"c",(function(){return i}));const a="scratch-gui/asset-drag/DRAG_UPDATE",o={dragging:!1,currentOffset:null,img:null},r=function(e,t){switch(void 0===e&&(e=o),t.type){case a:return Object.assign({},e,t.state);default:return e}},i=function(e){return{type:a,state:e}}},function(e,t,n){"use strict";n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return a})),n.d(t,"c",(function(){return r}));const a=!1,o=function(e,t){switch(void 0===e&&(e=a),t.type){case"scratch-gui/block-drag/BLOCK_DRAG_UPDATE":return t.areBlocksOverGui;default:return e}},r=function(e){return{type:"scratch-gui/block-drag/BLOCK_DRAG_UPDATE",areBlocksOverGui:e,meta:{throttle:30}}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return i}));const a="scratch-gui/mic-indicator/UPDATE",o=!1,r=function(e,t){switch(void 0===e&&(e=o),t.type){case a:return t.visible;default:return e}},i=function(e){return{type:a,visible:e}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return i}));var a=n(64);const o=Object(a.OrderedMap)(),r=function(e,t){switch(void 0===e&&(e=o),t.type){case"scratch-gui/monitors/UPDATE_MONITORS":return t.monitors;default:return e}},i=function(e){return{type:"scratch-gui/monitors/UPDATE_MONITORS",monitors:e}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return a})),n.d(t,"c",(function(){return r}));const a=!1,o=function(e,t){switch(void 0===e&&(e=a),t.type){case"fontsLoaded/SET_FONTS_LOADED":return t.loaded;default:return e}},r=()=>({type:"fontsLoaded/SET_FONTS_LOADED",loaded:!0})},function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"c",(function(){return a})),n.d(t,"b",(function(){return r}));const a={autoSaveTimeoutId:null},o=function(e,t){switch(void 0===e&&(e=a),t.type){case"timeout/SET_AUTOSAVE_TIMEOUT_ID":return Object.assign({},e,{autoSaveTimeoutId:t.id});default:return e}},r=e=>({type:"timeout/SET_AUTOSAVE_TIMEOUT_ID",id:e})},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return i}));var a=n(333);const o={toolboxXML:Object(a.a)(!0)},r=function(e,t){switch(void 0===e&&(e=o),t.type){case"scratch-gui/toolbox/UPDATE_TOOLBOX":return Object.assign({},e,{toolboxXML:t.toolboxXML});default:return e}},i=function(e){return{type:"scratch-gui/toolbox/UPDATE_TOOLBOX",toolboxXML:e}}},function(e,t,n){"use strict";function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,"a",(function(){return s})),n.d(t,"c",(function(){return i})),n.d(t,"b",(function(){return l}));const r="scratch-gui/workspace-metrics/UPDATE_METRICS",i={targets:{}},s=function(e,t){switch(void 0===e&&(e=i),t.type){case r:return Object.assign({},e,{targets:Object.assign({},e.targets,{[t.targetID]:{scrollX:t.scrollX,scrollY:t.scrollY,scale:t.scale}})});default:return e}},l=function(e){return function(e){for(var t=1;tu.a.createElement("div",{className:e.className},u.a.createElement("div",{"data-delay-hide":e.delayHide,"data-delay-show":e.delayShow,"data-effect":"solid","data-for":e.tooltipId,"data-place":e.place,"data-tip":"tooltip"},e.children),u.a.createElement(S,{className:e.tooltipClassName,place:e.place,tooltipId:e.tooltipId}));E.propTypes={children:c.a.node.isRequired,className:c.a.string,delayHide:c.a.number,delayShow:c.a.number,place:c.a.oneOf(["top","right","bottom","left"]),tooltipClassName:c.a.string,tooltipId:c.a.string.isRequired},E.defaultProps={delayHide:0,delayShow:0}},function(e,t,n){e.exports=n.p+"static/assets/572a212c2e777e3a9061c97453497009.png"},function(e,t,n){var a=n(1451);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1474);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1487);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1493);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,function(e,t,n){var a=n(1580);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1594);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){"use strict";n(888),n(374)},,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){const a=n(1127),o=n(1128),r=n(1129),i=n(1130),s=n(1131),l=n(1132),c=n(1133),d=n(12).default,u={"Sans Serif":a,Serif:o,Handwriting:r,Marker:i,Curly:s,Pixel:l,Scratch:c},p={};e.exports=()=>p,e.exports.loadFonts=()=>(()=>{const e=[];for(const t of Object.keys(u))e.push(fetch(u[t]).then(e=>{if(!e.ok)throw new Error("Cannot load font: ".concat(t," (invalid HTTP response)"));return e.blob()}).then(e=>new Promise((n,a)=>{const o=new FileReader;o.onload=()=>n(o.result),o.onerror=()=>a(new Error("Cannot load font: ".concat(t," (could not read)"))),o.readAsDataURL(e)})).then(e=>{p[t]='@font-face{font-family:"'.concat(t,'";src:url("').concat(e,'");}')}).catch(e=>{d.error(e)}));return Promise.all(e)})().then(()=>((()=>{if(document.getElementById("scratch-font-styles"))return;let e="";for(const t of Object.keys(u)){const n=p[t];n&&(e+=n)}const t=document.createElement("style");t.id="scratch-font-styles",t.textContent=e,document.body.insertBefore(t,document.body.firstChild)})(),(()=>{const e=[];if(document.fonts&&document.fonts.load)for(const t in p)e.push(document.fonts.load("12px ".concat(t)));return Promise.all(e)})())).catch(e=>{d.error(e)}),e.exports.FONTS=p},function(e,t,n){"use strict";var a=n(2),o=n(6);t.a=Object(o.b)(e=>({key:e.locales.locale,locale:e.locales.locale,messages:e.locales.messages}))(a.e)},function(e,t,n){e.exports=n.p+"static/assets/6be143c7cb9d23c787f7f20674a76f72.svg"},function(e,t,n){e.exports=n.p+"static/assets/3286e2838658ebdb82f62d062b14e951.svg"},function(e,t,n){e.exports=n.p+"static/assets/0f9efe3bd6e80747dfa3aeb9e19997b5.svg"},function(e,t,n){e.exports=n.p+"static/assets/3d9e2585d6ed12b9fb994438e0c4c42a.svg"},function(e,t,n){e.exports=n.p+"static/assets/7b6399d516d5921bb199f57cdd8bbbbe.svg"},function(e,t,n){"use strict";var a=n(115);const o='',r=(e,t)=>{if(a.a.isLoaded()){return a.a.get().ScratchMsgs.translate(e,t)}return t},i=function(e){return e.replace(/[<>&'"]/g,e=>{switch(e){case"<":return"<";case">":return">";case"&":return"&";case"'":return"'";case'"':return"""}})},s='\nis compiled?\nis TurboWarp?\n';t.a=function(e,t=!0,n,a=[],l="",c="",d=""){t=e||t;const u=[''];l=i(l),c=i(c),d=i(d),a=a.slice();const p=e=>{const t=a.findIndex(t=>t.id===e);if(t>=0){const[e]=a.splice(t,1);return e.xml}},m=p("motion")||function(e,t,n){const a=r("MOTION_STAGE_SELECTED","Stage selected: no motion blocks");return'\n \n '.concat(t?'\n \n '):'\n \n \n \n 10\n \n \n \n \n \n \n 15\n \n \n \n \n \n \n 15\n \n \n \n '.concat(o,'\n \n \n \n \n \n \n \n \n \n 0\n \n \n \n \n 0\n \n \n \n \n \n \n 1\n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n 0\n \n \n \n \n 0\n \n \n \n ').concat(o,'\n \n \n \n 90\n \n \n \n \n \n \n \n \n \n ').concat(o,'\n \n \n \n 10\n \n \n \n \n \n \n 0\n \n \n \n \n \n \n 10\n \n \n \n \n \n \n 0\n \n \n \n ').concat(o,'\n \n ').concat(o,'\n \n ').concat(o,'\n \n \n '),"\n ").concat('',"\n \n ")}(0,t,n),h=p("looks")||function(e,t,n,a,i){const s=r("LOOKS_HELLO","Hello!"),l=r("LOOKS_HMM","Hmm...");return'\n \n '.concat(t?"":'\n \n \n \n '.concat(s,'\n \n \n \n \n 2\n \n \n \n \n \n \n ').concat(s,'\n \n \n \n \n \n \n ').concat(l,'\n \n \n \n \n 2\n \n \n \n \n \n \n ').concat(l,"\n \n \n \n ").concat(o,"\n "),"\n ").concat(t?'\n \n \n \n '.concat(i,'\n \n \n \n \n \n \n ').concat(i,'\n \n \n \n \n '):'\n \n \n \n ').concat(a,'\n \n \n \n \n \n \n \n ').concat(i,'\n \n \n \n \n ').concat(o,'\n \n \n \n 10\n \n \n \n \n \n \n 100\n \n \n \n '),"\n ").concat(o,'\n \n \n \n 25\n \n \n \n \n \n \n 0\n \n \n \n \n ').concat(o,"\n ").concat(t?"":'\n \n \n '.concat(o,'\n \n \n \n \n 1\n \n \n \n '),"\n ").concat(t?'\n \n ':'\n \n \n \n '),"\n ").concat('',"\n \n ")}(0,t,n,l,c),g=p("sound")||function(e,t,n,a){return'\n \n \n \n \n ').concat(a,'\n \n \n \n \n \n \n ').concat(a,'\n \n \n \n \n ').concat(o,'\n \n \n \n 10\n \n \n \n \n \n \n 100\n \n \n \n \n ').concat(o,'\n \n \n \n -10\n \n \n \n \n \n \n 100\n \n \n \n \n ').concat('',"\n \n ")}(0,0,n,d),b=p("event")||function(e,t){return'\n \n \n \n \n '.concat(t?'\n \n ':'\n \n ','\n \n \n ').concat(o,'\n \n \n \n 10\n \n \n \n ').concat(o,'\n \n \n \n \n \n \n \n \n \n \n \n \n ').concat('',"\n \n ")}(0,t),f=p("control")||function(e,t){return'\n \n \n \n \n 1\n \n \n \n '.concat(o,'\n \n \n \n 10\n \n \n \n \n ').concat(o,'\n \n \n \n \n \n ').concat(o,'\n \n ').concat(o,"\n ").concat(t?'\n \n \n \n \n \n ':'\n \n \n \n \n \n \n \n ',"\n ").concat('',"\n \n ")}(0,t),w=p("sensing")||function(e,t){const n=r("SENSING_ASK_TEXT","What's your name?");return'\n \n '.concat(t?"":'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n '.concat(o,"\n "),"\n ").concat(e?"":'\n \n \n \n '.concat(n,"\n \n \n \n "),'\n \n ').concat(o,'\n \n \n \n \n \n \n \n \n ').concat(t?"":"\n ".concat(o,'\n \'\'+\n ').concat(o,"\n "),"\n ").concat(o,'\n \n ').concat(o,'\n \n \n ').concat(o,'\n \n \n \n \n \n ').concat(o,'\n \n \n ').concat(o,'\n \n ').concat('',"\n \n ")}(e,t),v=p("operators")||function(e){const t=r("OPERATORS_JOIN_APPLE","apple"),n=r("OPERATORS_JOIN_BANANA","banana"),a=r("OPERATORS_LETTEROF_APPLE","a");return'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n '.concat(o,'\n \n \n \n 1\n \n \n \n \n 10\n \n \n \n ').concat(o,'\n \n \n \n \n \n \n \n \n 50\n \n \n \n \n \n \n \n \n \n \n \n 50\n \n \n \n \n \n \n \n \n \n \n \n 50\n \n \n \n ').concat(o,'\n \n \n \n ').concat(o,"\n ").concat(e?"":'\n \n \n \n '.concat(t,' \n \n \n \n \n ').concat(n,'\n \n \n \n \n \n \n 1\n \n \n \n \n ').concat(t,'\n \n \n \n \n \n \n ').concat(t,'\n \n \n \n \n \n \n ').concat(t,'\n \n \n \n \n ').concat(a,"\n \n \n \n "),"\n ").concat(o,'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ').concat(o,'\n \n \n \n \n \n \n \n ').concat('',"\n \n ")}(e),y=p("data")||'\n \n \n ',_=p("procedures")||'\n \n \n ';let k=p("tw");k&&!k.includes(s)&&(k=k.replace("',m,u,h,u,g,u,b,u,f,u,w,u,v,u,y,u,_,u];k&&S.push(k);for(const e of a)S.push(u,e.xml);return S.push(""),S.join("\n")}},,,,,,,,function(e,t,n){"use strict";var a=n(0),o=n.n(a),r=n(1),i=n.n(r),s=n(7),l=n(2),c=n(204),d=n.n(c),u=n(770),p=n.n(u);const m=e=>i.a.createElement("div",{className:d.a.crashWrapper},i.a.createElement(s.a,{className:d.a.body},i.a.createElement("img",{className:d.a.reloadIcon,src:p.a}),i.a.createElement("p",{className:d.a.header},i.a.createElement(l.b,{defaultMessage:"Oops! Something went wrong.",id:"gui.crashMessage.label"})),i.a.createElement("p",null,i.a.createElement(l.b,{defaultMessage:"We are so sorry, but it looks like the page has crashed. Please refresh your page to try again.",id:"tw.gui.crashMessage.description"})),e.errorMessage&&i.a.createElement("p",{className:d.a.errorMessage},e.errorMessage),e.eventId&&i.a.createElement("p",null,i.a.createElement(l.b,{defaultMessage:"Your error was logged with id {errorId}",id:"gui.crashMessage.errorNumber",values:{errorId:e.eventId}})),i.a.createElement("button",{className:d.a.reloadButton,onClick:e.onReload},i.a.createElement(l.b,{defaultMessage:"Reload",id:"gui.crashMessage.reload"}))));m.propTypes={eventId:o.a.string,errorMessage:o.a.string,onReload:o.a.func.isRequired},t.a=m},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));const a=()=>{const e=Math.round(1e4*Math.random()).toString().padStart(4,"0");return"player".concat(e)}},function(e,t,n){"use strict";t.a=function(e,t="",n=""){const a={projectName:t,language:n,spriteCount:0,blocksCount:0,costumesCount:0,listsCount:0,scriptCount:0,soundsCount:0,variablesCount:0};for(const t of e.runtime.targets){++a.spriteCount,a.blocksCount+=Object.keys(t.sprite.blocks._blocks).length,a.costumesCount+=t.sprite.costumes_.length,a.scriptCount+=t.sprite.blocks._scripts.length,a.soundsCount+=t.sprite.sounds.length;for(const e in t.variables){"list"===t.variables[e].type?++a.listsCount:++a.variablesCount}}return a}},,,function(e,t,n){e.exports=n.p+"static/assets/aaa4a3575852fe11d04f44c4a972ae73.svg"},function(e,t,n){"use strict";var a=n(4),o=n.n(a),r=n(0),i=n.n(r),s=n(1),l=n.n(s),c=n(779),d=n.n(c);const u=({className:e})=>l.a.createElement("div",{className:o()(d.a.divider,e)});u.propTypes={className:i.a.string},t.a=u},function(e,t,n){e.exports=n.p+"static/assets/497f797eeffe5fa7e6a626abc0db08a1.svg"},,,function(e,t,n){e.exports=n.p+"static/assets/2e0c4790f8f9cf28e3c346b9cef0fcb6.svg"},,,,function(e,t,n){e.exports=n.p+"static/assets/2f9cda00a530ac237fc24063067377c3.svg"},function(e,t,n){e.exports=n.p+"static/assets/4b6100c9f591be6470cdfd4697de0b54.svg"},function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var a=n(727),o=n.n(a);var r=()=>({targets:[{isStage:!0,name:"Stage",variables:{},lists:{},broadcasts:{},blocks:{},comments:{},currentCostume:0,costumes:[{assetId:"c17163c6954e9422ac2405de4c9d68c8",name:"",bitmapResolution:1,md5ext:"c17163c6954e9422ac2405de4c9d68c8.svg",dataFormat:"svg",rotationCenterX:207,rotationCenterY:16}],sounds:[],volume:100,layerOrder:0}],monitors:[],extensions:[],meta:{semver:"3.0.0",vm:"0.2.0",agent:""}}),i=n(105);const s="__missing__";t.b=()=>{const e=new i.TextEncoder,t=r();return[{id:s,assetType:"Project",dataFormat:"JSON",data:JSON.stringify(t)},{id:"c17163c6954e9422ac2405de4c9d68c8",assetType:"ImageVector",dataFormat:"SVG",data:e.encode(o.a)}]}},,function(e,t,n){e.exports=n.p+"static/assets/da651c4aad54932d9ccac36246769c14.svg"},,,,,,,function(e,t,n){var a=n(1441);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1446);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1450);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1456);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1472);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1492);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1572);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1584);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(375);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){(e.exports=n(9)(!1)).push([e.i,'/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}\nbody{margin:0}\narticle,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}\naudio,canvas,progress,video{display:inline-block;vertical-align:baseline}\naudio:not([controls]){display:none;height:0}\n[hidden],template{display:none}\na{background-color:transparent}\na:active,a:hover{outline:0}\nabbr[title]{border-bottom:1px dotted}\nb,strong{font-weight:bold}\ndfn{font-style:italic}\nh1{font-size:2em;margin:.67em 0}\nmark{background:#ff0;color:#000}\nsmall{font-size:80%}\nsub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}\nsup{top:-0.5em}\nsub{bottom:-0.25em}\nimg{border:0}\nsvg:not(:root){overflow:hidden}\nfigure{margin:1em 40px}\nhr{box-sizing:content-box;height:0}\npre{overflow:auto}\ncode,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}\nbutton,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}\nbutton{overflow:visible}\nbutton,select{text-transform:none}\nbutton,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}\nbutton[disabled],html input[disabled]{cursor:default}\nbutton::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}\ninput{line-height:normal}\ninput[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}\ninput[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}\ninput[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}\ninput[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}\nfieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}\nlegend{border:0;padding:0}\ntextarea{overflow:auto}\noptgroup{font-weight:bold}\ntable{border-collapse:collapse;border-spacing:0}\ntd,th{padding:0}\n',""])},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return s})),n.d(t,"ScratchPaintReducer",(function(){return c}));var a=n(1),o=n.n(a);let r;const i=()=>(r||(r=n(1625)),r),s=e=>o.a.createElement(i().default,e);let l=!1;const c=(e,t)=>(l||"scratch-gui/navigation/ACTIVATE_TAB"!==t.type||1!==t.activeTabIndex||(l=!0),l?i().ScratchPaintReducer(e,t):{})},,function(e,t){e.exports="iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAACXBIWXMAAAlyAAAJcgErz99GAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAYBQTFRF////AAAAgICAZmZmVVWASW1tYGCAVVVxTWaAVVWAW1ttWlp4VWNxUV55WVlzXFxwWGJ2VV5xW1t2WGFyWlpzWGB4VV10WmJ4V15yVVtzV110VWB3WV50V1x3VWB1V1x1VV9zWF12WF10VV50Vl91WFx1Vl9zVl52V191Vl13WWB1Vl11WF90V151WF92Vl91WF51Vl91WF50V192WF12V191Vl52WF10V151WF92V150V191WF11V152V150WF91WF51V111WF52WF11Vl51V151Vl50Vl11V151V150V111WF52V151V192V191V111V111V151V111V150V151Vl51V191V151V151Vl11Vl51V151WF51WF51V151WF51WF52V151V151V151V152V150V151V151V151V151Vl51V151Vl52V191Vl51V151V151V151V151V151V151V151V151V151V151V151V151V151V151V151V151V151ZcERRAAAAH90Uk5TAAECBQYHCAkKDA4REhMUGRobHB0fICEiJiosLS4vMDIzNDc5Oz0+QUZHSEpLTE5TV1laW11eX2NkZmdpa2xydHp+gIOFh4iOkJWZmpucn6GkpaytsLGys7W3vb7AxsfJzM/R2Nnb3t/g4ePk5ujp6+3u7/Dx9Pb3+Pn6+/z9/q0U6K8AAAHASURBVFjD7ZVXV8JAEEYDomAXEbuiggXBgr2jKNgLWLBiQcSOYEWU+esyG8WD7kYSXnzI95J7hsw9G7KZ5Tg5cuT8/1Q65nuyMugffQGAowKp7QonkCxI7Fet8f1wJa0/d+ezH14k9WtPICOB+QZYAqs/vKQS7laaNuPAEmjxzcwye1unXIveEKQkVdCNpecSenv+LlDCC5SGGgVeDaQ2RxdsA1NgCAIclyIdYC2STeuvA6ZA6Ufy4RrMpNhJE/SzBUU8duEGPUNapQmGBVZwQXAfb3MhnYoUcOME47oEtiG954kU5EQI25KP0yRSwHkIOxHvkSxiBTOElxGDSL1iBQ5I/vkBpAGxghXC5CMIsTaCkEBB1g0jCdS8IzVTBEMCAgvPtQk0EiqmCKwCAh9BP6Id6Zq2kTS3TEEhjxN42yHSFvVr7IiyBKo7pEt1AqvIsBmkf88NG2HGI/TFAJ7akdxYiwocFupym/v192usnrRX4FX3hrX1P2ZqmUd4pMUNf47lsRhDUI8lbxqD3fLIGOvOOAT06RwNjV9Hw8OPH/TGNA/silP4HkOSUkQGcLRFsoDLmT4P75k4OXLkyEkzH2pOgd/43vP4AAAAAElFTkSuQmCC"},function(e,t,n){e.exports=n.p+"static/assets/b433ee02a13fa2a12f7f7059f1f6729a.svg"},,function(e){e.exports=JSON.parse('{"ca":{"tw.alerts.creatingRestorePoint":"S\'està creant un punt de restauració...","tw.alerts.lostPeripheralConnection":"S\'ha perdut la connexió a {extensionName}.","tw.alerts.savedToDisk":"Desat al teu ordinador.","tw.backpack.rename":"Nou nom:","tw.blocks.buttonIsDown":"[MOUSE_BUTTON] el botó del ratolí premut?","tw.blocks.lastKeyPressed":"última tecla premuda","tw.blocks.mouseButton.middle":"(1) mig","tw.blocks.mouseButton.primary":"(0) primari","tw.blocks.mouseButton.secondary":"(2) secundari","tw.blocks.openDocs":"Obre la Documentació","tw.browserModal.desc":"Assegura\'t que fas servir una versió recent de Google Chrome, Mozilla Firefox, Microsoft Edge o Apple Safari.","tw.cantUseCloud":"Tot i que pots crear variables al núvol, no funcionaran tret que aquest projecte es carregui a Scratch o es converteixi amb una eina com ara {packager}.","tw.changeUsername.cannotChangeWhileRunning":"El nom d\'usuari no es pot modificar si el projecte s\'està executant.","tw.clipboard.danger":"Si el vostre porta-retalls conté dades com ara contrasenyes, és possible que el projecte les comparteixi amb altres persones o servidors.","tw.clipboard.permission":"L\'accés al porta-retalls podria no funcionar en alguns navegadors. Si s\'hi permet, es permetran automàticament propers accessos al porta-retalls.","tw.clipboard.title":"El projecte vol llegir les dades del vostre porta-retalls.","tw.cloudProvider":"Servidor proporcionat per {name}.","tw.cloudServers":"Trieu un servidor a prop vostre:","tw.code":"Codi font","tw.confirmIncompatibleExtension":"Aquesta extensió és incompatible amb Scratch. Els projectes fets amb ell no es poden penjar al lloc web del Scratch. Segur que vols activar-lo?","tw.createdBy":"Creat per:","tw.customCloudServer":"Utilitzant un servidor de variables al núvol personalitzat: {server}","tw.customExtension.description":"Carregueu extensions personalitzades des d\'una adreça URL, fitxers o el codi font en JavaScript.","tw.customExtension.name":"Extensió personalitzada","tw.customExtensionModal.file":"Fitxer","tw.customExtensionModal.load":"Carregar","tw.customExtensionModal.promptFile":"Seleccioneu el fitxer JavaScript de l\'extensió:","tw.customExtensionModal.promptText":"Enganxeu el codi font en JavaScript de l\'extensió:","tw.customExtensionModal.promptURL":"Introduïu l\'adreça URL de l\'extensió:","tw.customExtensionModal.title":"Carregar una extensió personalitzada","tw.customExtensionModal.trusted":"Aquesta extensió es carregarà sense sandbox perquè ve d\'una font verificada.","tw.customExtensionModal.unsandboxed":"Executar l\'extensió sense sandbox","tw.customExtensionModal.unsandboxedWarning1":"Carregar les extensions sense el sandbox és perillós i no s\'hauria d\'activar si no sabeu el què feu.","tw.customExtensionModal.unsandboxedWarning2":"Les extensions sense \\"sandbox\\" poden corrompre el vostre projecte, suprimir les vostres configuracions, obtenir contrasenyes i altres actes perillosos. Els desenvolupadors de {APP_NAME} no es fan responsables dels problemes que se\'n poden derivar.","tw.customExtensionModal.untrusted":"Les extensions d\'URL que no siguin fiables es carregaran sempre amb sandbox per la vostra seguretat.","tw.documentation":"Documentació","tw.embed.risks":"Encara que la incrustació estigui aïllada en un entorn segur, encara podrà accedir a informació del vostre dispositiu, com ara la vostra adreça IP i la localització relativa.","tw.embed.title1":"El projecte vol inserir contingut HTML a l\'escenari:","tw.embed.title2":"El projecte vol inserir contingut remot a l\'escenari:","tw.extensionGallery.name":"Galeria d\'extensions del TurboWarp","tw.favorite":"Preferit","tw.featuredProjectsStudio":"Veure l\'estudi a Scratch.","tw.feedback":"Comentaris i errors interns","tw.feedbackButton":"Comentaris del TurboWarp","tw.fetch.title":"El projecte vol connectar-se a aquesta pàgina web:","tw.fileInput.none":"No s\'ha seleccionat cap fitxer.","tw.fileInput.selected":"Seleccionat: {name}","tw.fonts.add":"Afegeix","tw.fonts.custom.file":"Seleccioneu un fitxer de tipus de lletra des de l\'ordinador:","tw.fonts.custom.name":"Poseu un nom a la família tipogràfica:","tw.fonts.custom1":"Afegeix un tipus de lletra des d\'un fitxer","tw.fonts.custom2":"Probablement, no funcioni a Scratch. Formats compatibles: {formats}.","tw.fonts.delete":"Voleu suprimir \\"{font}\\"? Qualsevol vestit vectorial utilitzarà la font alternativa.","tw.fonts.fallback":"Trieu un tipus de lletra alternatiu per utilitzar-lo si no es carrega o s\'elimina:","tw.fonts.list":"Tipus de lletra instal·lats:","tw.fonts.none":"Encara no s\'ha afegit cap família tipogràfica.","tw.fonts.readError":"Error en llegir el fitxer de tipus de lletra: {error}","tw.fonts.system":"Família tipogràfica del sistema","tw.fonts.system.name":"Escriviu el nom de qualsevol família tipogràfica integrada a l\'ordinador. És possible que el tipus de lletra no aparegui correctament per a tots.","tw.fonts.system1":"Afegir una família tipogràfica del sistema","tw.fonts.system2":"Podria funcionar a Scratch, però no apareixerà correctament per a tots.","tw.fonts.title":"Tipus de lletra","tw.footer.credits":"Crèdits","tw.footer.disclaimer":"TurboWarp no està afiliat a Scratch, al Scratch Team o la Scratch Foundation.","tw.footer.documentation":"Documentació","tw.footer.donate":"Fes una donació","tw.footer.embed":"Incrustació web","tw.footer.parameters":"Paràmetres d\'URL","tw.gui.crashMessage.description":"Ho sentim molt, però sembla que la pàgina s\'ha bloquejat. Actualitza la pàgina per tornar-ho a provar.","tw.gui.defaultProjectTitle":"Projecte","tw.guiDefaultTitle":"Executa projectes del Scratch més ràpid","tw.home.credit":"Notes i crèdits","tw.home.description":"TurboWarp és un mod del Scratch que compila els projectes al JavaScript per fer-los funcionar molt més ràpid. Prova introduint l\'identificador/ID o l\'URL del projecte a dalt o triant un projecte destacat a continuació.","tw.home.instructions":"Instruccions","tw.input.tooltip":"Copia i enganxa un enllaç d\'un projecte del Scratch aquí!","tw.interpolationEnabled":"Interpolació","tw.invalidParameters.clones":"El paràmetre d\'URL \\"clone\\" no és correcte","tw.invalidParameters.fps":"El paràmetre d\'URL \\"fps\\" no és correcte","tw.loadError":"No s\'ha pogut carregar el projecte: {error}","tw.loadExtension.embedded":"El projecte vol carregar una extensió personalitzada amb aquest codi:","tw.loadExtension.sandboxed":"Tot i que el codi s\'emmagatzemarà al sandbox, encara podrà tenir accés a informació sobre el vostre dispositiu, com ara la vostra adreça IP i la ubicació general. Assegureu-vos de confiar en l\'autor d\'aquesta extensió abans de seguir.","tw.loadExtension.unsandboxed":"Executar l\'extensió sense sandbox","tw.loadExtension.unsandboxedWarning":"Carregar extensions sense sandbox és perillós. Poden corrompre el vostre projecte, suprimir les vostres configuracions, obtenir contrasenyes i altres actes perillosos. Els desenvolupadors de {APP_NAME} no es fan responsables dels problemes que se\'n poden derivar.","tw.loadExtension.url":"El projecte vol carregar una extensió personalitzada a partir d\'aquesta URL:","tw.loader.assets.known":"Baixant assets ({complete}/{total}) …","tw.loader.assets.unknown":"Baixant assets…","tw.loader.data":"S\'estan baixant les dades del projecte...","tw.loader.generic":"S\'està carregant el projecte...","tw.menuBar.60off":"Desactiva el mode de 60 FPS","tw.menuBar.60on":"Activa el mode de 60 FPS","tw.menuBar.advanced":"Avançat","tw.menuBar.changeUsername":"Canvia el nom d\'usuari","tw.menuBar.cloudOff":"Desactiva les variables al núvol","tw.menuBar.cloudOn":"Activa les variables al núvol","tw.menuBar.cloudUnavailable":"Les variables al núvol no estan disponibles","tw.menuBar.cloudUnavailableAlert":"No es poden utilitzar variables del núvol, probablement perquè heu obert l\'editor.","tw.menuBar.moreSettings":"Configuració avançada","tw.menuBar.newFramerate":"Nova velocitat de fotogrames:","tw.menuBar.newWindow":"Nova finestra","tw.menuBar.package":"Empaquetar projecte","tw.menuBar.reportError1":"Alguns scripts no s\'han pogut compilar.","tw.menuBar.reportError2":"Això és un error. Informeu-ho si us plau.","tw.menuBar.restorePoints":"Punts de restauració","tw.menuBar.saveAs":"Desa com a {file}","tw.menuBar.seeInside":"Veure per dins","tw.moreCloud":"Més informació sobre les variables al núvol.","tw.notify.permission":"Si es permet, és possible que es demani que habiliteu les notificacions al vostre navegador i es permetran més notificacions de forma automàtica.","tw.notify.title":"El projecte demana mostrar notificacions.","tw.oldDownload":"Desa com fitxer separat...","tw.opcode.2000":"dies des del 2000","tw.opcode.mousedown":"ratolí clicat?","tw.opcode.mousex":"ratolí x","tw.opcode.mousey":"ratolí y","tw.openAdvanced":"Obrir la configuració avançada","tw.openWindow.dangerous":"Els desenvolupadors de {APP_NAME} no han revisat aquest lloc web. Pot contenir codi perillós o maliciós.","tw.openWindow.title":"El projecte vol obrir una finestra o una pestanya amb l\'URL:","tw.paint.alpha":"Opacitat","tw.paint.fonts.more":"Afegir més tipus de lletra...","tw.privacy":"Política de privacitat","tw.recordAudio.permission":"Si es permet, és possible que se us demani que habiliteu l\'accés al micròfon des del vostre navegador, i es permetran més accessos al micròfon de forma automàtica.","tw.recordAudio.title":"El projecte vol gravar àudio del micròfon. Això pot incloure transcripció de text o dades d\'arrel de l\'àudio. És possible que el projecte comparteixi l\'àudio amb altres persones o servidors.","tw.recordVideo.permission":"Si es permet, és possible que se us demani que habiliteu l\'accés a la càmera des del vostre navegador, i es permetran més accessos a la càmera de forma automàtica.","tw.recordVideo.title":"El projecte vol gravar vídeo des de la càmera. És possible que el projecte comparteixi imatges amb altres persones o servidors.","tw.redirect.dangerous":"Els desenvolupadors de {APP_NAME} no han revisat aquest lloc web. Pot contenir codi perillós o maliciós.","tw.redirect.title":"El projecte vol reencaminar aquesta pestanya a l\'URL:","tw.restorePoints.1minute":"cada minut","tw.restorePoints.assets":"{n} elements","tw.restorePoints.deleteAll":"Esborra\'ls tots","tw.restorePoints.description":"{APP_NAME} realitza punts de restauració periòdics del vostre projecte al vostre ordinador per recuperar-lo si oblideu desar o es produeix un error. Tanmateix, el vostre ordinador pot eliminar aquests punts de restauració en qualsevol moment. NO CONFIEU EXCLUSIVAMENT en aquesta funció.","tw.restorePoints.empty":"No s\'ha trobat cap punt de restauració.","tw.restorePoints.error":"S\'ha produït un error en carregar el punt de restauració: {error}","tw.restorePoints.intervalOption":"Els punts de restauració es creen {time}.","tw.restorePoints.loading":"Carregant...","tw.restorePoints.minutes":"cada {n} minuts","tw.restorePoints.never":"mai","tw.restorePoints.off":"Desactivar els punts de restauració és perillós.","tw.restorePoints.size":"Estimació de l\'emmagatzematge utilitzat: {size}","tw.restorePoints.size2":"Només es desen una única vegada les disfresses o els sons utilitzats per diversos punts de restauració.","tw.restorePoints.title":"Punts de restauració","tw.sample":"Projecte d\'exemple","tw.saveAs":"Desa com a...","tw.saveTo":"Desa a {file}","tw.scratchUnsafeCloud":"Si fass aquesta variable al núvol, el projecte superarà el límit de {number} variables de l\'Scratch i algunes variables no funcionaran si penges el projecte a l\'Scratch.","tw.securityManager.allow":"Permet","tw.securityManager.deny":"Denega","tw.securityManager.title":"Seguretat de l\'Extensió","tw.securityManager.trust":"Si s\'hi permet, es permetran automàticament més sol·licituds al mateix lloc web.","tw.securityManager.why":"Es pot utilitzar per descarregar imatges, so, implementar multijugador, accedir a una API o amb propòsits maliciosos. Això compartirà la vostra adreça IP, la ubicació generalitzada, i altres dades amb el lloc web.","tw.settingsModal.customStageSize":"Mida personalitzada de l\'escenari:","tw.settingsModal.customStageSizeHelp":"Canvia la mida de l\'escenari Scratch de 480x360 a una altra mida. Prova 640x360 per fer que l\'escenari sigui panoràmic. Molt pocs projectes ho gestionen correctament.","tw.settingsModal.dangerZone":"Zona perillosa","tw.settingsModal.disableCompiler":"Desactiva el compilador","tw.settingsModal.disableCompilerHelp":"Desactiva el compilador del TurboWarp. És possible que vulguis activar-lo mentre edites projectes perquè els scripts s\'actualitzin immediatament. En cas contrari, no hauríes d\'activar-ho mai.","tw.settingsModal.featured":"Destacat","tw.settingsModal.fps":"60 FPS (FPS Personalitzats)","tw.settingsModal.fpsHelp":"Executa scripts 60 vegades per segon en lloc de 30. La gran majoria dels projectes no executaran correctament amb aquesta funció. Hauríes de provar la interpolació amb el mode 60 FPS desactivat si és el cas.{customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Fes click per utilitzar una velocitat de fotogrames diferent de 30 o 60","tw.settingsModal.help":"Feu click per obtenir ajuda","tw.settingsModal.highQualityPen":"Llapis d\'alta qualitat","tw.settingsModal.highQualityPenHelp":"Permet que els projectes amb l\'extensiu de llapis es mostrin a resolucions més altes i desactiva alguns arrodoniments de coordenades a l\'editor. No tots els projectes es beneficien d\'aquesta eina i pot afectar el rendiment.","tw.settingsModal.infiniteClones":"Clons infinits","tw.settingsModal.infiniteClonesHelp":"Desactiva el límit de 300 clons d\'Scratch.","tw.settingsModal.interpolation":"Interpolació","tw.settingsModal.interpolationHelp":"Fa que els projectes semblin més suaus i fluids interpolant el moviment dels personatges. La interpolació no s\'ha d\'utilitzar en projectes 3D, traçadors de raigs/raytracers, projectes amb l\'extensió de llapis i projectes amb lag, ja que la interpolació farà que funcionin més lent sense que semblin suaus.","tw.settingsModal.largeStageWarning":"No es recomana utilitzar una mida d\'escenari personalitzada tan gran! En comptes d\'això, utilitza una mida inferior amb la mateixa relació d\'aspecte i deixa que el mode de pantalla completa l\'augmenti perquè coincideixi amb la pantalla de l\'usuari.","tw.settingsModal.removeFencing":"Eliminar les limitacions de pantalla","tw.settingsModal.removeFencingHelp":"Permet que els personatges es moguin fora de la pantalla, siguin tan grans o tan petits com vulguin, i fa que els blocs que es pugin fer click funcionin fora de la pantalla.","tw.settingsModal.removeLimits":"Elimina els límits","tw.settingsModal.removeMiscLimits":"Treure límits miscel·lanis","tw.settingsModal.removeMiscLimitsHelp":"Elimina els límits d\'efectes de so i els límits de mida del llapis.","tw.settingsModal.storeProjectOptions":"Emmagatzema la configuració al projecte","tw.settingsModal.storeProjectOptionsHelp":"Emmagatzema la configuració seleccionada al projecte perquè s\'apliquin automàticament quan TurboWarp carregui aquest projecte. El temporitzador Warp i el \\"Desactiva el compilador\\" no es desaran.","tw.settingsModal.title":"Configuració avançada","tw.settingsModal.warpTimer":"Temporitzador Warp","tw.settingsModal.warpTimerHelp":"Fa que els scripts comprovin si estan encallars en un bucle llarg o infinit i s\'executen a una velocitat de fotogrames baixa en lloc d\'enganxar-se fins que s\'acabi el bucle. Això corregeix la majoria de crashes, però té un impacte significatiu en el rendiment, de manera que només està activat de manera predeterminada a l\'editor.","tw.spriteSelectorItem.rename":"renombra","tw.stereo":"Estèreo","tw.stereoAlert":"Al editar aquest so estèreo és convertirà irreversiblement a mono.","tw.studioview.authorAttribution":"fet per {author}","tw.studioview.error":"S\'ha produït un error al carregar la següent pàgina dels projectes.","tw.studioview.hoverText":"{title}, fet per {author}","tw.tooLarge":"És probable que aquest so sigui molt pesat per poder carregar-lo a l\'Scratch.","tw.twExtension.description":"Nous blocs estranys.","tw.twExtension.name":"Blocs del TurboWarp","tw.unfavorite":"No preferit","tw.unshared.2":"Per a més informació, visita: {link}","tw.unshared.bug":"Si realment aquest projecte s\'ha compartit, si us plau informeu del error.","tw.unshared.cache":"Si el projecte s\'ha compartit recentment, aquest avís pot trigar uns minuts en desaparèixer.","tw.unshared2.1":"Els projectes sense compartir ja no es poden veure.","tw.usernameModal.help":"Aquest valor s\'emmagatzemarà a les del vostre explorador. Es pot registrar quan interaccionis amb projectes que contenen variables al núvol.","tw.usernameModal.help2":"Els valors que no corresponen a un compte del Scratch vàlid normalment seran rebutjats pel nostre servidor de variables al núvol. Us recomanem que ho deixis tal qual o que el canvïs pel teu nom d\'usuari del Scratch.","tw.usernameModal.mustChange":"Ho sentim, el servidor de variables al núvol creu que el teu nom d\'usuari pot ser insegur. Si us plau, canvia-ho per una altre o {resetIt}.","tw.usernameModal.mustChange.resetIt":"reseteja-ho (recomanat)","tw.usernameModal.reset":"Restableix","tw.usernameModal.title":"Canvia el nom d\'usuari","tw.usesCloudVariables":"Aquest projecte utilitza variables al núvol.","tw.usesCloudVariables2":"Les variables al núvol de {APP_NAME} no estan connectades a Scratch. Qualsevol pot {changeTheirUsername} per qualsevol, així que aneu amb compte amb la suplantació d\'identitat.","tw.usesCloudVariables2.change":"canviar el seu nom d\'usuari","tw.viewFeaturedProjects":"Fes click per veure els projectes destacats.","tw.viewOnScratch":"Veure a l\'Scratch"},"cs":{"tw.alerts.creatingRestorePoint":"Vytvářím bod obnovení...","tw.alerts.savedToDisk":"Uloženo na váš počítač.","tw.backpack.rename":"Nové jméno:","tw.blocks.addons":"Doplňky","tw.blocks.buttonIsDown":"[MOUSE_BUTTON]tlačítko myši stisknuto?","tw.blocks.lastKeyPressed":"poslední stisknutá klávesa","tw.blocks.mouseButton.middle":"(1) střední","tw.blocks.mouseButton.primary":"(0) hlavní","tw.blocks.mouseButton.secondary":"(2) sekundární","tw.blocks.openDocs":"Otevřít dokumentaci","tw.browserModal.desc":"Ujistěte se, že používáte nejnovější verzi Google Chrome, Mozilla Firefox, Microsoft Edge nebo Apple Safari.","tw.changeUsername.cannotChangeWhileRunning":"Jméno nemůže být změněno, když běží projekt.","tw.code":"Zdrojový kód","tw.confirmIncompatibleExtension":"Toto rozšíření není kompatibilní se Scratchem. Projekty vytvořené s tímto rozšířením nemůžou být nahrány na stránku Scratch. Jste si jisti, že chcete toto rozšíření aktivovat?","tw.customExtension.name":"Vlastní rozšíření","tw.customExtensionModal.file":"Soubor","tw.featuredProjectsStudio":"Zhlédnout studio na Scratchi.","tw.feedback":"Zpětná vazba & chyby","tw.feedbackButton":"Zpětná vazba TurboWarp","tw.footer.credits":"Příspěvky","tw.footer.disclaimer":"TurboWarp nemá žádnou souvislost se Scratchem, tým Scratche nebo nadace Scratche.","tw.footer.embed":"Vkládání","tw.footer.parameters":"Parametry odkazu","tw.fps":"{framerate}FPS","tw.gui.defaultProjectTitle":"Projekt","tw.guiDefaultTitle":"Zrychlit projekty Scratch","tw.home.credit":"Poznámky a příspěvky","tw.home.description":"TurboWarp je modifikace Scratche, která kompiluje projekty do JavaScriptu, aby byly rychlejší. Zkuste vložit ID projektu, odkaz projektu nebo vyberte jeden z vybraných projektů dole.","tw.home.instructions":"Instrukce","tw.input.tooltip":"Sem zkopírujte a vložte link projektu Scratch!","tw.interpolationEnabled":"Interpolace","tw.invalidParameters.clones":"\\"clone\\" parametr odkazu je neplatný","tw.invalidParameters.fps":"\\"fps\\" parametr odkazu je neplatný","tw.loader.assets.known":"Stahuji soubory ({complete}/{total}) ...","tw.loader.assets.unknown":"Stahuji soubory ...","tw.loader.data":"Stahuji data projektu ...","tw.loader.generic":"Načítám projekt ...","tw.menuBar.60off":"Vypnout režím 60 FPS","tw.menuBar.60on":"Zapnout režim 60 FPS","tw.menuBar.addons":"Doplňky","tw.menuBar.advanced":"Pokročilé","tw.menuBar.changeUsername":"Změnit jméno","tw.menuBar.cloudOff":"Vypnout cloudové proměnné","tw.menuBar.cloudOn":"Zapnout cloudové proměnné","tw.menuBar.cloudUnavailable":"Cloudové proměnné nejsou dostupné","tw.menuBar.cloudUnavailableAlert":"Nelze použít cloudové proměnné, protože jste pravděpodobně otevřeli editor.","tw.menuBar.compileError":"{sprite}:{error}","tw.menuBar.moreSettings":"Pokročilé nastavení","tw.menuBar.newFramerate":"Nová snímková frekvence:","tw.menuBar.reportError1":"Některé skripty se nemohly zkompilovat.","tw.menuBar.reportError2":"Toto je chyba, prosíme, nahlaste ji.","tw.menuBar.saveAs":"Uložit jako {file}","tw.menuBar.seeInside":"Pohlédnout dovnitř","tw.paint.alpha":"Průhlednost","tw.privacy":"Zásady ochrany osobních údajů","tw.saveAs":"Uložit jako...","tw.saveTo":"Uložit jako {file}","tw.settingsModal.customStageSize":"Vlastní velikost scény","tw.settingsModal.customStageSizeHelp":"Změní velikost scény Scratche z 480x360 na něco jiného. Zkuste 640x360, aby se změnilo rozlišení na širokoúhlé. Velmi málo projektů to zvládne.","tw.settingsModal.dangerZone":"Zóna nebezpečí","tw.settingsModal.disableCompiler":"Deaktivovat kompilátor","tw.settingsModal.disableCompilerHelp":"Deaktivuje kompilátor TurboWarp. Možná toto budete chtít aktivovat když upravujete projekty, aby se skripty okamžitě aktualizovaly. Jinak byste neměli toto aktivovat.","tw.settingsModal.featured":"Vybrané","tw.settingsModal.fps":"60 FPS (Vlastní FPS)","tw.settingsModal.fpsHelp":"Spouští skripty 60krát za sekundu místo 30krát za sekundu. Většina projektů nebude fungovat správně s tímto nastavením. Měli byste zkusit interpolaci s deaktivovaným režimem 60 FPS, jestli se toto děje. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Klikněte sem pro použití jiné snímkové frekvence než 30 nebo 60","tw.settingsModal.help":"Klikněte sem pro pomoc","tw.settingsModal.highQualityPen":"Pero s vysokým rozlišením","tw.settingsModal.highQualityPenHelp":"Povolí projekty s perem, aby kreslili na větších rozlišeních a deaktivuje některé zaokrouhlování souřadnic v editoru. Ne všechny projekty mají výhodu v tomto nastavení a může to ovlivnit výkon. ","tw.settingsModal.infiniteClones":"Nekonečné klony","tw.settingsModal.infiniteClonesHelp":"Deaktivuje limit 300 klonů Scratche","tw.settingsModal.interpolation":"Interpolace","tw.settingsModal.interpolationHelp":"Zrychlí projekty interpolací pohybu postav. Interpolace by se neměla používat na 3D projektech, raytracerech, projekty s perem a zpomalených projektech, protože je interpolace zpomalí bez jejich zrychlení.","tw.settingsModal.largeStageWarning":"Používání vlastní obrovské velikosti scény není doporučeno! Místo toho používejte menší velikost se stejnými poměry stran a nechte režim plné obrazovky zvětšit rozlišení, aby se srovnalo s displejem uživatele.","tw.settingsModal.removeFencing":"Odstranit hranice","tw.settingsModal.removeLimits":"Odstranit limity","tw.settingsModal.removeMiscLimits":"Odstranit různé limity","tw.settingsModal.removeMiscLimitsHelp":"Odstraní limity zvukových efektů a velikosti pera.","tw.settingsModal.storeProjectOptions":"Ukládat nastavení v projektu","tw.settingsModal.title":"Pokročilé nastavení","tw.settingsModal.warpTimer":"Warp časovač","tw.settingsModal.warpTimerHelp":"Skripty zkontrolují, jestli nejsou zaseklé ve dlouhém nebo nekonečném cyklu a poběží na malé snímkové frekvenci místo zaseknutí než se cyklus dokončí. Toto opraví většinu zastavení, ale má velký vliv na výkon, takže toto je jen výchozně aktivované v editoru.","tw.spriteSelectorItem.rename":"přejmenovat","tw.studioview.authorAttribution":"od {author}","tw.studioview.error":"Při načítání další stránky projektů nastala chyba.","tw.studioview.hoverText":"{title} od {author}","tw.twExtension.name":"Bloky TurboWarp","tw.usernameModal.help":"Tato hodnota bude uložena ve vašem prohlížeči. Může být zapsaná, když upravujete projekty které mají cloudové proměnné.","tw.usernameModal.mustChange":"Omlouváme se, server cloudových proměň si myslí, že vaše jméno není bezpečné. Prosíme, změňte jméno nebo {resetIt}.","tw.usernameModal.mustChange.resetIt":"obnovit (doporučeno)","tw.usernameModal.reset":"Obnovit","tw.usernameModal.title":"Změnit jméno","tw.viewFeaturedProjects":"Klikněte sem pro zhlédnutí vybraných projektů.","tw.viewOnScratch":"Zhlédnout projekt na Scratchi"},"de":{"tw.alerts.creatingRestorePoint":"Wiederherstellungspunkt wird erstellt...","tw.alerts.lostPeripheralConnection":"Verbindung zu {extensionName} verloren.","tw.alerts.restorePointError":"Der Wiederherstellpunkt konnte nicht erstellt werden","tw.alerts.restorePointSuccess":"Siehe \\"Datei\\" für die Wiederherstellpunkte","tw.alerts.savedToDisk":"Auf deinem Computer gespeichert.","tw.backpack.rename":"Neuer Name:","tw.blocks.PROCEDURES_DOCS":"Wie funktioniert \\"gebe aus\\"?","tw.blocks.PROCEDURES_RETURN":"gebe {v} aus ","tw.blocks.PROCEDURES_TO_REPORTER":"In Wertblock umwandeln","tw.blocks.PROCEDURES_TO_STATEMENT":"In Stapelblock umwandeln","tw.blocks.buttonIsDown":"[MOUSE_BUTTON] Maustaste gedrückt?","tw.blocks.lastKeyPressed":"zuletzt gedrückte Taste","tw.blocks.mouseButton.middle":"(1) mittlere","tw.blocks.mouseButton.primary":"(0) linke","tw.blocks.mouseButton.secondary":"(2) rechte","tw.blocks.openDocs":"Dokumentation öffnen","tw.browserModal.desc":"Überprüfe, ob du eine neuere Versionvon Google Chrome, Mozilla Firefox, Microsoft Edge oder Apple Safari verwendest.","tw.cantUseCloud":"Obwohl du Cloud-Variablen erstellen kannst, werden sie bis zum Hochladen auf Scratch oder auf einem Tool wie dem {packager} nicht funktionieren.","tw.changeUsername.cannotChangeWhileRunning":"Der Benutzername kann nicht geändert werden, während das Projekt ausgeführt wird.","tw.clipboard.danger":"Wenn deine Zwischenablage Sachen wie Passwörter einthält, könnte das Projekt in der Lage sein, sie mit anderen Nutzern oder Servern zu teilen.","tw.clipboard.permission":"Der Zugriff auf die Zwischenablage könnte in manchen Browsern nicht funktionieren. Wenn zugelassen, werden zukünftige Zugriffe automatisch zugelassen.","tw.clipboard.title":"Das Projekt möchte auf den Inhalt deiner Zwischenablage zugreifen.","tw.cloudProvider":"Server bereitgestellt von {name}.","tw.cloudServers":"Wähle einen Server in deiner Nähe:","tw.code":"Quellcode","tw.confirmIncompatibleExtension":"Diese Erweiterung ist nicht mit Scratch kompatibel. Projekte, die damit entwickelt werden, können nicht auf die Scratch-Website geladen werden. Bist du sicher, dass du sie aktivieren willst?","tw.createdBy":"Entwickelt von:","tw.customCloudServer":"Benutzerdefinierter Cloud-Variablen-Server in Verwendung: {server}","tw.customExtension.description":"Lade eigene Erweiterungen von URLs, Dateien oder JavaScript-Quellcode.","tw.customExtension.name":"Benutzerdefinierte Erweiterung","tw.customExtensionModal.file":"Datei","tw.customExtensionModal.load":"Laden","tw.customExtensionModal.promptFile":"JavaScript-Datei mit der Erweiterung auswählen:","tw.customExtensionModal.promptText":"Füge den JavaScript-Quellcode mit der Erweiterung ein:","tw.customExtensionModal.promptURL":"URL der Erweiterung eingeben:","tw.customExtensionModal.title":"Benutzerdefinierte Erweiterung laden","tw.customExtensionModal.trusted":"Diese Erweiterung wird ohne Sandbox geladen, weil sie aus einer vertrauenswürdigen Quelle stammt.","tw.customExtensionModal.unsandboxed":"Erweiterung ohne Sandbox ausführen","tw.customExtensionModal.unsandboxedWarning1":"Das Laden von Erweiterungen ohne Sandbox ist gefährlich und du solltest es nur tun, wenn du dir sicher bist.","tw.customExtensionModal.unsandboxedWarning2":"Erweiterungen ohne Sandbox können dein Projekt beschädigen, deine Einstellungen löschen, deine Passwörter phishen und sonstige schlechte Aktivitäten. Die Entwickler von {APP_NAME} sind nicht verantwortlich für jegliche Probleme.","tw.customExtensionModal.untrusted":"Erweiterungen von Unvertrauenswürdigen URLs werden zur Sicherheit immer mit der Sandbox geladen.","tw.customReporters.description":"Erlaubt es, eigenen Blöcken Werte ausgeben zu lassen und als Wertblöcke zu funktionieren.","tw.customReporters.name":"Eigene Wertblöcke","tw.documentation":"Dokumentation","tw.embed.persistent":"Wenn zugelassen, werden künftige EInbettungen zur selben Seite automatisch zugelassen.","tw.embed.risks":"Während die Einbettung isoliert sein wird, wird sie weiterhin Zugriff auf Geräteinformationen wie deine IP-Adresse und Region haben.","tw.embed.title1":"Dieses Projekt möchte HTML-Inhalt über die Bühne einbetten:","tw.embed.title2":"Dieses Projekt möchte eine andere Seite über die Bühne einbetten:","tw.extensionGallery.error":"Erweiterungen-Sammlung konnte nicht laden werden. Besuche extensions.turbowarp.org, um mehr Erweiterungen zu finden.","tw.extensionGallery.loading":"Erweiterungen werden geladen…","tw.extensionGallery.more":"Erfahre mehr auf extensions.turbowarp.org.","tw.extensionGallery.name":"TurboWarp-Erweiterungssammlung","tw.favorite":"Zu Favoriten hinzufügen ","tw.featuredProjectsStudio":"Studio auf Scratch anzeigen.","tw.feedback":"Feedback & Fehler","tw.feedbackButton":"Feedback","tw.fetch.title":"Das Projekt versucht, sich mit dieser Website zu verbinden:","tw.fileInput.none":"Keine Datei ausgewählt","tw.fileInput.selected":"Ausgewählt: {name}","tw.fonts.add":"Hinzufügen","tw.fonts.custom.file":"Wähle eine Schriftartdatei von deinem Computer aus:","tw.fonts.custom.name":"Gebe der Schriftart einen Namen:","tw.fonts.custom1":"Schriftart von einer Datei hinzufügen","tw.fonts.custom2":"Wird normalerweise nicht auf Scratch funktionieren. Erlaubte Formate: {formats}","tw.fonts.delete":"Bist du dir sicher, dass du \\"{font}\\" löschen willst? Alle Vektorkostüme werden stattdessen die Ersatzschriftart nutzen.","tw.fonts.fallback":"Wähle eine Schriftart, die angezeigt werden soll, wenn die Schriftart nicht geladen werden kann oder gelöscht wird:","tw.fonts.list":"Installierte Schriftarten:","tw.fonts.none":"Es wurden noch keine Schriftarten hinzugefügt.","tw.fonts.readError":"Schriftartdatei konnte nicht gelesen werden: {error}","tw.fonts.system":"Systemschriftart","tw.fonts.system.name":"Tippe den Namen einer Schriftart, die auf deinem Computer installiert ist. Die Schriftart könnte nicht für jeden richtig aussehen.","tw.fonts.system1":"Systemschriftart hinzufügen","tw.fonts.system2":"Kann auf Scratch funktionieren, wird aber nicht für jeden richtig aussehen","tw.fonts.title":"Schriftarten","tw.footer.credits":"Danksagungen","tw.footer.disclaimer":"TurboWarp ist nicht mit Scratch, dem Scratch-Team oder der Scratch-Stiftung verbunden.","tw.footer.documentation":"Dokumentation","tw.footer.donate":"Spenden","tw.footer.embed":"Einbettung","tw.footer.parameters":"URL-Parameter","tw.geolocate.permission":"Wenn du das erlaubt hast, könntest du von deinem Browser angefragt werden, Standortzugriff zu erlauben.","tw.geolocate.title":"Dieses Projekt will deinen Standort einsehen.","tw.gui.crashMessage.description":"Es tut uns leid, anscheinend ist die Seite abgestürzt. Bitte aktualisiere die Seite und versuche es erneut.","tw.gui.defaultProjectTitle":"Projekt","tw.guiDefaultTitle":"Scratch-Projekte schneller ausführen","tw.home.credit":"Anmerkungen und Danksagungen","tw.home.description":"TurboWarp ist ein Scratch-Mod, das Projekte in JavaScript kompiliert, um sie sehr schnell auszuführen. Probiere es aus, indem du eine Projekt-ID oder -URL oben eingibst, oder ein vorgestelltes Projekt unten auswählst.","tw.home.instructions":"Anleitung","tw.input.tooltip":"Kopiere den Link zu einem Scratch-Projekt und füge ihn hier ein!","tw.invalidParameters.clones":"URL-Parameter \\"clone\\" ist ungültig","tw.invalidParameters.fps":"URL-Parameter \\"fps\\" ist ungültig","tw.loadError":"Fehler beim Laden des Projekts: {error}","tw.loadExtension.embedded":"Das Projekt will eine benutzerdefinierte Erweiterung laden, die folgenden Code hat:","tw.loadExtension.sandboxed":"Obwohl der Code in der Sandbox ausgeführt wird, wird sie weiterhin Zugang zu Geräteinformationen wie deine IP-Adresse und ungefähre Position haben. Stelle sicher, dass du dem Entwickler dieser Erweiterung vertraust, bevor du fortfährst.","tw.loadExtension.unsandboxed":"Erweiterung ohne Sandbox ausführen","tw.loadExtension.unsandboxedWarning":"Erweiterungen ohne Sandbox sind gefährlich. Sie können dann dein Projekt beschädigen, deine Einstellungen löschen, deine Passwörter phishen und sonstige schlechte Aktivitäten. Die Entwickler von {APP_NAME} sind nicht verantwortlich für jegliche Probleme.","tw.loadExtension.url":"Das Projekt will eine benutzerdefinierte Erweiterung laden, die folgende URL hat:","tw.loader.assets.known":"Ressourcen werden heruntergeladen ({complete}/{total}) ...","tw.loader.assets.unknown":"Ressourcen werden heruntergeladen ...","tw.loader.data":"Projektdaten werden heruntergeladen ...","tw.loader.generic":"Projekt wird geladen ...","tw.lockdownMode":"Auf Apple-Geräten musst du den {lockdownMode} deaktivieren.","tw.lockdownMode2":"Blockierungsmodus","tw.menuBar.60off":"60 FPS-Modus ausschalten","tw.menuBar.60on":"60 FPS-Modus einschalten","tw.menuBar.advanced":"Erweitert","tw.menuBar.changeUsername":"Benutzernamen ändern","tw.menuBar.cloudOff":"Cloud-Variablen ausschalten","tw.menuBar.cloudOn":"Cloud-Variablen einschalten","tw.menuBar.cloudUnavailable":"Cloud-Variablen sind nicht Verfügbar","tw.menuBar.cloudUnavailableAlert":"Kann Cloud-Variablen nicht verwenden, wahrscheinlich, weil du den Editor geöffnet hast.","tw.menuBar.cloudUnavailableDesktop":"Cloudvariablen sind in der Desktop-App nichts verfügbar.","tw.menuBar.moreSettings":"Erweitert","tw.menuBar.newFramerate":"Neue Framefrequenz:","tw.menuBar.newWindow":"Neues Fenster","tw.menuBar.package":"Paketisieren","tw.menuBar.reportError1":"Manche Skripte konnten nicht kompiliert werden.","tw.menuBar.reportError2":"Dies ist ein Fehler. Bitte melde ihn.","tw.menuBar.restorePoints":"Wiederherstellpunkte","tw.menuBar.saveAs":"Speichern unter {file}","tw.menuBar.seeInside":"Schau hinein","tw.moreCloud":"Mehr über Cloud-Variablen erfahren.","tw.notify.permission":"Wenn du das erlaubst, könntest du von deinem Browser angefragt werden, Benachrichtigungen einzuschalten. Danach werden Benachrichtigungen automatisch erlaubt sein.","tw.notify.title":"Das Projekt möchte Benachrichtigungen anzeigen.","tw.oldDownload":"Kopie speichern unter...","tw.opcode.2000":"Tage seit 2000","tw.opcode.mousedown":"Maustaste gedrückt?","tw.opcode.mousex":"Maus-x-Position","tw.opcode.mousey":"Maus-y-Position","tw.openAdvanced":"Öffne die fortgeschrittenen Einstellungen","tw.openWindow.dangerous":"Diese Website wurde nicht von den {APP_NAME}-Entwicklern geprüft. Sie könnte schädlichen oder bösartigen Code enthalten.","tw.openWindow.title":"Dieses Projekt möchte ein neues Fenster oder Tab mit dieser URL öffnen:","tw.paint.alpha":"Durchsichtigkeit","tw.paint.fonts.more":"Mehr Schriftarten hinzufügen...","tw.privacy":"Datenschutzerklärung","tw.recordAudio.permission":"Wenn zugelassen, könnte eine Anfrage deines Browsers erscheinen, und zukünftige Zugriffe werden automatisch zugelassen.","tw.recordAudio.title":"Dieses Projekt will von deinem Mikrofon Audio aufnehmen. Das kann ein Transkript oder rohe Audiodaten beinhalten. Das Projekt könnte das Audio mit anderen Nutzern oder Servern teilen.","tw.recordVideo.permission":"Wenn du das erlaubst, könntest du von deinem Browser angefragt werden, Kamerazugriff zu erlauben, und weitere Kamerazugriffe werden automatisch erlaubt werden.","tw.recordVideo.title":"Dieses Projekt möchte Video von deiner Kamera aufnehmen. Das Projekt könnte diese Bilder mit anderen Nutzern oder Servern teilen.","tw.redirect.dangerous":"Diese Website wurde nicht von den {APP_NAME}-Entwicklern geprüft. Sie könnte schädlichen oder bösartigen Code enthalten.","tw.redirect.title":"Das Projekt will von diesem Tab zur URL:","tw.restorePoints.1minute":"jede Minute","tw.restorePoints.assets":"{n} Resourcen","tw.restorePoints.confirmDelete":"Bist du dir sicher, dass du \\"{projectTitle}\\" löschen wirst? Dies kann nicht mehr rückgängig gemacht werden. ","tw.restorePoints.confirmDeleteAll":"Bist du dir sicher, dass du ALLE Wiederherstellpunkte löschen willst? Dies kann nicht mehr rückgängig gemacht weren.","tw.restorePoints.confirmLoad":"Du hast ungespeicherte Änderungen. Willst du das momentane Projekt ersetzen?","tw.restorePoints.deleteAll":"Alle löschen","tw.restorePoints.description":"{APP_NAME}speichert periodisch Wiederherstellpunkte auf deinem Computer, damit dein Projekt wiederhergestellt werden kann, wenn du vergisst, zu speichern. Dies ist als letzter Ausweg für Wiederherstellung gedacht. Dein Computer kann jederzeit diese Wiederherstellpunkte unbemerkt löschen. Verlasse dich NICHT auf dieses Feature.","tw.restorePoints.empty":"Keine Wiederherstellpunkte gefunden.","tw.restorePoints.error":"Fehler beim Laden des Wiederherstellpunktes: {error}","tw.restorePoints.intervalOption":"Wiederherstellpunkte werden {time} erstellt.","tw.restorePoints.loading":"Laden...","tw.restorePoints.minutes":"alle {n} Minuten ","tw.restorePoints.never":"nie","tw.restorePoints.off":"Wiederherstellpunkte auszuschalten ist gefährlich.","tw.restorePoints.size":"Ungefähre Anzahl an genutztem Speicherplatz: {size}","tw.restorePoints.size2":"Kostüme oder Klänge, die von mehreren Wiederherstellungspunkten genutzt werden, werden nur einmal gespeichert.","tw.restorePoints.title":"Wiederherstellpunkte","tw.sample":"Beispielprojekt","tw.saveAs":"Speichern unter...","tw.saveTo":"Speichern unter {file}","tw.scratchUnsafeCloud":"Wenn du diese Cloudvariable erstllst, wird dieses Projekt die maximale Anzahl von {number} Variablen überschreiten, und manche von ihnen werden beim Hochladen auf Scratch nicht funktionieren.","tw.securityManager.allow":"Zulassen","tw.securityManager.deny":"Verweigern","tw.securityManager.title":"Erweiterungssicherheit","tw.securityManager.trust":"Wenn es einmal zugelassen wird, werden zukünftige Anfragen zur selben Website automatisch zugelassen.","tw.securityManager.why":"Das Projekt könnte dies zum Herunterladen von zusätzlichen Bildern und Klängen, Einbauen von Multiplayerfunktionen, Zugreifen auf eine API, aber auch für bösartige Zwecke benötigen. Es wird deine IP-Adresse, Region und möglicherweise weitere Daten mit der Website teilen.","tw.settingsModal.customStageSize":"Benutzerdefinierte Bühnengröße:","tw.settingsModal.customStageSizeHelp":"Ändert die Größe der Bühne von 480x360 zu etwas anderem. Versuche 640x360, um die Bühen erweitert zu machen. Sehr wenige Projekte behandlen diese Einstellung richtig.","tw.settingsModal.dangerZone":"Gefahrenzone","tw.settingsModal.disableCompiler":"Compiler ausschalten","tw.settingsModal.disableCompilerHelp":"Deaktiviert den TurboWarp-Compiler. Du möchtest dies vielleicht während dem Bearbeiten von Projekten aktivieren, damit die Skripte sofort aktualisiert werden, ansonsten solltest du dies nicht aktivieren.","tw.settingsModal.featured":"Vorgestellt","tw.settingsModal.fps":"60 FPS (Benutzerdefinierte FPS)","tw.settingsModal.fpsHelp":"Führt Skripte 60 anstatt 30 Mal pro Sekunde aus. Die meisten Projekte werden mit diesem nicht richtig funktionieren. Falls dies der Fall ist, solltest du Interpolation ohne 60 FPS verwenden. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Klicke, um eine andere Framefrequenz als 30 oder 60 zu verwenden","tw.settingsModal.help":"Klicke für Hilfe","tw.settingsModal.highQualityPen":"Stift mit Hoher Qualität","tw.settingsModal.highQualityPenHelp":"Erlaubt Stiftprojekte mit höherer Auflösung zu rendern und deaktiviert manche Koordinatenrundungen im Editor. Nicht alle Projekte haben einen Vorteil von dieser EInstellung, und sie könnte die Leistung beeinflussen.","tw.settingsModal.infiniteClones":"Unendliche Klone","tw.settingsModal.infiniteClonesHelp":"Deaktiviert Scratch\'s Limit von 300 Klonen.","tw.settingsModal.interpolationHelp":"Macht die Ausführung des Projekts flüssiger, indem es die Bewegungen der Figuren interpoliert. Interpolation sollte nicht auf 3D-Projekten, Raytracern, Stiftprojekten und laggenden Projekten verwendet werden, da die Interpolation sie langsamer ausführen wird.","tw.settingsModal.largeStageWarning":"Es wird nicht empfohlen, die Bühne so groß zu machen! Verwende stattdessen eine kleinere Zahl mit der gleichen Ansichtsratio und lass den Vollbildschirm sie größer machen, um sie mit dem Display des Benutzers anzupassen.","tw.settingsModal.removeFencing":"Einzäunung entfernen","tw.settingsModal.removeFencingHelp":"Lässt zu, dass sich Figuren über den Bildschirm hinaus bewegen, so groß oder so klein werden, wie sie wollen und macht die Erkennung von Berührungen zwischen Figuren außerhalb des Bildschirms möglich.","tw.settingsModal.removeLimits":"Limits enfernen","tw.settingsModal.removeMiscLimits":"Verschiedene Begrenzungen entfernen","tw.settingsModal.removeMiscLimitsHelp":"Entfernt Begrenzungen bei Klangeffekten und bei der Stiftgröße.","tw.settingsModal.storeProjectOptions":"Einstellungen im Projekt speichern","tw.settingsModal.storeProjectOptionsHelp":"Speichert die ausgewählten Einstellungen im Projekt, damit sie beim Laden in TurboWarp automatisch angewendet werden. Der Compiler und der Warp Timer werden nicht gespeichert.","tw.settingsModal.title":"Erweiterte Einstellungen","tw.settingsModal.warpTimerHelp":"Überprüft, ob Skripte in einer langen oder endlosen Schleife feststecken, und führt sie mit einer niedrigeren Framefrequenz aus, anstatt sie auf das Ende der Schleife warten zu zu lassen. was die meisten Abstürze verbessert aber einen bedeutenden Einfluss auf die Leistung hat, deshalb ist es standardmäßig außerhalb des Editors deaktiviert.","tw.soundEditorNotSupported":"Der Klängeeditor wird von diesem Browser nicht unterstützt.","tw.spriteSelectorItem.rename":"umbenennnen","tw.stereoAlert":"Dieses Stereogeräusch zu ändern wird es zu Mono umwandeln, ohne dass man es wieder zurückumwandeln kann.","tw.studioview.authorAttribution":"von {author}","tw.studioview.error":"Es gab einen Fehler beim Laden der nächsten Seite von Projekten.","tw.studioview.hoverText":"{title} von {author}","tw.tooLarge":"Dieses Geräusch könnte zu groß sein, um es auf Scratch hochzuladen.","tw.twExtension.description":"Seltsame neue Blöcke.","tw.twExtension.name":"TurboWarp-Blöcke","tw.unfavorite":"Aus Favoriten entfernen","tw.unshared.2":"Mehr Informationen unter: {link}","tw.unshared.bug":"Falls das Projekt eigentlich veröffentlicht ist, bitte melde den Fehler.","tw.unshared.cache":"Falls das Projekt erst vor Kurzem veröffentlicht wurde, wird diese Nachricht möglicherweise einige Minuten lang erscheinen.","tw.unshared2.1":"Nicht veröffentlichte Projekte sind nicht mehr sichtbar","tw.usernameModal.help":"Dieser Wert wird in deinem Browserspeicher gespeichert. Er könnte geloggt werden, wenn du mit Projekten, die Cloudvariablen enthalten, interagierst.","tw.usernameModal.help2":"Werte, die nicht mit einem gültigen Scratch-Konto entsprechen, werden normalerweise vom Cloudserver abgelehnt. Es ist empfohlen, diesen Wert so zu lassen, wie er ist, oder ihn auf deinen Scratch-Benutzernamen zu setzen.","tw.usernameModal.mustChange":"Es tut uns Leid, der Cloudvariablenserver denkt, dass dein Benutzername unsicher sein könnte. Bitte ändere ihn oder {resetIt}.","tw.usernameModal.mustChange.resetIt":"setze ihn zurück (empfohlen)","tw.usernameModal.new":"Neuer Benutzername:","tw.usernameModal.reset":"Zurücksetzen","tw.usernameModal.title":"Benutzernamen ändern","tw.usesCloudVariables":"Dieses Projekt nutzt Cloudvariablen.","tw.usesCloudVariables2":"{APP_NAME}s Cloud-Variablen sind nicht mit denen von Scratch verbunden. Jeder kann willkürlich {changeTheirUsername}.","tw.usesCloudVariables2.change":"seinen Benutzernamen ändern","tw.viewFeaturedProjects":"Klicke, um vorgestellte Projekte anzusehen.","tw.viewOnScratch":"Projekt auf Scratch anzeigen","tw.webglModal.description":"Dein Browser {doesNotSupportWebGL}, es wird aber für die Ausführung dieser Seite benötigt. Versuche deinen Browser und deine Grafiktreiber zu aktualisieren und starte anschließend den Computer neu.","tw.webglModal.link":"unterstützt WebGL nicht"},"es":{"tw.alerts.creatingRestorePoint":"Creando punto de restauración...","tw.alerts.lostPeripheralConnection":"Se perdió la conexión con {extensionName}.","tw.alerts.restorePointError":"No se pudo crear el punto de restauración","tw.alerts.restorePointSuccess":"Acceder a puntos de restauración en \\"Archivo\\"","tw.alerts.savedToDisk":"Guardado a tu computadora.","tw.backpack.rename":"Nuevo nombre:","tw.blocks.PROCEDURES_DOCS":"Cómo usar devolver","tw.blocks.PROCEDURES_RETURN":"devolver {v}","tw.blocks.PROCEDURES_TO_REPORTER":"Cambiar A Reportero","tw.blocks.PROCEDURES_TO_STATEMENT":"Cambiar A Declaración","tw.blocks.buttonIsDown":"¿botón del ratón [MOUSE_BUTTON] presionado?","tw.blocks.lastKeyPressed":"última tecla presionada","tw.blocks.mouseButton.middle":"(1) central","tw.blocks.mouseButton.primary":"(0) primario","tw.blocks.mouseButton.secondary":"(2) secundario","tw.blocks.openDocs":"Abrir Documentación","tw.browserModal.desc":"Asegúrese de que esté usando una versión reciente de Google Chrome, Mozilla Firefox, Microsoft Edge o Apple Safari.","tw.cantUseCloud":"Aunque puedes crear variables en la nube, no fucionarán a menos que este proyecto se suba a Scratch o se convierta usando una herramienta como el {packager}.","tw.changeUsername.cannotChangeWhileRunning":"El nombre de usuario no puede ser cambiado mientras el proyecto se está ejecutando.","tw.clipboard.danger":"Si su portapapeles tiene cosas como contraseñas, el proyecto podría compartirlas con otros usuarios o servidores.","tw.clipboard.permission":"El acceso a el portapapeles podría no funcionaren algunos navegadores. Si se permite, las próximas lecturas del portapapeles se permitirán automáticamente.","tw.clipboard.title":"El proyecto quiere leer los datos de su portapapeles.","tw.cloudProvider":"Servidor proporcionado por {name}.","tw.cloudServers":"Elija un servidor cerca de usted:","tw.code":"Código Fuente","tw.confirmIncompatibleExtension":"Esta extensión es incompatible con Scratch. Proyectos hechos con ella no podrán ser subidos al sitio web de Scratch. ¿Está seguro de que quiere activarla?","tw.createdBy":"Creado por:","tw.customCloudServer":"Usando un servidor de variables en la nube personalizado: {server}","tw.customExtension.description":"Cargar extensiones personalizadas desde URLs, archivos o código fuente JavaScript.","tw.customExtension.name":"Extensión Personalizada","tw.customExtensionModal.file":"Archivo","tw.customExtensionModal.load":"Cargar","tw.customExtensionModal.promptFile":"Seleccionar archivo JavaScript de la extensión:","tw.customExtensionModal.promptText":"Pegar código fuente JavaScript de la extensión:","tw.customExtensionModal.promptURL":"Ingresar URL de la extensión:","tw.customExtensionModal.text":"Texto","tw.customExtensionModal.title":"Cargar Extensión Personalizada","tw.customExtensionModal.trusted":"Esta extensión será cargada sin el sandbox porque es de una fuente confiada.","tw.customExtensionModal.unsandboxed":"Ejecutar extensión sin sandbox","tw.customExtensionModal.unsandboxedWarning1":"Cargar extensiones sin el sandbox es peligroso y no debería habilitarlo si no sabe lo que está haciendo.","tw.customExtensionModal.unsandboxedWarning2":"Extensiones sin sandbox pueden corromper su proyecto, eliminar sus ajustes, pescar sus contraseñas, y otras cosas malas. Los desarrolladores de {APP_NAME} no son responsables por ningún problema resultante.","tw.customExtensionModal.untrusted":"Extensiones de URLs no confiadas siempre serán cargadas con sandbox por seguridad.","tw.customReporters.description":"Permitir a bloques personalizados devolver resultados y ser usados como entradas.","tw.customReporters.name":"Reporteros Personalizados","tw.documentation":"Documentación","tw.embed.persistent":"Si se permite, se permitirán automáticamente más incrustaciones en el mismo sitio.","tw.embed.risks":"Si bien la inserción estará protegida, seguirá teniendo acceso a información sobre su dispositivo, como su IP y ubicación general.","tw.embed.title1":"El proyecto quiere incrustar contenido HTML en el escenario:","tw.embed.title2":"El proyecto quiere incorporar contenido remoto sobre el escenario:","tw.extensionGallery.error":"Error al cargar la galería de extensiones. Visita extensions.turbowarp.org para encontrar más extensiones.","tw.extensionGallery.loading":"Cargando galería de extensiones...","tw.extensionGallery.more":"Obtenga más información sobre las extensiones en extensions.turbowarp.org.","tw.extensionGallery.name":"Galería de Extensiones de TurboWarp","tw.favorite":"Favorito","tw.featuredProjectsStudio":"Ver estudio en Scratch","tw.feedback":"Comentarios y Bugs","tw.feedbackButton":"Enviar comentarios (feedback)","tw.fetch.title":"El proyecto quiere conectarse al sitio web:","tw.fileInput.none":"No se seleccionó ningún archivo.","tw.fileInput.selected":"Seleccionado: {name}","tw.fonts.add":"Agregar","tw.fonts.custom.file":"Selecciona una fuente tipográfica de tu computador:","tw.fonts.custom.name":"Dale un nombre a la fuente:","tw.fonts.custom1":"Agrega fuente de un archivo","tw.fonts.custom2":"Usualmente no funcionará en Scratch. Formatos soportados: {formats}","tw.fonts.delete":"¿Estás seguro que quieres borrar \\"{font}\\"? Cualquier disfraz vector usará la fuente de reemplazo en vez.","tw.fonts.fallback":"Elige una fuente alternativa que se utilizará si la fuente no se carga o se elimina:","tw.fonts.list":"Fuentes instaladas:","tw.fonts.none":"Sin fuentes añadidas aún.","tw.fonts.readError":"Fallo en leer fuente tipográfica: {error}","tw.fonts.system":"Fuente del sistema","tw.fonts.system.name":"Escribe el nombre de cualquier fuente en tu computador. La fuente puede no aparecer correctamente para todos.","tw.fonts.system1":"Agregar una fuente del sistema","tw.fonts.system2":"Podría funcionar en Scratch, pero no aparecerá correctamente para todos.","tw.fonts.title":"Fuentes","tw.footer.credits":"Créditos","tw.footer.disclaimer":"TurboWarp no está afiliado con Scratch, el Equipo de Scratch o la Scratch Foundation.","tw.footer.documentation":"Documentación","tw.footer.donate":"Donar","tw.footer.embed":"Incrustado","tw.footer.parameters":"Parámetros de URL","tw.geolocate.permission":"Si se permite, puede que su navegador le pida acceso a su ubicación.","tw.geolocate.title":"El proyecto quiere saber su ubicación.","tw.gui.crashMessage.description":"Lo lamentamos mucho, pero parece que la página dejó de funcionar. Por favor actualice la página para intentar de nuevo.","tw.gui.defaultProjectTitle":"Proyecto","tw.guiDefaultTitle":"Ejecute proyectos de Scratch más rápido","tw.home.credit":"Notas y Créditos","tw.home.description":"TurboWarp es un mod de Scratch que compila los proyectos a JavaScript para hacerlos ejecutar muy rápido. Pruébelo insertando un ID o URL de proyecto debajo o elija un proyecto destacado debajo.","tw.home.instructions":"Instrucciones","tw.input.tooltip":"¡Copie y pegue un enlace a un proyecto de Scratch aquí!","tw.interpolationEnabled":"Interpolación","tw.invalidParameters.clones":"Parámetro de URL «clone» es inválido","tw.invalidParameters.fps":"Parámetro de URL «fps» es inválido","tw.loadError":"No se ha podido cargar el proyecto: {error}","tw.loadExtension.embedded":"El proyecto quiere cargar una extensión personalizada con el código:","tw.loadExtension.sandboxed":"A pesar de que el código tenga sandbox, tendrá acceso a la información de su dispositivo como su IP y su ubicación general. Asegúrese de confiar el autor de esta extensión antes de continuar.","tw.loadExtension.unsandboxed":"Ejecutar extensión sin sandbox","tw.loadExtension.unsandboxedWarning":"Cargar extensiones sin sandbox es peligroso. Será capaz de corromper su proyecto, eliminar sus ajustes, pescar sus contraseñas, y otras cosas malas. Los desarrolladores de {APP_NAME} no son responsables de ningún problema resultante.","tw.loadExtension.url":"El proyecto quiere cargar una extensión personalizada de la URL:","tw.loader.assets.known":"Descargando assets ({complete}/{total}) ...","tw.loader.assets.unknown":"Descargando assets ...","tw.loader.data":"Descargando información del proyecto...","tw.loader.generic":"Cargando proyecto ...","tw.lockdownMode":"En dispositivos Apple, debes desactivar {lockdownMode}.","tw.lockdownMode2":"Modo de bloqueo","tw.menuBar.60off":"Desactivar modo 60 FPS","tw.menuBar.60on":"Activar modo 60 FPS","tw.menuBar.advanced":"Avanzado","tw.menuBar.changeUsername":"Cambiar Nombre de Usuario","tw.menuBar.cloudOff":"Desactivar Variables en la Nube","tw.menuBar.cloudOn":"Activar Variables en la Nube","tw.menuBar.cloudUnavailable":"Variables en la Nube no Disponibles","tw.menuBar.cloudUnavailableAlert":"No se pueden usar variables en la nube, probablemente porque abriste el editor.","tw.menuBar.cloudUnavailableDesktop":"No se pueden utilizar variables de nube en la aplicación de escritorio.","tw.menuBar.moreSettings":"Ajustes Avanzados","tw.menuBar.newFramerate":"Nuevo FPS:","tw.menuBar.newWindow":"Nueva ventana","tw.menuBar.package":"Convertir proyecto","tw.menuBar.reportError1":"Algunos scripts no pudieron ser compilados","tw.menuBar.reportError2":"Esto es un bug. Por favor repórtelo.","tw.menuBar.restorePoints":"Puntos de restauración","tw.menuBar.saveAs":"Guardar como {file}","tw.menuBar.seeInside":"Ver dentro","tw.moreCloud":"Obtenga más información sobre las variables de la nube.","tw.notify.permission":"Si se permite, puede que su navegador le pida habilitar notificaciones, y próximas notificaciones serán permitidas automáticamente.","tw.notify.title":"El proyecto quiere mostrar notificaciones.","tw.oldDownload":"Guardar a archivo separado...","tw.opcode.2000":"días desde el 2000","tw.opcode.mousedown":"¿ratón presionado?","tw.opcode.mousex":"posición x del ratón","tw.opcode.mousey":"posición y del ratón","tw.openAdvanced":"Abrir opciones avanzadas","tw.openWindow.dangerous":"Este sitio web no ha sido revisado por los desarrolladores de {APP_NAME}. Podría contener código peligroso o malicioso.","tw.openWindow.title":"Este proyecto quiere abrir una nueva ventana o pestaña con la URL:","tw.paint.alpha":"Opacidad","tw.paint.fonts.more":"Agregar más fuentes...","tw.privacy":"Política de Privacidad","tw.recordAudio.permission":"Si se permite, puede que su navegador le pida acceso al micrófono, y los próximos accesos al micrófono se permitirán automáticamente.","tw.recordAudio.title":"El proyecto quiere grabar audio de su micrófono. Esto podría incluir un transcriptor a texto o datos de audio sin procesar. El proyecto podría compartir el audio con otros usuarios o servidores.","tw.recordVideo.permission":"Si se permite, puede que su navegador le pida acceso a su cámara, y los próximos accesos a la cámara se permitirán autiomáticamente.","tw.recordVideo.title":"El proyecto quiere grabar video de su cámara. El proyecto podría compartir imágenes con otros usuarios o servidores.","tw.redirect.dangerous":"Este sitio web no ha sido revisado por los desarrolladores de {APP_NAME}. Podría contener código peligroso o malicioso.","tw.redirect.title":"El proyecto quiere trasladar esta pestaña a la URL:","tw.restorePoints.1minute":"cada minuto","tw.restorePoints.confirmDelete":"¿Está seguro de que quiere eliminar \\"{projectTitle}\\"? Esto no se puede deshacer.","tw.restorePoints.confirmDeleteAll":"¿Está seguro de que desea eliminar TODOS los puntos de restauración? Esto no se puede deshacer.","tw.restorePoints.confirmLoad":"Tiene cambios sin guardar. ¿Remplazar el proyecto existente?","tw.restorePoints.deleteAll":"Eliminar Todos","tw.restorePoints.description":"{APP_NAME} Guarda periódicamente puntos de guardado en su computadora para ayudarlo a recuperar su proyecto olvida guardarlo. Esto es guardado como una última oportunidad de recuperación. Su computadora podría silenciosamente eliminar estos puntos de guardado en cualquier momento. NO confíe en esta función.","tw.restorePoints.empty":"No se encontraron puntos de recuperación.","tw.restorePoints.error":"Error al cargar punto de recuperación: {error}","tw.restorePoints.intervalOption":"Los puntos de recuperación son creados {time}.","tw.restorePoints.loading":"Cargando...","tw.restorePoints.minutes":"cada {n} minutos","tw.restorePoints.never":"nunca","tw.restorePoints.off":"Deshabilitar puntos de recuperación es peligroso.","tw.restorePoints.size":"Estimación del almacenamiento usado: {size}","tw.restorePoints.size2":"Los disfraces y sonidos usados por múltiples puntos de recuperación son solo almacenados una vez.","tw.restorePoints.title":"Puntos de Restauración","tw.sample":"Proyecto de muestra","tw.saveAs":"Guardar como...","tw.saveTo":"Guardar a {file}","tw.scratchUnsafeCloud":"Si hace esto una variable en la nube, el proyecto exederá el límite de Scratch de {number} variables y algunas variables no funcionarán si sube el proyecto a Scratch.","tw.securityManager.allow":"Permitir","tw.securityManager.deny":"Denegar","tw.securityManager.title":"Seguridad de la Extensión","tw.securityManager.trust":"Si se permite, las próximas consultas al mismo sitio web serán automáticamente permitidas.","tw.securityManager.why":"Esto podría ser usado para descargar imágenes o sonidos, implementar multijugador, acceder a una API, o con intenciones maliciosas. Esto compartirá tu dirección de IP, ubicación general, y probablemente otra información con el sitio web.","tw.settingsModal.customStageSize":"Tamaño Personalizado del Escenario:","tw.settingsModal.customStageSizeHelp":"Cambia el tamaño del escenario de Scratch de 480x360 a algo diferente. Pruebe 640x360 para hacer el escenario más ancho. Muy pocos proyectos manejarán esto adecuadamente.","tw.settingsModal.dangerZone":"Zona Peligrosa","tw.settingsModal.disableCompiler":"Desactivar Compilador","tw.settingsModal.disableCompilerHelp":"Desactiva el compilador de TurboWarp. Puede que quiera activar esto mientras edita proyectos para que sus scripts se actualicen inmediatamente. Si ese no es el caso, no debería activar esto nunca.","tw.settingsModal.featured":"Destacado","tw.settingsModal.fps":"60 FPS (FPS Personalizado)","tw.settingsModal.fpsHelp":"Ejecuta scripts 60 veces por segundo en vez de 30. La mayoría de los proyectos no funcionarán correctamente con esto activado. Debería probar Interpolación con modo 60 FPS desactivado si ese es el caso. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Haga click para usar un framerate diferente a 30 o 60","tw.settingsModal.help":"Haga click para ayuda","tw.settingsModal.highQualityPen":"Lápiz de Alta Calidad","tw.settingsModal.highQualityPenHelp":"Permite a los proyectos que usen la extensión del Lápiz renderizar en una mayor resolución y desactiva el redondeo de coordenadas dentro del editor. No todos los proyectos se ven beneficiados de esta configuración, pues puede afectar negativamente el rendimiento. ","tw.settingsModal.infiniteClones":"Clones Infinitos","tw.settingsModal.infiniteClonesHelp":"Desactiva el límite de 300 clones de Scratch.","tw.settingsModal.interpolation":"Interpolación","tw.settingsModal.interpolationHelp":"Hace que los movimientos dentro de los proyectos se vean más suaves al interpolar los cambios de posición de los objetos. No es recomendable utilizar el ajuste de interpolación en proyectos 3D o proyectos que utilicen la extensión del Lápiz u otros proyectos que sean de bajo rendimiento, ya que esta función lo ralentizará aún más.","tw.settingsModal.largeStageWarning":"Usar un tamaño personalizado del escenario tan grande no es recomendado. En cambio, use un tamaño más pequeño con la misma relación de aspecto y permita que el modo pantalla completa agrande el escenario para cubrir toda la pantalla del usuario.","tw.settingsModal.removeFencing":"Quitar Fencing","tw.settingsModal.removeFencingHelp":"Permite a los objetos moverse afuera de la pantalla o hacerse tan grandes o chicos como deseen y hace funcionar los bloques \\"tocando\\" fuera de la pantalla.","tw.settingsModal.removeLimits":"Quitar Límites","tw.settingsModal.removeMiscLimits":"Quitar Límites Varios","tw.settingsModal.removeMiscLimitsHelp":"Elimina los límites de sonido y de tamaño del lápiz.","tw.settingsModal.storeProjectOptions":"Guardar ajustes en proyecto","tw.settingsModal.storeProjectOptionsHelp":"Guarda los ajustes seleccionados en el proyecto para que sean aplicados automáticamente cuando TurboWarp carga este proyecto. Warp Timer y desactivar compilador no serán guardados.","tw.settingsModal.title":"Ajustes Avanzados","tw.settingsModal.warpTimerHelp":"Hace que los scripts revisen si están atascados en un bucle infinito y si es así, hace que vayan a una menor tasa de refresco hasta que el bucle termine, logrando evitar la mayoría de colapsos por este tipo de errores. Este ajuste tiene un impacto negativo significante en el rendimiento, por lo que solo está habilitado por defecto en el editor.","tw.soundEditorNotSupported":"El editor de sonido no es compatible con este navegador.","tw.spriteSelectorItem.rename":"renombrar","tw.stereo":"Estéreo","tw.stereoAlert":"Editar este sonido estéreo lo convertirá irreversiblemente en mono.","tw.studioview.authorAttribution":"por {author}","tw.studioview.error":"Ocurrió un error cargando la siguiente página de proyectos.","tw.studioview.hoverText":"{title} por {author}","tw.tooLarge":"Este sonido podría ser demasiado grande como para cargarlo en Scratch.","tw.twExtension.description":"Nuevos bloques extraños.","tw.twExtension.name":"Bloques TurboWarp","tw.unfavorite":"No favorito","tw.unshared.2":"Para más información, visite: {link}","tw.unshared.bug":"Si el proyecto está realmente compartido, por favor reporte un error.","tw.unshared.cache":"Si el proyecto se a compartido recientemente, este mensaje podría aparecer incorrectamente por algunos minutos.","tw.unshared2.1":"Los proyectos no compartidos ya no son visibles","tw.usernameModal.help":"Este valor será guardado en el almacenamiento de su navegador. Es posible que sea usado cuando interactúe con proyectos que contengan variables en la nube.","tw.usernameModal.help2":"Valores que no corresponden a una cuenta de Scratch válida típicamente serán rechazadas por el servidor de variables en la nube. Se le recomienda dejarlo como está o cambiarlo a su nombre de usuario de Scratch.","tw.usernameModal.mustChange":"Lo sentimos, el servidor de variables en la nube piensa que tu nombre de usuario puede ser inseguro. Por favor cámbielo a otra cosa o {resetIt}.","tw.usernameModal.mustChange.resetIt":"resetéelo (recomendado)","tw.usernameModal.new":"Nuevo nombre de usuario:","tw.usernameModal.reset":"Reiniciar","tw.usernameModal.title":"Cambiar Nombre de Usuario","tw.usesCloudVariables":"Este proyecto utiliza variables de nube.","tw.usesCloudVariables2":"Las variables de la nube de {APP_NAME} no están conectadas a las de Scratch. Cualquiera puede {changeTheirUsername}, así que tenga cuidado con la suplantación.","tw.usesCloudVariables2.change":"cambiar su nombre de usuario","tw.viewFeaturedProjects":"Clickee para ver proyectos destacados.","tw.viewOnScratch":"Ver proyecto en Scratch"},"fr":{"tw.alerts.creatingRestorePoint":"Création d\'un point de restauration…","tw.alerts.lostPeripheralConnection":"Le périphérique {extensionName} vient d’être déconnecté.","tw.alerts.savedToDisk":"Enregistré sur votre ordinateur.","tw.backpack.rename":"Nouveau nom :","tw.blocks.buttonIsDown":"bouton [MOUSE_BUTTON] de la souris pressé ?","tw.blocks.lastKeyPressed":"dernière touche pressée","tw.blocks.mouseButton.middle":"(1) milieu","tw.blocks.mouseButton.primary":"(0) primaire","tw.blocks.mouseButton.secondary":"(2) secondaire","tw.blocks.openDocs":"Ouvrir la documentation","tw.browserModal.desc":"Vérifiez que vous utilisez une version récente de Google Chrome, Mozilla Firefox, Micorsoft Edge ou Apple Safari.","tw.cantUseCloud":"Bien que vous puissiez créer des variables cloud, elles ne fonctionneront que si ce projet est téléchargé sur Scratch ou converti à l\'aide d\'un outil comme le{packager}.","tw.changeUsername.cannotChangeWhileRunning":"Le nom d\'utilisateur ne peut pas être modifié pendant l\'exécution du projet.","tw.code":"Code source","tw.confirmIncompatibleExtension":"Cette extension est incompatible avec Scratch. Les projets réalisés avec lui ne peuvent pas être téléchargés sur le site Web de Scratch. Voulez-vous vraiment l\'activer ?","tw.customExtension.name":"Extension customisée","tw.customExtensionModal.file":"Fichier","tw.featuredProjectsStudio":"Voir le studio sur scratch.","tw.feedback":"retour et signalement de bugues","tw.feedbackButton":"Retours sur TurboWarp","tw.footer.credits":"Crédits","tw.footer.disclaimer":"TurboWarp n\'est pas affilié à Scratch, à l\'équipe Scratch ou à la Fondation Scratch.","tw.footer.donate":"Faire un don","tw.footer.embed":"Intégrer","tw.footer.parameters":"Paramères URL","tw.gui.crashMessage.description":"Nous sommes vraiment désolés, mais il semble que TurboWarp a crashé. Veuillez actualiser la page pour réessayer.","tw.gui.defaultProjectTitle":"Projet","tw.guiDefaultTitle":"Exécute les projets Scratch plus rapidement","tw.home.credit":"Notes et Crédits","tw.home.description":"TurboWarp est un Scratch mod qui compile les projets en JavaScript pour qu\'ils soient éxécutés plus rapidement. Pour l\'essayer, Entrez une URL ou l\'ID d\'un projet ci-dessus ou choisissez l\'un des projets sélectionné.","tw.input.tooltip":"Copie et colle le lien d\'un projet Scratch ici !","tw.invalidParameters.clones":"Le paramètre d\'URL \\"clone\\" n\'est pas valide.","tw.invalidParameters.fps":"Le paramètre d\'URL \\"fps\\" n\'est pas valide.","tw.loadError":"Impossible de charger le projet : {error}","tw.loader.assets.known":"Téléchargement des assets ({complete}/{total}) ...","tw.loader.assets.unknown":"Téléchargement des assets ...","tw.loader.data":"Téléchargement des données du projet …","tw.loader.generic":"Lecture du projet ...","tw.menuBar.60off":"Désactiver le mode 60 FPS","tw.menuBar.60on":"Activer le mode 60 FPS","tw.menuBar.advanced":"Avancé","tw.menuBar.changeUsername":"Changer le nom d\'utilisateur","tw.menuBar.cloudOff":"Désactiver les variables cloud","tw.menuBar.cloudOn":"Activer les variables cloud","tw.menuBar.cloudUnavailable":"Les variables cloud ne sont pas disponibles","tw.menuBar.cloudUnavailableAlert":"Impossible d\'utiliser les variables cloud, probablement parce que vous avez ouvert l\'éditeur.","tw.menuBar.compileError":"{sprite} : {error}","tw.menuBar.moreSettings":"Paramètres Avancés","tw.menuBar.newFramerate":"Nouveau ratio d\'images par seconde :","tw.menuBar.package":"Empaqueter le projet","tw.menuBar.reportError1":"Certains scripts ne peuvent pas être compilés.","tw.menuBar.reportError2":"Ceci est un bug. Merci de le signaler.","tw.menuBar.saveAs":"Enregistrer sous {file}","tw.menuBar.seeInside":"Voir à l\'intérieur","tw.oldDownload":"Enregistrer dans un fichier séparé...","tw.opcode.2000":"jours depuis 2000","tw.opcode.mousedown":"clic gauche?","tw.opcode.mousex":"souris x","tw.opcode.mousey":"souris y","tw.openAdvanced":"Ouvrir les paramètres avancés","tw.paint.alpha":"Opacité","tw.privacy":"Politique de Confidentialité","tw.saveAs":"Enregistrer sous...","tw.saveTo":"Sauvegarder sous {file}","tw.scratchUnsafeCloud":"Si vous créez cette variable cloud, le projet dépassera la limite de Scratch de {number} variables, et certaines variables ne fonctionneront pas si vous téléchargez le projet dans Scratch.","tw.settingsModal.customStageSize":"Taille de la scène personnalisé :","tw.settingsModal.customStageSizeHelp":"Change la taille de la scène Scratch de 480x360 à autre chose. Essayez 640x360 pour rendre la scène grand écran. Très peu de projets gèrent cela correctement.","tw.settingsModal.dangerZone":"Zone de danger","tw.settingsModal.disableCompiler":"Désactiver le compilateur","tw.settingsModal.disableCompilerHelp":"Désactive le compilateur de TurboWarp. Utile si vous souhaitez modifier votre programme pendant que ce dernier est en train de tourner. Autrement, éviter d\'activer cette option.","tw.settingsModal.featured":"En vedette","tw.settingsModal.fps":"60 FPS (personnalisé)","tw.settingsModal.fpsHelp":"Exécute les scripts 60 fois par seconde au lieu de 30. La plupart des projets ne fonctionneront pas correctement si cette option est activée. Vous devriez essayer l\'interpolation avec le mode 60 FPS désactivé si tel est le cas.{customFramerate}","tw.settingsModal.fpsHelp.customFramerate":"Clique pour utiliser un autre ratio d\'images par seconde (FPS) que 30 ou 60","tw.settingsModal.help":"Clique pour obtenir de l\'aide","tw.settingsModal.highQualityPen":"Stylo de haute qualité","tw.settingsModal.highQualityPenHelp":"Permet aux projets utilisant le stylo d\'utiliser une plus grande résolution et permet de désactiver certains arrondis dans les coordonnées de l\'éditeur. Tout le projet ne bénéfie pas de ce paramètre et il peut impacter la performance.","tw.settingsModal.infiniteClones":"Clones Infinis","tw.settingsModal.infiniteClonesHelp":"Désactive la limite de 300 clones de Scratch","tw.settingsModal.interpolationHelp":"Rend les projets plus fluides en interpolant le mouvement du sprite. L\'interpolation ne doit pas être utilisée sur les projets 3D, les lanceurs de rayons, les projets de stylet et les projets décalés, car l\'interpolation les ralentira sans les rendre plus lisses.","tw.settingsModal.largeStageWarning":"Utiliser une taille de scène personnalisée plus large n\'est pas recommandé. Utilisez plutôt cette option pour une taille plus petite et avec le même ration longueur/largeur pour que le projet soit facilement utilisable par n\'importe quel utilisateur.","tw.settingsModal.removeFencing":"Supprimer les limites","tw.settingsModal.removeFencingHelp":"Permet aux sprites de se déplacer hors de l\'écran, de devenir aussi grands ou aussi petits qu\'ils le souhaitent et de faire fonctionner les blocs tactiles hors de l\'écran.","tw.settingsModal.removeLimits":"Supprimer les limites","tw.settingsModal.removeMiscLimits":"Supprimer diverses limites","tw.settingsModal.removeMiscLimitsHelp":"Supprime les limites des effets sonores ou celles de la taille du stylo.","tw.settingsModal.storeProjectOptions":"Sauvegarder les paramètres du projet.","tw.settingsModal.storeProjectOptionsHelp":"Stocke les paramètres sélectionnés dans le projet afin qu\'ils soient automatiquement appliqués lorsque TurboWarp charge ce projet. Le temporisateur Warp et le compilateur désactivé ne seront pas enregistrés.","tw.settingsModal.title":"Paramètres Avancés","tw.settingsModal.warpTimer":"Vérificateur de boucles infinies.","tw.settingsModal.warpTimerHelp":"Vérifie si les scripts sont bloqués dans des boucles infinies, et le cas échéant, fait tourner le programme a une vitesse très réduite pour empêcher le logiciel de crasher. Cela peut cependant fortement impacter les performances du programme.","tw.spriteSelectorItem.rename":"renommer","tw.stereo":"Stéréo","tw.stereoAlert":"L\'édition de ce son stéréo le convertira irréversiblement en mono.","tw.studioview.authorAttribution":"Fait par {author}","tw.studioview.error":"Il y a eu une erreur dans le chargement de la page suivante des projets","tw.studioview.hoverText":"{title} fait par {author}","tw.tooLarge":"Ce son peut être trop volumineux pour être chargé dans Scratch.","tw.twExtension.name":"Blocs TurboWarp","tw.unshared.2":"Pour plus d\'informations, visitez : {link}","tw.unshared.cache":"Si le projet a été partagé récemment, ce message peut s\'afficher de manière incorrecte pendant quelques minutes.","tw.usernameModal.help":"Cette valeur sera stockée dans la mémoire de votre navigateur. Il peut être consigné lorsque vous interagissez avec des projets contenant des variables cloud.","tw.usernameModal.help2":"Les valeurs qui ne correspondent pas à un compte Scratch valide seront généralement rejetées par le serveur de variables cloud. Nous vous recommandons de le laisser tel quel ou de le remplacer par votre nom d\'utilisateur Scratch.","tw.usernameModal.mustChange":"Désolé, le serveur de variables cloud pense que votre nom d\'utilisateur n\'est peut-être pas sûr. Veuillez le changer pour autre chose ou{resetIt}.","tw.usernameModal.mustChange.resetIt":"réinitialiser (recommandé)","tw.usernameModal.reset":"Réinitialiser","tw.usernameModal.title":"Changer votre nom d\'utilisateur","tw.viewFeaturedProjects":"Cliquez pour voir les projets sélectionnés.","tw.viewOnScratch":"Voir le projet sur Scratch"},"he":{"tw.alerts.creatingRestorePoint":"ביצוע נקודת שחזור קוד","tw.alerts.savedToDisk":"הקובץ נשמר בהתקן שלך.","tw.blocks.addons":"הרחבות","tw.blocks.buttonIsDown":"[MOUSE_BUTTON]לחצן העכבר נלחץ?","tw.blocks.lastKeyPressed":"מקש אחרון שנלחץ על המקלדת","tw.blocks.mouseButton.middle":"(1) במרכז","tw.blocks.mouseButton.primary":"(0)נורמלי","tw.blocks.mouseButton.secondary":"(2) שני","tw.changeUsername.cannotChangeWhileRunning":"אינך יכול לשנות את שם המשתמש שלך כאשר פרויקט הקוד פועל.","tw.code":"קוד קוד פתוח","tw.featuredProjectsStudio":"הצג את הסטודיו על קידוד שריטות","tw.feedback":"הצעות ושגיאות","tw.feedbackButton":"תנו הצעות","tw.gui.crashMessage.description":"אנו מתנצלים; נראה שהדף קרס. אנא רענן דף זה כדי לנסות שוב.","tw.gui.defaultProjectTitle":"פרויקט קידוד","tw.home.credit":"מידע וייחוסים","tw.home.description":"TurboWarp מבוסס על Scratch, אבל הוא מרכיב פרויקטי קוד ל-JavaScript כדי לגרום להם לרוץ ממש מהר. נסה זאת על ידי הזנת מזהה פרויקט או כתובת אתר למעלה או באמצעות פרויקט קוד מוצג למטה.","tw.home.instructions":"איך להישתמש","tw.invalidParameters.clones":"פרמטר כתובת האתר \\"כפול\\" אינו חוקי","tw.invalidParameters.fps":"פרמטר כתובת האתר \\"מסגרות לשנייה\\" אינו חוקי","tw.loader.assets.known":"הורדה של נכסים({complete}/{total})...","tw.loader.assets.unknown":"הורדה של נכסים","tw.loader.data":"מוריד נתונים...","tw.loader.generic":"טוען קוד...","tw.menuBar.60off":"כבה את מצב \\"מסגרות גבוהות לשנייה\\".","tw.menuBar.60on":"הפעל את מצב \\"פריימים גבוהים לשניה\\".","tw.menuBar.addons":"הרחבות","tw.menuBar.changeUsername":"לשנות את שם המשתמש","tw.menuBar.cloudOff":"כבה את משתני השרת","tw.menuBar.cloudOn":"אפשר משתני שרת","tw.menuBar.cloudUnavailable":"משתני שרת אינם זמינים","tw.menuBar.cloudUnavailableAlert":"משתני שרת אינם זמינים. אתה כנראה משתמש בעורך הקוד.","tw.menuBar.compileError":"{sprite}:{error}","tw.menuBar.newFramerate":"קצב חדש של מסגרות לשנייה:","tw.menuBar.reportError1":"לא ניתן היה להרכיב חלק מהקוד.","tw.menuBar.reportError2":"יש שגיאה. אנא צור איתי קשר בנושא.","tw.menuBar.saveAs":"הורד בשם{file}","tw.menuBar.seeInside":"עיין בקוד המקור","tw.privacy":"מדיניות הפרטיות","tw.studioview.authorAttribution":"על ידי{author}","tw.studioview.error":"לא ניתן היה לטעון את העמוד הבא של פרויקטי קוד.","tw.studioview.hoverText":"{title}נוצר על ידי{author}","tw.usernameModal.reset":"אִתחוּל","tw.usernameModal.title":"לשנות את שם המשתמש","tw.viewFeaturedProjects":"לחץ על כפתור זה כדי להציג פרויקטי קוד נבחרים."},"hu":{"tw.alerts.creatingRestorePoint":"Helyreállítási pont készítése...","tw.alerts.savedToDisk":"Mentve a számítógépre.","tw.backpack.rename":"Új név:","tw.blocks.addons":"Kiegészítők","tw.blocks.buttonIsDown":"[MOUSE_BUTTON] egérbillentyű lenyomva?","tw.blocks.lastKeyPressed":"utolsó lenyomott billentyű","tw.blocks.mouseButton.middle":"(1) középső","tw.blocks.mouseButton.primary":"(0) elsődleges","tw.blocks.mouseButton.secondary":"(2) másodlagos","tw.blocks.openDocs":"Dokumentáció megnyitása","tw.browserModal.desc":"Győződj meg róla, hogy egy friss verzióját használod a Google Chrome-nak, Mozilla Firefoxnak, Microsoft Edge-nek vagy Apple Safarinak.","tw.changeUsername.cannotChangeWhileRunning":"A felhasználónév nem változtatható meg a projekt futása alatt.","tw.code":"Forráskód","tw.confirmIncompatibleExtension":"Ez a kiegészítés nem kompatibilis a Scratchhel. Ezzel készített projekteket nem lehet feltölteni a Scratch weboldalára. Biztos, hogy mégis engedélyezni szeretnéd őket?","tw.customExtension.name":"Egyéni Kiegészítő","tw.customExtensionModal.file":"Fájl","tw.featuredProjectsStudio":"Műhely megtekintése a Scratchen.","tw.feedback":"Visszajelzés és Hibák","tw.feedbackButton":"Visszajelzés a TurboWarpról","tw.footer.credits":"Stáblista","tw.footer.disclaimer":"A TurboWarp nem tagja, vagy leányvállalata a Scratchnek, a Scratch Csapatnak vagy a Scratch Alapítványnak.","tw.footer.embed":"Beágyazás","tw.footer.parameters":"URL Paraméterek","tw.gui.crashMessage.description":"Nagyon sajnáljuk, de úgy tűnik, hogy a projekt összeomlott. Kérjük frissítsd az oldalt, és próbáld újra.","tw.gui.defaultProjectTitle":"Projekt","tw.guiDefaultTitle":"Scratch projektek futtatása gyorsabban","tw.home.credit":"Megjegyzések és stáblista","tw.home.description":"A TurboWarp egy Scratch-modifikáció, ami átfordítja a projekteket JavaScriptbe, így igazán gyorsan lefuttatva őket. Próbálja ki egy projekt azonosítójával (ID), vagy URL-jével a fenti mezőbe beillesztve, illetve egy kiemelt projekt választásával lentről.","tw.home.instructions":"Utasítások","tw.input.tooltip":"Másolj, majd illessz be Scratch-projekt linkeket ide!","tw.interpolationEnabled":"Interpoláció","tw.invalidParameters.clones":"A \\"clone\\" URL paraméter érvénytelen","tw.invalidParameters.fps":"Az \\"fps\\" URL paraméter nem érvényes","tw.loader.assets.known":"Tartozékok letöltése ({complete}/{total}) …","tw.loader.assets.unknown":"Eszközök betöltése ...","tw.loader.data":"Projektadatok letöltése ...","tw.loader.generic":"Projekt betöltése ...","tw.menuBar.60off":"A 60 FPS mód kikapcsolása","tw.menuBar.60on":"60 FPS Mód bekapcsolása","tw.menuBar.addons":"Kiegészítők","tw.menuBar.advanced":"Haladó","tw.menuBar.changeUsername":"Felhasználónév Megváltoztatása","tw.menuBar.cloudOff":"Megosztott változók kikapcsolása","tw.menuBar.cloudOn":"Megosztott Változók engedélyezése","tw.menuBar.cloudUnavailable":"Nem érhetőek el a Megosztott Változók","tw.menuBar.cloudUnavailableAlert":"Nem használhatóak a megosztott változók, legvalószínűbben azért, mert megnyitottad a szerkesztőt.","tw.menuBar.moreSettings":"Haladó Beállítások","tw.menuBar.newFramerate":"Új képkockaarány:","tw.menuBar.reportError1":"Néhány szkriptet nem sikerült lefordítani.","tw.menuBar.reportError2":"Ez egy hiba. Kérjük jelentsd.","tw.menuBar.saveAs":"Mentés {file}-ként","tw.menuBar.seeInside":"Megnézem belülről","tw.paint.alpha":"Áttetszőség","tw.privacy":"Adatvédelmi Irányelvek","tw.settingsModal.customStageSize":"Egyedi Színpadméret:","tw.settingsModal.customStageSizeHelp":"Megváltoztatja a méretét a Scratch színpadnak 480×360-ról valami másra. Próbálja ki a 640×360-t, hogy a színpad képernyő méretű legyen. Csak nagyon kevés projekt kezeli ezt megfelelően.","tw.settingsModal.dangerZone":"Veszélyzóna","tw.settingsModal.disableCompiler":"Fordítóprogram kikapcsolása","tw.settingsModal.disableCompilerHelp":"Letiltja a TurboWarp fordítóprogramját. Projektek szerkesztése közben elképzelhető, hogy szüksége lehet rá a szkriptek azonnali frissítése végett. Egyéb helyzetekben sose kapcsolja be ezt!","tw.settingsModal.featured":"Kiemelt","tw.settingsModal.fps":"60 FPS (Egyéni FPS)","tw.settingsModal.fpsHelp":"Az utasításokat 30 helyett 60-szor futtatja le másodpercenként. A legtöbb projekt nem fog megfelelően működni ezzel. Ki kell próbálnod az Interpolációt 60 FPS nélkül, ha ez a helyzet. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Kattintson 30, vagy 60-tól eltérő képkockaarány használatához","tw.settingsModal.help":"Kattintson segítségért","tw.settingsModal.highQualityPen":"Magas Minőségű Toll","tw.settingsModal.highQualityPenHelp":"Lehetővé teszi a tollal készített projekteket, hogy magasabb felbontásban fussanak, valamint letilt bizonyos koordinátakerekítést is a szerkesztőben. Nem minden projektnek előnyös ez a beállítás, valamint lehet, hogy a teljesítményre is hatással van.","tw.settingsModal.infiniteClones":"Végtelen másolatszám","tw.settingsModal.infiniteClonesHelp":"Letiltja a Scratch 300-as másolatkorlátját","tw.settingsModal.interpolation":"Interpoláció","tw.settingsModal.interpolationHelp":"Simábban jeleníti meg a projekteket azáltal, hogy interpolálja a szereplők mozgását. Az interpolációt nem szabad 3D projektekre, \\"raytracer\\"-ekre, tollat használó projektekre és laggolós projektekre alkalmazni, hiszen az interpoláció csak lassabbá fogja tenni a lefuttatásukat, viszont a megjelenésükön nem fog igazítani.","tw.settingsModal.largeStageWarning":"Egyéni színpadméret használatánál nem ajánlott ilyen nagyot alkalmazni. Helyette használj egy kisebb méretet, de megegyező aránnyal, és bízd rá a teljes képernyőre, hogy felnagyítsa a felhasználó lejátszójának méretéhez.","tw.settingsModal.removeFencing":"Lekerítés eltávolítása","tw.settingsModal.removeFencingHelp":"Lehetővé teszi a szereplőket, hogy a színpadon kívülre menjenek, olyan nagyok, vagy kicsik legyenek, amilyenek csak akarnak, valamint az érzékelős blokkokat is működőképessé teszi színpadon kívül is.","tw.settingsModal.removeLimits":"Korlátok eltávolítása","tw.settingsModal.removeMiscLimits":"Egyéb Korlátok Eltávolítása","tw.settingsModal.removeMiscLimitsHelp":"Eltávolítja a hangeffekt limiteket, és a tollméret korlátozottságait.","tw.settingsModal.storeProjectOptions":"Beállítások eltárolása a projektben.","tw.settingsModal.storeProjectOptionsHelp":"Eltárolja a kiválasztott beállításokat a projektben, így azonnal alkalmazhatja a TurboWarp őket betöltésnél. A Warp Időzítő és a Fordítóprogram Kikapcsolása nem lesz elmentve.","tw.settingsModal.title":"Haladó Beállítások","tw.settingsModal.warpTimer":"Warp Időzítő","tw.settingsModal.warpTimerHelp":"Leellenőrzi a szkripteket, hogy nem-e ragadtak bele egy hosszú- vagy végtelen-ciklusba, és alacsony képkockaarányban futtatja őket, ahelyett hogy leragadjanak, amíg a ciklus véget ér. Ez tehát megjavítja a legtöbb összeomlást, de cserébe van egy jelentős teljesítménybehatása is, így csak a szerkesztőben van automatikusan bekapcsolva.","tw.spriteSelectorItem.rename":"átnevezés","tw.studioview.authorAttribution":"{author} által","tw.studioview.error":"Hiba történt a projektek következő oldalának betöltése közben.","tw.studioview.hoverText":"{title}, {author} által","tw.twExtension.name":"TurboWarp Blokkok","tw.usernameModal.help":"Ez az érték a böngésződ tárában fog eltárolódni. Lehet, hogy naplózva lesz amikor olyan projektekkel lépsz kapcsolatba, amik tartalmaznak megosztott változókat.","tw.usernameModal.help2":"Olyan értékeket, amik nem egyeznek meg egy érvényes Scratch fiókkal sem, a megosztott változók szervere elutasít jellemzően. Azt javasoljuk, hogy hagyd, ahogy van, vagy állítsd a Scratch felhasználónevedre.","tw.usernameModal.mustChange":"Bocsánat, a megosztott változók szervere szerint a felhasználóneved nem lehet föltétlenül biztonságos. Kérjük változtasd meg valami másra, vagy {resetIt}.","tw.usernameModal.mustChange.resetIt":"állítsd vissza (ajánlott)","tw.usernameModal.reset":"Visszaállítás","tw.usernameModal.title":"Felhasználónév Megváltoztatása","tw.viewFeaturedProjects":"Egy kattintás a kiemelt projektek megtekintéséhez.","tw.viewOnScratch":"Projekt megtekintése a Scratchen."},"it":{"tw.alerts.creatingRestorePoint":"Creazione di un punto di ripristino...","tw.alerts.lostPeripheralConnection":"Persa la connessione a {extensionName}.","tw.alerts.restorePointError":"Impossibile creare il punto di ripristino","tw.alerts.restorePointSuccess":"Puoi accedere ai punti di ripristino nel menu \\"File\\"","tw.alerts.savedToDisk":"Salvato sul computer.","tw.backpack.rename":"Nuovo nome:","tw.blocks.PROCEDURES_DOCS":"Come usare il blocco Risultato","tw.blocks.PROCEDURES_RETURN":"risultato {v}","tw.blocks.PROCEDURES_TO_REPORTER":"Trasforma in Monitor","tw.blocks.PROCEDURES_TO_STATEMENT":"Trasforma in Comando","tw.blocks.addons":"Addon","tw.blocks.buttonIsDown":"pulsante [MOUSE_BUTTON] del mouse premuto","tw.blocks.lastKeyPressed":"ultimo tasto premuto","tw.blocks.mouseButton.middle":"(1) centrale","tw.blocks.mouseButton.primary":"(0) primario","tw.blocks.mouseButton.secondary":"(2) secondario","tw.blocks.openDocs":"Apri Documentazione","tw.browserModal.desc":"Assicurati di usare una versione recente di Google Chrome, Mozilla Firefox, Microsoft Edge o Apple Safari.","tw.cantUseCloud":"Sebbene tu possa creare variabili cloud, queste funzioneranno solo quando il progetto sarà stato caricato sul sito di Scratch o sarà stato convertito usando un tool come {packager}.","tw.changeUsername.cannotChangeWhileRunning":"Non è possibile cambiare lo username mentre il progetto è in esecuzione.","tw.clipboard.danger":"Se i tuoi appunti contengono delle password, il progetto può condividerle con altri utenti o altri server.","tw.clipboard.permission":"L\'accesso agli appunti potrebbe non funzionare in alcuni browser. Se consentito, accessi futuri agli appunti verranno conserntiti automaticamente.","tw.clipboard.title":"Il progetto vuole leggere dei dati dai tuoi appunti.","tw.cloudProvider":"Server fornito da {name}.","tw.cloudServers":"Scegli un server vicino a te:","tw.code":"Codice Sorgente","tw.confirmIncompatibleExtension":"Questa estensione non è compatibile con Scratch. I progetti che vengono creati con essa non possono essere caricati sul sito di Scratch. Sei sicuro di volerla attivare?","tw.createdBy":"Creato da:","tw.customCloudServer":"Usare un server personale per le variabili cloud: {server}","tw.customExtension.description":"Carica estensioni personalizzate da URL, file o codice Javascript.","tw.customExtension.name":"Estensioni Personalizzate","tw.customExtensionModal.load":"Carica","tw.customExtensionModal.promptFile":"Seleziona il file Javascript dell\'estensione:","tw.customExtensionModal.promptText":"Incolla il codice JavaScript dell\'estensione:","tw.customExtensionModal.promptURL":"Inserisci la URL dell\'estensione:","tw.customExtensionModal.text":"Testo","tw.customExtensionModal.title":"Carica Estensione Personalizzata","tw.customExtensionModal.trusted":"L\'estensione verrà caricata senza sandbox in quanto proviene da una fonte affidabile.","tw.customExtensionModal.unsandboxed":"Esegui l\'estensione senza sandbox","tw.customExtensionModal.unsandboxedWarning1":"Caricare le estensioni senza sandbox è rischioso, non dovresti abilitarlo se non sai esattamente cosa stai facendo.","tw.customExtensionModal.unsandboxedWarning2":"Le estensioni eseguite senza sandbox possono corrompere il tuo progetto, cancellare le tue impostazioni, rubare le tue password e fare altre cose malevole. Gli sviluppatori di {APP_NAME} non si ritengono responsabili per qualunque problema dovesse verificarsi.","tw.customExtensionModal.untrusted":"Le estensioni da URL non affidabili saranno sempre caricate con una sandbox per ragioni di sicurezza.","tw.customReporters.description":"Permette ai blocchi personalizzati di restituire un valore e di essere usati come monitor.","tw.customReporters.name":"Monitor Personalizzati","tw.documentation":"Documentazione","tw.embed.persistent":"Nel caso l\'inserimento venga consentito, futuri tentativi di inserimento di contenuti provenienti dallo stesso sito saranno automaticamente consentiti.","tw.embed.risks":"Anche se il contenuto sarà inserito in una sandbox, avrà comunque accesso alle informazioni sul tuo dispotivo come il tuo indirizzo IP e la tua posizione.","tw.embed.title1":"Il progetto sta cercando di inserire del contenuto HTML sopra allo Stage:","tw.embed.title2":"Il progetto sta cercando di inserire contenuto remoto sopra allo Stage:","tw.extensionGallery.error":"Errore nel caricamento della galleria delle estensioni. Visita extensions.turbowarp.org per ulteriori informazioni sulle estensioni.","tw.extensionGallery.loading":"Caricamento galleria estensioni in corso...","tw.extensionGallery.more":"Ulteriori informazioni sulle estensioni disponibili a extensions.turbowarp.org.","tw.extensionGallery.name":"Galleria delle Estensioni di TurboWarp","tw.favorite":"Preferito","tw.featuredProjectsStudio":"Vai alla galleria sul sito di Scratch.","tw.feedback":"Feedback & Bug","tw.feedbackButton":"Feedback per TurboWarp","tw.fetch.title":"Il progetto vuole collegarsi al sito:","tw.fileInput.none":"Nessun file selezionato.","tw.fileInput.selected":"Selezionato: {name}","tw.fonts.add":"Aggiungi","tw.fonts.custom.file":"Seleziona un file di caratteri dal tuo computer:","tw.fonts.custom.name":"Dai un nome la carattere:","tw.fonts.custom1":"Aggiungi carattere da un file","tw.fonts.custom2":"Di solito non funziona in Scratch. Formati supportati: {formats}.","tw.fonts.delete":"Sei sicuro di voler cancellare \\"{font}\\"? Tutti i costumi vettoriali che lo usano useranno al suo posto il carattere sostitutivo.","tw.fonts.fallback":"Scegli un carattere sostitutivo da usare se il carattere non può essere caricato o se viene cancellato:","tw.fonts.list":"Caratteri installati:","tw.fonts.none":"Ancora nessun carattere aggiunto.","tw.fonts.readError":"Errore nella lettura del file di caratteri: {error}","tw.fonts.system":"Carattere di sistema","tw.fonts.system.name":"Inserisci il nome di un carattere presente nel tuo computer. Il carattere potrebbe non apparire a tutti in modo corretto.","tw.fonts.system1":"Aggiungi un carattere di sistema","tw.fonts.system2":"Potrebbe funzionare in Scratch, ma potrebbe non apparire per tutti in modo corretto.","tw.fonts.title":"Caratteri","tw.footer.credits":"Crediti","tw.footer.disclaimer":"TurboWarp non è affiliato a Scratch, allo Scratch Team o alla Scratch Foundation.","tw.footer.documentation":"Documentazione","tw.footer.donate":"Dona","tw.footer.embed":"Inclusione","tw.footer.parameters":"Parametri URL","tw.geolocate.permission":"Se consentito, il tuo browser potrebbe chiederti di consentire l\'accesso alla localizzazione.","tw.geolocate.title":"Il progetto vuole conoscere la tua posizione.","tw.gui.crashMessage.description":"Ci dispiace, sembra che la pagina abbia avuto un arresto anomalo. Aggiorna la pagina per riprovare.","tw.gui.defaultProjectTitle":"Progetto","tw.guiDefaultTitle":"Esegue i progetti Scratch più velocemente","tw.home.credit":"Note e Crediti","tw.home.description":"TurboWarp è una Modifica di Scratch che compila i progetti in JavaScript per renderli molto più veloci. Provalo, inserisci qui sopra un ID di un progetto o una URL o scegli uno dei progetti in primo piano che trovi qui sotto.","tw.home.instructions":"Istruzioni","tw.input.tooltip":"Copia e incolla il link di un progetto Scratch qui!","tw.interpolationEnabled":"Interpolazione","tw.invalidParameters.clones":"Il parametro URL \\"clone\\" non è valido","tw.invalidParameters.fps":"Il parametro URL \\"fps\\" non è valido","tw.loadError":"Errore nel caricamento del progetto: {error}","tw.loadExtension.embedded":"Il progetto vuole caricare una estensione personalizzata con il seguente codice:","tw.loadExtension.sandboxed":"Anche se il codice è eseguito in una sandbox, l\'estensione avrà comunque accesso a informazioni sul tuo dispositivo come ad esempio il tuo indirizzo IP e la tua localizzazione. Assicurati di fidarti dell\'autore dell\'estensione prima di continuare.","tw.loadExtension.unsandboxed":"Esegui l\'estensione senza sandbox","tw.loadExtension.unsandboxedWarning":"Le estensioni eseguite senza sandbox possono corrompere il tuo progetto, cancellare le tue impostazioni, rubare le tue password e fare altre cose malevole. Gli sviluppatori di {APP_NAME} non si ritengono responsabili per qualunque problema dovesse verificarsi.","tw.loadExtension.url":"Il progetto vuole caricare una estensione personalizzata dall\'URL:","tw.loader.assets.known":"Scaricamento risorse in corso ({complete}/{total}) ...","tw.loader.assets.unknown":"Scaricamento risorse in corso ...","tw.loader.data":"Scaricamento dati del progetto in corso...","tw.loader.generic":"Caricamento del progetto in corso …","tw.lockdownMode":"Nei dispositivi Apple devi disabilitare la {lockdownMode}.","tw.lockdownMode2":"Modalità di Isolamento","tw.menuBar.60off":"Disabilita modalità 60 FPS","tw.menuBar.60on":"Abilita modalità 60 FPS","tw.menuBar.addons":"Addon","tw.menuBar.advanced":"Impostazioni Avanzate","tw.menuBar.changeUsername":"Cambia Username","tw.menuBar.cloudOff":"Disabilita Variabili Cloud","tw.menuBar.cloudOn":"Abilita Variabili Cloud","tw.menuBar.cloudUnavailable":"Le Variabili Cloud non sono Disponibili","tw.menuBar.cloudUnavailableAlert":"Impossibile usare le variabili cloud, probabilmente perché è stato aperto l\'editor.","tw.menuBar.cloudUnavailableDesktop":"Non è possibile usare le variabili cloud nell\'app desktop.","tw.menuBar.moreSettings":"Impostazioni Avanzate","tw.menuBar.newFramerate":"Nuovo framerate:","tw.menuBar.newWindow":"Nuova finestra","tw.menuBar.package":"Crea pacchetto","tw.menuBar.reportError1":"Non è stato possibile compilare tutti gli script.","tw.menuBar.reportError2":"Si è verificato un problema. Ti invitiamo a segnalarlo.","tw.menuBar.restorePoints":"Punti di ripristino","tw.menuBar.saveAs":"Salva come {file}","tw.menuBar.seeInside":"Guarda dentro","tw.moreCloud":"Ulteriori informazioni sulle variabili cloud","tw.notify.permission":"Se viene consentito, il tuo browser potrebbe chiederti se vuoi consentire le notifiche e le future notifiche saranno consentite automaticamente.","tw.notify.title":"Il progetto vuole mostrare delle notifiche.","tw.oldDownload":"Salve in un file separato...","tw.opcode.2000":"giorni dal 2000","tw.opcode.mousedown":"pulsante del mouse premuto","tw.opcode.mousex":"x del mouse","tw.opcode.mousey":"y del mouse","tw.openAdvanced":"Apri impostazioni avanzate","tw.openWindow.dangerous":"Questo sito web non è stato recensito dagli sviluppatori di {APP_NAME}. Può contenere codice pericoloso o dannoso.","tw.openWindow.title":"Il progetto richiede di aprire in una nuova finestra o scheda l\'URL:","tw.paint.alpha":"Opacità","tw.paint.fonts.more":"Aggiungi caratteri...","tw.privacy":"Politica della Privacy","tw.recordAudio.permission":"Se viene consentito, il tuo browser potrebbe chiederti se vuoi consentire l\'accesso al micrfono e i futuri accessi al microfono saranno consentiti automaticamente.","tw.recordAudio.title":"Il progetto vuole registrare l\'audio del microfono. L\'audio includerà una trascrizione testuale o dati audio grezzi. Il progetto potrebbe condividere l\'audio con altri utenti o altri server.","tw.recordVideo.permission":"Se viene consentito, il tuo browser potrebbe chiederti se vuoi consentire l\'accesso alla webcam e i futuri accessi alla webcam saranno consentiti automaticamente.","tw.recordVideo.title":"Il progetto vuole registrare il video della tua webcam. Il progetto potrebbe condividere immagini con altri utenti o altri server.","tw.redirect.dangerous":"Questo sito web non è stato recensito dagli sviluppatori di {APP_NAME}. Può contenere codice pericoloso o dannoso.","tw.redirect.title":"Il progetto richiede di aprire in questa scheda l\'URL:","tw.restorePoints.1minute":"ogni minuto","tw.restorePoints.assets":"{n} risorse","tw.restorePoints.confirmDelete":"Sei sicuro di voler cancellare \\"{projectTitle}\\"? Questa operazione non potrà essere annullata.","tw.restorePoints.confirmDeleteAll":"Sei sicuro di voler cancellare TUTTI i punti di ripristino? Questa operazione non potrà annullata.","tw.restorePoints.confirmLoad":"Ci sono modifiche non salvate. Rimpiazzare il progetto corrente?","tw.restorePoints.deleteAll":"Rimuovi Tutto","tw.restorePoints.description":"{APP_NAME} salva periodicamente dei punti di ripristino sul computer per aiutarti a recuperare il progetto se dimentichi di salvare. Questo sistema fornisce un ultima risorsa per poter recuperare il tuo progetto. il tuo computer potrebbe rimuovere senza preavviso questi punti di interruzione. NON fare affidamento su questa possibilità.","tw.restorePoints.empty":"Nessun punto di ripristino trovato.","tw.restorePoints.error":"Errore nel caricamento del punto di ripristino: {error}","tw.restorePoints.intervalOption":"I punti di ripristino vengono creati {time}.","tw.restorePoints.loading":"Caricamento...","tw.restorePoints.minutes":"ogni {n} minuti","tw.restorePoints.never":"mai","tw.restorePoints.off":"Disabilitare i punti di ripristino è rischioso.","tw.restorePoints.size":"Spazio di archiviazione usato: {size}","tw.restorePoints.size2":"Costumi e suoni usati da più punti di ripristino vengono archiviati una sola volta.","tw.restorePoints.title":"Ripristina Punti di Ripristino","tw.sample":"Progetto di esempio","tw.saveAs":"Salva come...","tw.saveTo":"Salva come {file}","tw.scratchUnsafeCloud":"Se crei questa variabile cloud, il progetto supererà il limite massimo di {number} variabili previsto da Scratch e alcune variabili non funzioneranno se caricerai il progetto sul sito di Scratch.","tw.securityManager.allow":"Consenti","tw.securityManager.deny":"Nega","tw.securityManager.title":"Sicurezza Estensione","tw.securityManager.trust":"Se si dà il permesso, richieste future allo stesso sito web verranno permesse automaticamente.","tw.securityManager.why":"Potrebbe venire utilizzato per scraicare immagini e suoni, implementare funzionalità multiplayer, accedere ad una API, oppure per scopi dannosi. Condividerà con il sito il tuo indirizzo IP, la tua area geografica e potenzialmente anche altri dati.","tw.settingsModal.customStageSize":"Dimensioni Stage Personalizzate:","tw.settingsModal.customStageSizeHelp":"Cambia la dimensione dello stage di Scratch da 480x360 a un altro valore. Prova 640x360 per rendere lo stage widescreen. Pochi progetti potranno gestire questa proprietà.","tw.settingsModal.dangerZone":"Zona Pericolosa","tw.settingsModal.disableCompiler":"Disabilita Compilatore","tw.settingsModal.disableCompilerHelp":"Disabilita il compilatore di TurboWarp. E\' un\'opzione utile soltanto quando si modificano i progetti, in modo che gli script si aggiornino immediatamente. Si sconsiglia di usare questa opzione in altri casi.","tw.settingsModal.featured":"In Evidenza","tw.settingsModal.fps":"60 FPS (FPS personalizzato)","tw.settingsModal.fpsHelp":"Esegue gli script 60 volte al secondo invece di 30. Alcuni progetti potrebbero non funzionare correttamente con questa impostazione abilitata. In questo caso puoi provare ad abilitare l\'interpolazione senza abilitare la modalità 60 FPS. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Clicca qui per usare un framerate diverso da 30 o 60","tw.settingsModal.help":"Clicca per aiuto","tw.settingsModal.highQualityPen":"Penna Alta Qualità","tw.settingsModal.highQualityPenHelp":"Permette ai progetti di essere visualizzati ad una risoluzione maggiore e disabilita l\'arrotondamento delle coordinate fatto dall\'editor. Non tutti i progetti si giovano di questa impostazione che può avere impatto sulla performance del progetto.","tw.settingsModal.infiniteClones":"Cloni Infiniti","tw.settingsModal.infiniteClonesHelp":"Disabilita il limite di Scratch di 300 cloni.","tw.settingsModal.interpolation":"Interpolazione","tw.settingsModal.interpolationHelp":"Fa apparire i progetti più fluidi interpolando il movimento degli sprite. L\'interpolazione non dovrebbe essere usata nei progetti 3D, nei raytracer, nei progetti basati sull\'uso della penna e nei progetti che laggano in quanto l\'interpolazione li farebbe eseguire più lentamente senza farli apparire più fluidi.","tw.settingsModal.largeStageWarning":"L\'uso di uno stage personalizzato così grande non è raccomandato! Ti suggeriamo di usare una dimensione inferiore con le stesse proporzioni e usare poi il fullscreen per portarlo alle dimensioni dello schermo dell\'utente.","tw.settingsModal.removeFencing":"Rimozione Recinto","tw.settingsModal.removeFencingHelp":"Permette agli sprite di muoversi completamente fuori dallo Stage e di diventare grandi o piccoli quando si desidera e permette ai blocchi sensori che verificano il contatto di funzionare anche quando gli sprite sono completamente fuori dallo Stage.","tw.settingsModal.removeLimits":"Rimozione Limiti","tw.settingsModal.removeMiscLimits":"Rimozione Limiti Vari","tw.settingsModal.removeMiscLimitsHelp":"Rimuove i limiti agli effetti sonori e alla dimensione della penna.","tw.settingsModal.storeProjectOptions":"Memorizza le impostazioni nel progetto","tw.settingsModal.storeProjectOptionsHelp":"Memorizza nel progetto le impostazioni selezionate in modo che siano applicate automaticamente quando il progetto viene caricato in TurboWarp. Il warp timer e la disabilitazione del compilatore non verranno memorizzati.","tw.settingsModal.title":"Impostazioni Avanzate","tw.settingsModal.warpTimerHelp":"Permette ai progetti di verificare se sono bloccati in un loop molto lungo o infinito e di essere quindi eseguiti ad un framerate più basso invece di apparire bloccati fino a che il loop non termina. Questa opzione risolve molte cause di blocco ma ha un impatto significativo sulla performance, quindi è abilitata come impostazione predeterminata solo all\'interno dell\'editor.","tw.soundEditorNotSupported":"L\'editor di suoni non è supportato in questo browser.","tw.spriteSelectorItem.rename":"rinomina","tw.stereoAlert":"Modificando questo suono stereo verrà convertito in modo in maniera irreversibile. ","tw.studioview.authorAttribution":"di {author}","tw.studioview.error":"Si è verificato un errore nel caricamento della pagina di progetti successiva.","tw.studioview.hoverText":"{title} di {author}","tw.tooLarge":"Questo suono potrebbe essere troppo pesante per essere caricato su Scratch.","tw.twExtension.description":"Nuovi blocchi strani.","tw.twExtension.name":"Blocchi TurboWarp","tw.unfavorite":"Non preferito","tw.unshared.2":"Per ulteriori informazioni vai a {link}","tw.unshared.bug":"Se sei certo che questo progetto è condiviso, segnala il problema.","tw.unshared.cache":"Se il progetto è stato condiviso di recente questo messaggio può apparire erroneamente per alcuni minuti.","tw.unshared2.1":"I progetti non condivisi non sono più visibili.","tw.usernameModal.help":"Questo valore verrà archiviato nello spazio di archiviazione del tuo browser. Potrebbe essere loggato quando interagisci con progetti che usano le variabili cloud.","tw.usernameModal.help2":"Valori che non corrispondono ad un account Scratch valido saranno di solito rifiutati dal server delle variabili cloud. Raccomandiamo di lasciarli così come sono o cambiandolo nel tuo username Scratch.","tw.usernameModal.mustChange":"Il server delle variabili cloud pensa che il tuo username possa non essere sicuro. Ti preghiamo di cambiarlo con qualcos\'altro o di {resetIt}","tw.usernameModal.mustChange.resetIt":"resettarlo (raccomandato)","tw.usernameModal.new":"Nuovo username:","tw.usernameModal.reset":"Resetta","tw.usernameModal.title":"Cambia Username","tw.usesCloudVariables":"Questo progetto usa le variabili cloud.","tw.usesCloudVariables2":"Le variabili cloud di {APP_NAME} non sono collegate a quelle di Scratch. Chiunque può {changeTheirUsername} come preferisce, fai quindi attenzione a chi tenta di spacciarsi per qualcun altro.","tw.usesCloudVariables2.change":"cambiare il proprio username","tw.viewFeaturedProjects":"Clicca per vedere i progetti in primo piano.","tw.viewOnScratch":"Mostra il progetto nel sito di Scratch","tw.webglModal.description":"Il tuo browser {doesNotSupportWebGL}. Questa tecnologia è necessaria per poter usare questo sito. Prova ad aggiornare il browser e i tuoi driver video o a riavviare il tuo computer.","tw.webglModal.link":"non supporta WebGL"},"ja":{"tw.alerts.creatingRestorePoint":"復元しています…","tw.alerts.lostPeripheralConnection":"{extensionName}との接続が切れました。","tw.alerts.savedToDisk":"コンピューターに保存する","tw.backpack.rename":"新しい名前:","tw.blocks.PROCEDURES_DOCS":"~を返すの使い方","tw.blocks.PROCEDURES_RETURN":"{v}を返す","tw.blocks.addons":"アドオン","tw.blocks.buttonIsDown":"マウスの[MOUSE_BUTTON]が押された","tw.blocks.lastKeyPressed":"最後に押されたキー","tw.blocks.mouseButton.middle":"(1) ホイール","tw.blocks.mouseButton.primary":"(0) 左ボタン","tw.blocks.mouseButton.secondary":"(2) 右ボタン","tw.blocks.openDocs":"ドキュメントを開く","tw.browserModal.desc":"Google Chrome、Mozilla Firefox、Microsoft Edge、Apple Safari が最新バージョンであることを確認してください。","tw.cantUseCloud":"クラウド変数を作成することはできますが、このプロジェクトをScratchにアップロードするか、{packager}などのツールを使用しないと、動作しません。","tw.changeUsername.cannotChangeWhileRunning":"ユーザー名をプロジェクトの実行中に変えることはできません。","tw.clipboard.permission":"クリップボードへのアクセスは、ブラウザによって動作しない場合があります。許可されているなら、クリップボードの読み込みは自動で許可されます。","tw.clipboard.title":"プロジェクトがクリップボードからデータを読み込もうとしています。","tw.cloudProvider":"サーバーは{name}によって提供されます。","tw.cloudServers":"近いサーバーを選択:","tw.code":"ソースコード","tw.confirmIncompatibleExtension":"この拡張機能はScratchとの互換性がありません。これを使って作ったプロジェクトは、Scratchのウェブサイトにアップロードできません。本当に使いますか?","tw.createdBy":"製作者:","tw.customCloudServer":"使用しているカスタムクラウド変数サーバー : {server}","tw.customExtension.description":"URL、ファイル、JavaScriptのソースコードからカスタム拡張機能を読み込む。","tw.customExtension.name":"カスタム拡張機能","tw.customExtensionModal.file":"ファイル","tw.customExtensionModal.load":"読み込む","tw.customExtensionModal.promptFile":"拡張機能のJavaScriptファイルを選択する: ","tw.customExtensionModal.promptText":"拡張機能のJavaScriptのソースコードをペーストする:","tw.customExtensionModal.promptURL":"拡張機能のURLを入力: ","tw.customExtensionModal.text":"テキスト","tw.customExtensionModal.title":"カスタム拡張機能を読み込む","tw.customExtensionModal.trusted":"この拡張機能は信頼できるソースからのものであるため、サンドボックスなしで読み込みます。","tw.customExtensionModal.unsandboxed":"サンドボックスなしで拡張機能を実行する","tw.customExtensionModal.unsandboxedWarning1":"サンドボックスなしで拡張機能を読み込むのは危険です。よく分からない場合は無効にしてください。","tw.customExtensionModal.unsandboxedWarning2":"サンドボックス化していない拡張機能は、プロジェクトを破損させたり、設定を削除したり、パスワードをフィッシングしたり、その他の悪いことをする可能性があります。{APP_NAME}の開発者は、この拡張機能によって生じるいかなる問題にも責任を負いません。","tw.customExtensionModal.untrusted":"信頼できないURLからの拡張機能は、セキュリティのため常にサンドボックスで読み込みます。","tw.customReporters.description":"カスタムブロックが値を出力し、入力として使えるようにする。","tw.customReporters.name":"カスタム定義","tw.documentation":"ドキュメント","tw.extensionGallery.name":"TurboWarpの拡張機能集","tw.favorite":"お気に入りにする","tw.featuredProjectsStudio":"Scratchのスタジオで見る","tw.feedback":"フィードバックとバグ","tw.feedbackButton":"TurboWarpへのフィードバック","tw.fileInput.none":"選択されたファイルはありません。","tw.fileInput.selected":"選択中: {name}","tw.fonts.add":"追加する","tw.fonts.custom.file":"コンピュータからフォントを選択 : ","tw.fonts.custom.name":"フォントの名前をつける:","tw.fonts.custom1":"ファイルからフォントを追加","tw.fonts.delete":"\\"{font}\\" を削除してもよろしいですか? ベクターコスチュームでは代わりに他のフォントに置き換わります。","tw.fonts.fallback":"フォントの読み込みに失敗した場合や削除された場合に使用する代わりのフォントを選択します。","tw.fonts.list":"インストール済みのフォント : ","tw.fonts.none":"フォントが追加されていません。","tw.fonts.readError":"フォントのファイルを読み込めませんでした: {error}","tw.fonts.system":"システムフォント","tw.fonts.system.name":"コンピュータにインストールされているフォントの名前を入力します。フォントはユーザーによって正しく表示されない可能性があります。","tw.fonts.system1":"フォントを追加","tw.fonts.system2":"Scratchで動作する可能性がありますが、ユーザーによって正しく表示されない可能性があります。","tw.fonts.title":"フォント","tw.footer.credits":"クレジット","tw.footer.disclaimer":"TurboWarpはScratch、Scratch Team、Scratch財団と提携していません。","tw.footer.documentation":"ドキュメント","tw.footer.donate":"寄付する","tw.footer.embed":"埋め込みコード","tw.footer.parameters":"URLパラメーター","tw.geolocate.permission":"許可すると、位置情報へのアクセスを許可するようブラウザから促されることがあります。","tw.geolocate.title":"このプロジェクトはあなたの居場所を知ろうとしています。","tw.gui.crashMessage.description":"申し訳ありませんが、ページがクラッシュしたようです。ページを再読み込みしてもう一度やり直してみてください。","tw.gui.defaultProjectTitle":"プロジェクト","tw.guiDefaultTitle":"Scratchのプロジェクトを速く動かす","tw.home.credit":"メモとクレジット","tw.home.description":"TurboWarpは、プロジェクトをJavaScriptにコンパイルして、高速に実行させることのできるScratchのMODです。上記のプロジェクトIDまたはURLを入力するか、以下の注目のプロジェクトの中から選択して試してみてください。","tw.home.instructions":"使い方","tw.input.tooltip":"ScratchのプロジェクトのURLをコピー&ペーストして見ることができます","tw.interpolationEnabled":"補完機能","tw.invalidParameters.clones":"「クローン」のURLパラメーターが無効です","tw.invalidParameters.fps":"「FPS」のURLパラメーターが無効です","tw.loadError":"プロジェクトを読み込めませんでした: {error}","tw.loadExtension.sandboxed":"コードは保護されますが、IPや位置などのデバイスに関する情報には引き続きアクセスできます。続行する前に、この拡張機能の作成者が信頼できることを確認してください。","tw.loadExtension.unsandboxed":"サンドボックスなしで拡張機能を実行する","tw.loadExtension.unsandboxedWarning":"サンドボックスなしで拡張機能を読み込むことは危険です。プロジェクトを破壊したり、設定を削除したり、パスワードを盗まれたり、その他の悪いことができるようになります。{APP_NAME}の開発者は、これによって生じるいかなる問題にも責任を負いません。","tw.loader.assets.known":"プロジェクトをダウンロード中 ({complete}/{total}) ...","tw.loader.assets.unknown":"ダウンロード中…","tw.loader.data":"プロジェクトのデータをダウンロード中…","tw.loader.generic":"プロジェクトを読み込み中…","tw.menuBar.60off":"60FPSモードを解除する","tw.menuBar.60on":"60FPSモードにする","tw.menuBar.addons":"アドオン","tw.menuBar.advanced":"高度な設定","tw.menuBar.changeUsername":"ユーザー名を変える","tw.menuBar.cloudOff":"クラウド変数を無効にする","tw.menuBar.cloudOn":"クラウド変数を有効にする","tw.menuBar.cloudUnavailable":"クラウド変数は使用できません","tw.menuBar.cloudUnavailableAlert":"中を見たのでクラウド変数を使用できません。","tw.menuBar.moreSettings":"高度な設定","tw.menuBar.newFramerate":"新しいフレームレート:","tw.menuBar.newWindow":"新しいウィンドウ","tw.menuBar.package":"プロジェクトをパッケージ化する","tw.menuBar.reportError1":"コンパイルされていないスクリプトがあります。","tw.menuBar.reportError2":"これは不具合です。報告してください。","tw.menuBar.restorePoints":"復元ポイント","tw.menuBar.saveAs":"{file}として保存する","tw.menuBar.seeInside":"中を見る","tw.mono":"モノラル録音","tw.moreCloud":"クラウド変数の詳細については、こちらをご覧ください。","tw.oldDownload":"別ファイルで保存する...","tw.opcode.2000":"2000年からの日数","tw.opcode.mousedown":"マウスが押された","tw.opcode.mousex":"マウス x","tw.opcode.mousey":"マウス y","tw.openAdvanced":"高度な設定を開く","tw.openWindow.dangerous":"このウェブサイトは{APP_NAME}開発者による審査を受けていません。危険または悪意のあるコードが含まれている可能性があります。","tw.openWindow.title":"プロジェクトは新しいウィンドウまたはタブでURLを開こうとしています:","tw.paint.alpha":"透明度","tw.paint.fonts.more":"フォントを追加する…","tw.privacy":"プライバシーポリシー","tw.redirect.dangerous":"このウェブサイトは{APP_NAME}開発者による審査を受けていません。危険または悪意のあるコードが含まれている可能性があります。","tw.restorePoints.1minute":"1分ごと","tw.restorePoints.assets":"{n}個のアセット","tw.restorePoints.deleteAll":"全て消去する","tw.restorePoints.empty":"復元ポイントはありません。","tw.restorePoints.intervalOption":"{time}に復元ポイントを作る","tw.restorePoints.loading":"読み込み中…","tw.restorePoints.minutes":"{n}分ごと","tw.restorePoints.never":"なし","tw.restorePoints.off":"復元ポイントを無効にするのは危険です。","tw.restorePoints.title":"復元ポイント","tw.sample":"サンプルプロジェクト","tw.saveAs":"…として保存する","tw.saveTo":"{file}に保存する","tw.scratchUnsafeCloud":"このクラウド変数を作ると、{number}変数のScratchの上限を超えます。Scratchにこのプロジェクトをアップロードしたとき、一部の変数が機能しなくなります。","tw.securityManager.allow":"許可","tw.securityManager.deny":"拒否","tw.securityManager.title":"拡張機能セキュリティ","tw.settingsModal.customStageSize":"ステージの大きさを変える:","tw.settingsModal.customStageSizeHelp":"ステージのサイズを480x360から他のサイズに変更します。ステージをワイドスクリーンにするには、640x360をお試しください。これを適切に処理できるプロジェクトはほとんどありません。","tw.settingsModal.dangerZone":"危険区域","tw.settingsModal.disableCompiler":"コンパイラを無効にする","tw.settingsModal.disableCompilerHelp":"TurboWarpコンパイラを無効にします。プロジェクトの編集中にこれを有効にすると、スクリプトがすぐに更新されるようになります。必要ない場合は無効にしてください。","tw.settingsModal.featured":"おすすめ","tw.settingsModal.fps":"60 FPS (カスタム FPS)","tw.settingsModal.fpsHelp":"スクリプトの実行回数を30回/秒から60回/秒に変更します。この機能を有効にすると、ほとんどのプロジェクトが正常に動作しなくなります。そのような場合には、60FPSモードを無効にして補間機能を試してみてください。{customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"30または60以外のFPSを設定する","tw.settingsModal.help":"クリックしてヘルプ","tw.settingsModal.highQualityPen":"ペンできれいに描画する","tw.settingsModal.highQualityPenHelp":"ペンのプロジェクトをより高い解像度でレンダリングする代わりに、エディタでのの座標丸めを一部無効にします。全てのプロジェクトでこの設定が有効とはいえず、パフォーマンスに影響を与えることがあります。","tw.settingsModal.infiniteClones":"クローンの制限を解除","tw.settingsModal.infiniteClonesHelp":"Scratchの、クローンが300個までしか作れない制限を解除します。","tw.settingsModal.interpolation":"補完機能","tw.settingsModal.interpolationHelp":"スプライトの動きを補間することで、プロジェクトをより滑らかに見せます。この機能は、3Dのプロジェクト、レイトレーサー、ペンを使ったプロジェクトや、重いプロジェクトには使用しないでください。スムーズではなくなり、動作が遅くなります。","tw.settingsModal.largeStageWarning":"ステージのサイズを大きくすることはおすすめできません。その代わり、同じアスペクト比の小さなサイズを使用し、フルスクリーンにすることでお使いのディスプレイの大きさに合わせてください。","tw.settingsModal.removeFencing":"動く範囲と大きさの制限を解除する","tw.settingsModal.removeFencingHelp":"スプライトを画面の外へ移動させたり、好きなだけ大きさを変えたり、触れたブロックを画面外で作動させたりすることができます。","tw.settingsModal.removeLimits":"制限を解除する","tw.settingsModal.removeMiscLimits":"その他の制限を解除","tw.settingsModal.removeMiscLimitsHelp":"効果音の制限とペンの大きさの制限を解除する","tw.settingsModal.storeProjectOptions":"高度な設定を保存する","tw.settingsModal.storeProjectOptionsHelp":"選択した設定をプロジェクトに保存し、TurboWarpがこのプロジェクトを読み込んだときに自動的に適用されるようにします。Warpタイマーとコンパイラの無効は保存されません。","tw.settingsModal.title":"高度な設定","tw.settingsModal.warpTimer":"Warpタイマー","tw.settingsModal.warpTimerHelp":"スクリプトが長いループや無限ループに陥っているかどうかをチェックし、ループが終了するまで動けないのを避け、低いフレームレートで実行するようにします。これにより、ほとんどのクラッシュが修正されます。しかし、パフォーマンスへの影響が大きいため、デフォルトではエディタでのみ有効になっています。","tw.soundEditorNotSupported":"このブラウザではサウンドエディタがサポートされていません。","tw.spriteSelectorItem.rename":"名前を変える","tw.stereo":"ステレオ録音","tw.stereoAlert":"このステレオサウンドを編集すると、不可逆的にモノラルに変換されます。","tw.studioview.error":"プロジェクトを次のページで読み込む際にエラーが発生しました。","tw.tooLarge":"この音は大きすぎてスクラッチにアップロードできないかもしれません。","tw.twExtension.description":"不思議な新しいブロック","tw.twExtension.name":"TurboWarpのブロック","tw.unfavorite":"お気に入りを外す","tw.unshared.2":"詳しくはこちらをご覧ください: {link}","tw.unshared.bug":"このプロジェクトが共有済みにも関わらず読み込めない場合は不具合報告をお願いします。","tw.unshared.cache":"プロジェクトが最近共有された場合、このメッセージは数分間誤って表示される可能性があります。","tw.unshared2.1":"非共有のプロジェクトは表示されません。","tw.usernameModal.help":"この名前は、ブラウザのストレージに保存されます。クラウド変数を含むプロジェクトを見る際に記録されることがあります。","tw.usernameModal.help2":"有効なScratchのアカウント名に対応していないと、通常はクラウド変数サーバに拒否されます。そのままにしておくか、Scratchのユーザー名に変えることをおすすめします。","tw.usernameModal.mustChange":"申し訳ありません、あなたのユーザー名が安全でない可能性があります。他のユーザー名に変更するか、{resetIt}をしてください。","tw.usernameModal.mustChange.resetIt":"リセット(おすすめ)","tw.usernameModal.new":"新しいユーザー名","tw.usernameModal.reset":"リセット","tw.usernameModal.title":"ユーザー名を変える","tw.usesCloudVariables":"このプロジェクトはクラウド変数を使っています。","tw.usesCloudVariables2.change":"ユーザー名を変更","tw.viewFeaturedProjects":"クリックしてプロジェクトの特集を見る。","tw.viewOnScratch":"Scratchでプロジェクトを見る"},"ja-hira":{"tw.alerts.creatingRestorePoint":"ふくげんしています…","tw.alerts.savedToDisk":"コンピューターに保存(ほぞん)する","tw.backpack.rename":"あたらしいなまえ : ","tw.blocks.addons":"アドオン","tw.blocks.buttonIsDown":"マウスの[MOUSE_BUTTON]がおされた","tw.blocks.lastKeyPressed":"さいごにおされたキー","tw.blocks.mouseButton.middle":"(1)ホイール","tw.blocks.mouseButton.primary":"(0)ひだりボタン","tw.blocks.mouseButton.secondary":"(2)みぎボタン","tw.blocks.openDocs":"ドキュメントをひらく","tw.browserModal.desc":"Google Chrome、Mozilla Firefox、Microsoft Edge、Apple Safari が最新(さいしん)バージョンであることを確認(かくにん)してください。","tw.changeUsername.cannotChangeWhileRunning":"ユーザーめいはプロジェクトを実行中(じっこうちゅう)にかえることはできません。","tw.code":"ソースコード","tw.customExtension.name":"カスタムかくちょうきのう","tw.customExtensionModal.file":"ファイル","tw.featuredProjectsStudio":"Scratchのスタジオでみる。","tw.feedback":"フィードバックとバグ","tw.feedbackButton":"TurboWarpへのフィードバック","tw.footer.credits":"クレジット","tw.footer.disclaimer":"TurboWarpはScratch、Scratch Team、Scratch財団(ざいだん)と提携(ていけい)していません。","tw.footer.donate":"きふをする","tw.footer.embed":"うめこみコード","tw.footer.parameters":"URLパラメーター","tw.gui.crashMessage.description":"もうしわけありませんが、ページがクラッシュしたようです。ページをもういちどよみこんでください。","tw.gui.defaultProjectTitle":"プロジェクト","tw.guiDefaultTitle":"Scratchのプロジェクトをはやくうごかす","tw.home.credit":"メモとクレジット","tw.home.description":"TurboWarpはScratchのMODで、はやくうごかすためにプロジェクトをJavaScriptにコンパイルしたものです。プロジェクトのIDやURLを入力(にゅうりょく)するか、したのプロジェクトの特集(とくしゅう)からえらんでみてください。","tw.home.instructions":"つかいかた","tw.input.tooltip":"ScratchのプロジェクトのURLをコピー&ペーストしてみることができます","tw.interpolationEnabled":"ほかんきのう","tw.invalidParameters.clones":"「クローン」のURLパラメーターが無効(むこう)です","tw.invalidParameters.fps":"「FPS」のURLパラメーターが無効(むこう)です","tw.loader.assets.known":"{total}つのうち{complete}つダウンロードをかんりょう…","tw.loader.assets.unknown":"ダウンロードちゅう…","tw.loader.data":"プロジェクトのデータをダウンロードちゅう…","tw.loader.generic":"プロジェクトをよみこみちゅう…","tw.menuBar.60off":"60FPSモードをかいじょする","tw.menuBar.60on":"60FPSモードにする","tw.menuBar.addons":"アドオン","tw.menuBar.advanced":"こうどなせってい","tw.menuBar.changeUsername":"ユーザーめいをかえる","tw.menuBar.cloudOff":"クラウドへんすうをむこうにする","tw.menuBar.cloudOn":"クラウドへんすうをゆうこうにする","tw.menuBar.cloudUnavailable":"クラウドへんすうはつかえません","tw.menuBar.moreSettings":"こうどなせってい","tw.menuBar.newFramerate":"あたらしいフレームレート:","tw.menuBar.package":"プロジェクトをパッケージにする","tw.menuBar.reportError1":"コンパイルされていないスクリプトがあります。","tw.menuBar.reportError2":"これはバグです。ほうこくしてください。","tw.menuBar.saveAs":"{file}としてほぞんする","tw.menuBar.seeInside":"なかをみる","tw.mono":"モノラル","tw.oldDownload":"べつのファイルでほぞんする...","tw.opcode.mousex":"マウス x","tw.opcode.mousey":"マウス y","tw.paint.alpha":"とうめいど","tw.privacy":"プライバシーポリシー","tw.saveAs":"…としてほぞんする","tw.saveTo":"{file}にほぞんする","tw.settingsModal.customStageSize":"ステージのおおきさをかえる:","tw.settingsModal.dangerZone":"危険区域(きけんくいき)","tw.settingsModal.disableCompiler":"コンパイラをつかわない","tw.settingsModal.disableCompilerHelp":"TurboWarpコンパイラを無効(むこう)にします。プロジェクトの編集中(へんしゅうちゅう)にこれを有効(ゆうこう)にすると、スクリプトがすぐに更新(こうしん)されるようになります。必要(ひつよう)ない場合(ばあい)は無効(むこう)にしてください。","tw.settingsModal.featured":"おすすめ","tw.settingsModal.fps":"60 FPS (カスタム FPS)","tw.settingsModal.fpsHelp":"通常(つうじょう)FPSが30のところ、60でスクリプトをうごかします。この機能(きのう)を有効(ゆうこう)にすると、ほとんどのプロジェクトがただしく動作(どうさ)しません。そのような場合(ばあい)は、この機能(きのう)を無効(むこう)にして「ほかんきのう」をためしてください。{customFramerate}","tw.settingsModal.fpsHelp.customFramerate":"クリックして30または60いがいのFPSにせっていする","tw.settingsModal.help":"クリックしてヘルプ","tw.settingsModal.highQualityPen":"ペンできれいにびょうがする","tw.settingsModal.highQualityPenHelp":"ペンのプロジェクトをよりたかい解像度(かいぞうど)でレンダリングするかわりに、エディタでのの座標(ざひょう)まるめを一部無効(いちぶむこう)にします。すべてのプロジェクトでこの設定(せってい)が有効(ゆうこう)とはいえず、パフォーマンスに影響(えいきょう)をあたえることがあります。","tw.settingsModal.infiniteClones":"クローンの制限(せいげん)を解除(かいじょ)","tw.settingsModal.infiniteClonesHelp":"Scratchの、クローンが300こまでしかつくれない制限(せいげん)を解除(かいじょ)します。","tw.settingsModal.interpolation":"ほかんきのう","tw.settingsModal.interpolationHelp":"スプライトのうごきを補間(ほかん)することで、プロジェクトをよりなめらかにします。このきのうは、3Dのプロジェクト、レイトレーサー、ペンをつかったプロジェクトや、おもいプロジェクトにはつかわないでください。うごきがおそくなります。","tw.settingsModal.removeFencing":"うごく範囲(はんい)とおおきさの制限(せいげん)を解除(かいじょ)する","tw.settingsModal.removeFencingHelp":"スプライトを画面(がめん)の外(そと)へ移動(いどう)させたり、すきなだけおおきさをかえたり、ふれたブロックを画面外(がめんがい)でうごかしたりすることができます。","tw.settingsModal.removeLimits":"せいげんをなくす","tw.settingsModal.removeMiscLimits":"そのほかのせいげんをなくす","tw.settingsModal.removeMiscLimitsHelp":"効果音(こうかおん)の制限(せいげん)とペンのおおきさの制限(せいげん)を解除(かいじょ)する","tw.settingsModal.storeProjectOptions":"こうどなせっていをほぞんする","tw.settingsModal.title":"こうどなせってい","tw.settingsModal.warpTimer":"Warpタイマー","tw.settingsModal.warpTimerHelp":"スクリプトがながいループや無限(むげん)ループにおちいっているかどうかをチェックし、ループが終了(しゅうりょう)するまでうごけないのをさけ、ひくいフレームレートで実行(じっこう)するようにします。これにより、ほとんどのクラッシュが修正(しゅうせい)されます。しかし、パフォーマンスへの影響(えいきょう)がおおきいため、デフォルトではエディタでのみ有効(ゆうこう)になっています。","tw.spriteSelectorItem.rename":"なまえをかえる","tw.stereo":"ステレオ","tw.studioview.error":"プロジェクトをつぎのページでよみこむときにエラーが発生(はっせい)しました。","tw.twExtension.description":"ふしぎなあたらしいブロック","tw.twExtension.name":"TurboWarpのブロック","tw.usernameModal.mustChange":"もうしわけありません、あなたのユーザーめいが安全(あんぜん)でない可能性(かのうせい)があります。ほかのユーザーめいに変更(へんこう)するか、{resetIt}をしてください。","tw.usernameModal.mustChange.resetIt":"リセット(おすすめ)","tw.usernameModal.new":"あたらしいゆーざーめい:","tw.usernameModal.reset":"リセット","tw.usernameModal.title":"ユーザーめいをかえる","tw.viewFeaturedProjects":"クリックしてプロジェクトの特集(とくしゅう)をみる。","tw.viewOnScratch":"Scratchでプロジェクトをみる"},"ko":{"tw.alerts.creatingRestorePoint":"복원 지점 생성 중...","tw.alerts.lostPeripheralConnection":"{extensionName} 확장 기능과 연결이 끊어졌습니다.","tw.alerts.restorePointError":"복원 지점을 생성할 수 없습니다.","tw.alerts.restorePointSuccess":"\\"파일\\" 탭에 복원 지점이 생성되었습니다","tw.alerts.savedToDisk":"컴퓨터에 저장되었습니다.","tw.backpack.rename":"새로운 이름:","tw.blocks.PROCEDURES_DOCS":"반환을 사용하는 방법","tw.blocks.PROCEDURES_RETURN":"{v} 반환하기","tw.blocks.PROCEDURES_TO_REPORTER":"리포터 블록으로 변경하기","tw.blocks.PROCEDURES_TO_STATEMENT":"커맨드 블록으로 변경하기","tw.blocks.addons":"애드온","tw.blocks.buttonIsDown":"[MOUSE_BUTTON]마우스 버튼이 눌렸는가?","tw.blocks.lastKeyPressed":"마지막으로 눌린 키","tw.blocks.mouseButton.middle":"(1) 가운데","tw.blocks.mouseButton.primary":"(0) 왼쪽","tw.blocks.mouseButton.secondary":"(2) 오른쪽","tw.blocks.openDocs":"문서 열기","tw.browserModal.desc":"최신 버전의 크롬, Mozilla Firefox, Microsoft Edge 또는 Apple Safari를 사용하고 있는지 확인하세요.","tw.cantUseCloud":"클라우드 변수를 생성할 수는 있으나, 해당 프로젝트가 Scratch에 업로드 되거나 {packager}같은 툴을 사용해 변환되지 않는 한 클라우드 변수는 작동하지 않습니다.","tw.changeUsername.cannotChangeWhileRunning":"\'사용자 이름\'은 프로젝트가 실행되는 동안 변경될 수 없습니다.","tw.clipboard.danger":"클립보드에 비밀번호와 같은 민감한 정보가 포함되어 있을 경우, 프로젝트에 의해 해당 정보가 다른 사용자 또는 서버와 공유될 수 있습니다.","tw.clipboard.permission":"몇몇 브라우저에서는 클립보드에 접근이 불가능할 수 있습니다. 권한을 허용할 경우, 추가적인 클립보드 읽기 요청이 자동으로 허용됩니다.","tw.clipboard.title":"프로젝트가 클립보드의 데이터 읽기 권한을 요청합니다.","tw.cloudProvider":"서버 제공자 : {name}","tw.cloudServers":"거주지 근처에 있는 서버를 선택하세요 :","tw.code":"소스코드","tw.confirmIncompatibleExtension":"이 확장 기능은 스크래치와 호환되지 않습니다.\\n해당 확장 기능을 활성화할 경우 프로젝트가 스크래치 웹사이트에 업로드되지 않을 수 있습니다. 계속하시겠습니까?","tw.createdBy":"제작자 : ","tw.customCloudServer":"사용자 정의 클라우드 변수 서버 사용 중 : {server}","tw.customExtension.description":"사용자 지정 확장 기능을 URL, 파일 또는 자바스크립트 소스코드를 통해 불러옵니다.","tw.customExtension.name":"사용자 지정 확장 기능","tw.customExtensionModal.file":"파일","tw.customExtensionModal.load":"불러오기","tw.customExtensionModal.promptFile":"확장 기능의 자바스크립트 파일을 선택하세요 : ","tw.customExtensionModal.promptText":"확장 기능의 자바스크립트 소스코드를 붙여넣기 하세요 : ","tw.customExtensionModal.promptURL":"확장 기능의 URL을 입력하세요 : ","tw.customExtensionModal.text":"텍스트","tw.customExtensionModal.title":"사용자 지정 확장 기능 불러오기","tw.customExtensionModal.trusted":"해당 확장 기능은 신뢰할 수 있는 공급원으로부터 제공되기 때문에 샌드박스되지 않은 상태로 로딩됩니다.","tw.customExtensionModal.unsandboxed":"확장 기능을 샌드박스 하지 않고 실행","tw.customExtensionModal.unsandboxedWarning1":"확장 기능을 샌드박스 하지 않고 불러오는 것은 위험하며, 해당 확장 기능이 활성화되지 않을 수 있습니다.\\n본인이 무엇을 하고 있는지 모를 경우 해당 작업을 중단하세요.","tw.customExtensionModal.unsandboxedWarning2":"샌드박스되지 않은 확장 기능은 사용자 설정을 삭제하거나, 비밀번호를 훔쳐 가는 등의 악의적인 행동으로 프로젝트를 망칠 수 있습니다.\\n{APP_NAME}의 개발자는 해당 문제로 인해 야기되는 결과에 어떤 책임도 지지 않습니다.","tw.customExtensionModal.untrusted":"신뢰할 수 없는 URL로부터 제공되는 확장 기능은 보안을 위해 항상 샌드박스 처리됩니다.","tw.customReporters.description":"사용자 정의 블록이 값을 출력하거나 입력으로 사용될 수 있도록 합니다.","tw.customReporters.name":"사용자 지정 리포터 블록","tw.documentation":"문서","tw.embed.persistent":"해당 권한을 허용할 경우, 현재 웹사이트에서의 추가적인 임베딩이 자동으로 허용됩니다.","tw.embed.risks":"임베디드 콘텐츠는 샌드박스 처리되지만, 여전히 사용자 기기의 IP 주소 또는 위치 정보와 같은 기기 정보에 접근할 수 있습니다.","tw.embed.title1":"프로젝트가 무대 앞에 HTML 콘텐츠를 표시하려고 합니다 :","tw.embed.title2":"프로젝트가 무대 앞에 원격 콘텐츠를 표시하려고 합니다 :","tw.extensionGallery.error":"확장 기능 갤러리를 불러오는 중 문제가 발생했습니다. extensions.turbowarp.org 에서 더 많은 확장 기능을 찾아보세요.","tw.extensionGallery.loading":"확장 기능 갤러리를 불러오는 중...","tw.extensionGallery.more":"extensions.turbowarp.org 에서 확장 기능에 대해 자세히 알아보기","tw.extensionGallery.name":"터보워프 확장 기능 갤러리","tw.favorite":"즐겨찾기","tw.featuredProjectsStudio":"스크래치 스튜디오에서 특집 프로젝트 목록 보기","tw.feedback":"문의 및 오류 신고","tw.feedbackButton":"문의하기","tw.fetch.title":"프로젝트가 웹사이트 연결을 요청합니다 : ","tw.fileInput.none":"선택된 파일 없음","tw.fileInput.selected":"선택된 파일 : {name}","tw.fonts.add":"추가","tw.fonts.custom.file":"컴퓨터에서 글꼴 파일 선택 : ","tw.fonts.custom.name":"글꼴 이름 지정 : ","tw.fonts.custom1":"파일에서 글꼴 추가","tw.fonts.custom2":"일반적으로 스크래치에서 작동하지 않을 것입니다. 지원되는 글꼴 : {formats}","tw.fonts.delete":"정말로 \\"{font}\\" 폰트를 삭제하시겠습니까? 해당 폰트를 사용하는 모든 벡터 그래픽이 대체 글꼴로 변경됩니다.","tw.fonts.fallback":"글꼴이 삭제되었거나 불러오는 데 실패했을 경우 사용할 대체 글꼴을 선택하세요.","tw.fonts.list":"설치된 글꼴 : ","tw.fonts.none":"추가된 글꼴 없음","tw.fonts.readError":"글꼴 파일 읽기에 실패했습니다 : {error}","tw.fonts.system":"시스템 글꼴","tw.fonts.system.name":"컴퓨터에 내장된 사용하려는 글꼴의 이름을 입력하세요. 시스템 글꼴은 모든 사용자에게 올바르게 나타나지 않을 수 있습니다.","tw.fonts.system1":"시스템 글꼴 추가","tw.fonts.system2":"스크래치에서 작동할 수 있으나, 모든 사용자에게 올바르게 나타나지 않을 수 있습니다.","tw.fonts.title":"글꼴","tw.footer.credits":"크레딧","tw.footer.disclaimer":"TurboWarp는 스크래치, 스크래치 팀, 스크래치 재단에 소속되어 있지 않습니다.","tw.footer.documentation":"문서","tw.footer.donate":"기부","tw.footer.embed":"임베딩","tw.footer.parameters":"URL 파라미터","tw.geolocate.permission":"해당 권한을 허용할 경우, 사용자의 브라우저에 따라 위치 권한을 요청하는 알림이 추가적으로 나타날 수 있습니다.","tw.geolocate.title":"프로젝트가 사용자의 위치 정보에 접근할 수 있는 권한을 요청합니다.","tw.gui.crashMessage.description":"페이지에 충돌이 발생했습니다.\\n페이지를 새로고침한 후에 다시 시도해 주세요.","tw.gui.defaultProjectTitle":"프로젝트","tw.guiDefaultTitle":"스크래치 프로젝트를 더 빠르게 실행하기","tw.home.credit":"주의사항 및 크레딧","tw.home.description":"TurboWarp는 스크래치 프로젝트를 JavaScript로 컴파일하여 매우 빠르게 실행할 수 있도록 해주는 스크래치 모드입니다. \\n프로젝트 ID 또는 프로젝트 URL을 붙여넣거나, 아래의 특집 프로젝트를 선택해서 실행해 보세요.","tw.home.instructions":"소개","tw.input.tooltip":"스크래치 프로젝트 주소를 복사한 후 여기에 붙여넣기 하세요!","tw.interpolationEnabled":"보간법 활성화","tw.invalidParameters.clones":"\\"clone\\" URL 파라미터가 유효하지 않습니다","tw.invalidParameters.fps":"\\"fps\\" URL 파라미터가 유효하지 않습니다","tw.loadError":"프로젝트를 불러올 수 없습니다.\\n오류 코드 : {error}","tw.loadExtension.embedded":"프로젝트가 코드를 포함한 사용자 지정 확장 기능을 요구합니다 : ","tw.loadExtension.sandboxed":"코드가 샌드박스 처리되지만, 여전히 IP 주소나 위치 정보와 같은 사용자 기기 정보에 접근할 수 있습니다.\\n계속하기 전에 해당 확장 기능의 제작자를 신뢰할 수 있는지 확인하세요.","tw.loadExtension.unsandboxed":"확장 기능을 샌드박스 하지 않고 실행","tw.loadExtension.unsandboxedWarning":"샌드박스 없이 확장 기능을 불러오는 것은 위험합니다. 해당 확장 기능이 사용자 설정을 삭제하거나, 비밀번호를 훔쳐 가는 등의 악의적인 행동으로 프로젝트를 망칠 수 있습니다.\\n{APP_NAME}의 개발자는 해당 문제로 인해 야기되는 결과에 어떤 책임도 지지 않습니다.","tw.loadExtension.url":"프로젝트가 URL로부터 사용자 지정 확장 기능을 요구합니다 : ","tw.loader.assets.known":"정보를 내려받는 중입니다({complete}/{total}) ...","tw.loader.assets.unknown":"정보를 내려받는 중입니다...","tw.loader.data":"프로젝트 자료를 내려받는 중입니다...","tw.loader.generic":"프로젝트를 불러오는 중입니다...","tw.lockdownMode":"Apple 기기에서는 {lockdownMode}를 비활성화해야 합니다.","tw.lockdownMode2":"차단 모드","tw.menuBar.60off":"60 FPS 모드 비활성화","tw.menuBar.60on":"60 FPS 모드 활성화","tw.menuBar.addons":"애드온","tw.menuBar.advanced":"고급 설정","tw.menuBar.changeUsername":"사용자 이름 변경하기","tw.menuBar.cloudOff":"클라우드 변수 비활성화","tw.menuBar.cloudOn":"클라우드 변수 활성화","tw.menuBar.cloudUnavailable":"클라우드 변수를 이용할 수 없습니다","tw.menuBar.cloudUnavailableAlert":"편집기를 열었기 때문에 클라우드 변수를 사용할 수 없습니다.","tw.menuBar.cloudUnavailableDesktop":"데스크톱 앱에서는 클라우드 변수를 사용할 수 없습니다.","tw.menuBar.moreSettings":"고급 설정","tw.menuBar.newFramerate":"사용할 FPS:","tw.menuBar.newWindow":"새 창 열기","tw.menuBar.package":"프로젝트 패키징","tw.menuBar.reportError1":"일부 스크립트를 컴파일 할 수 없습니다.","tw.menuBar.reportError2":"오류가 발생했습니다. 해당 오류를 보고해주실 것을 부탁드립니다.","tw.menuBar.restorePoints":"복원 지점","tw.menuBar.saveAs":"{file}로 저장하기","tw.menuBar.seeInside":"스크립트 보기","tw.mono":"모노","tw.moreCloud":"클라우드 변수에 대해 더 배우기","tw.notify.permission":"해당 권한을 허용할 경우, 브라우저에서 알림 표시 허용 여부를 묻는 알림 창이 나타날 수 있으며, 추가적인 알림 표시 요청이 자동으로 허용됩니다.","tw.notify.title":"프로젝트가 알림 표시 권한을 요청합니다.","tw.oldDownload":"다른 파일로 저장","tw.opcode.2000":"2000년 이후 경과 날짜","tw.opcode.mousedown":"마우스가 눌렸는가?","tw.opcode.mousex":"마우스 x좌표","tw.opcode.mousey":"마우스 y좌표","tw.openAdvanced":"고급 설정 열기","tw.openWindow.dangerous":"해당 웹사이트는 {APP_NAME}의 개발자에 의해 보고된 웹사이트가 아니며, 위험하거나 악의적인 코드를 포함하고 있을 수 있습니다.","tw.openWindow.title":"프로젝트가 다음 URL을 새 창이나 탭에서 열 것을 요청합니다 : ","tw.paint.alpha":"불투명도","tw.paint.fonts.more":"글꼴 추가...","tw.privacy":"개인정보 보호 정책","tw.recordAudio.permission":"해당 권한을 허용할 경우, 브라우저에서 마이크 접근 허용 여부를 묻는 알림 창이 나타날 수 있으며, 추가적인 마이크 접근 요청이 자동으로 허용됩니다.","tw.recordAudio.title":"프로젝트가 사용자의 마이크를 통해 오디오를 녹음할 수 있는 권한을 요청합니다. 여기에는 텍스트 변환 음성이나 원본 오디오 데이터가 포함됩니다.\\n녹음된 오디오는 프로젝트에 의해 다른 사용자 또는 서버와 공유될 수 있습니다.","tw.recordVideo.permission":"해당 권한을 허용할 경우, 브라우저에서 카메라 접근 허용 여부를 묻는 알림 창이 나타날 수 있으며, 추가적인 카메라 접근 요청이 자동으로 허용됩니다.","tw.recordVideo.title":"프로젝트가 사용자의 카메라를 통해 비디오를 녹화할 수 있는 권한을 요청합니다.\\n녹화된 데이터는 프로젝트에 의해 다른 사용자 또는 서버와 공유될 수 있습니다.","tw.redirect.dangerous":"해당 웹사이트는 {APP_NAME}의 개발자에 의해 보고된 웹사이트가 아니며, 위험하거나 악의적인 코드를 포함하고 있을 수 있습니다.","tw.redirect.title":"프로젝트가 해당 탭을 다음 URL로 전환하기를 요청합니다 : ","tw.restorePoints.1minute":"1분","tw.restorePoints.assets":"{n}애셋","tw.restorePoints.confirmDelete":"정말로 \\"{projectTitle}\\" 프로젝트를 삭제하시겠습니까?\\n이 작업은 되돌릴 수 없습니다.","tw.restorePoints.confirmDeleteAll":"정말로 모든 복원 지점을 삭제하시겠습니까?\\n이 작업은 되돌릴 수 없습니다.","tw.restorePoints.confirmLoad":"저장되지 않은 변경 사항이 있습니다. 현재 프로젝트에 덮어쓰기 하시겠습니까?","tw.restorePoints.deleteAll":"모든 복원 지점 삭제하기","tw.restorePoints.description":"{APP_NAME}는 사용자가 프로젝트를 저장하지 않고 종료하는 것을 방지하기 위해 주기적으로 복원 지점을 생성합니다.\\n해당 기능은 프로젝트를 복구하기 위한 최후의 수단입니다. 저장된 복원 지점은 언제든지 기기의 시스템에 의해 자동으로 삭제될 수 있으므로 절대로 해당 기능에 의존하지 마세요.","tw.restorePoints.empty":"복원 지점을 찾을 수 없습니다.","tw.restorePoints.error":"복원 지점을 불러오는 중 문제가 발생했습니다 : {error}","tw.restorePoints.intervalOption":"복원 지점이 {time} 간격으로 생성됩니다.","tw.restorePoints.loading":"불러오는 중...","tw.restorePoints.minutes":"{n}분","tw.restorePoints.never":"없음","tw.restorePoints.off":"복원 지점을 비활성화하는 것은 위험합니다.","tw.restorePoints.size":"예상 저장 공간 사용량 : {size}","tw.restorePoints.size2":"다중 복원 지점에서 사용되는 모양 및 소리 리소스는 한 번만 저장되어 공간을 절약합니다.","tw.restorePoints.title":"복원 지점","tw.sample":"예제 프로젝트","tw.saveAs":"다른 이름으로 저장","tw.saveTo":"{file}로 저장","tw.scratchUnsafeCloud":"만약 이 클라우드 변수를 생성할 경우, 해당 프로젝트는 최대 {number}개로 제한되어 있는 클라우드 변수 갯수의 상한선을 초과하게 됩니다.\\n이 경우에 해당 프로젝트가 Scratch에 업로드 되었을 때, 일부 변수가 정상적으로 작동하지 않을 수 있습니다.","tw.securityManager.allow":"허용","tw.securityManager.deny":"거부","tw.securityManager.title":"확장 기능 보안","tw.securityManager.trust":"해당 권한을 허용할 경우, 현재 웹사이트에서의 추가적인 요청이 자동으로 허용됩니다.","tw.securityManager.why":"해당 권한은 이미지 또는 소리 파일 다운로드, 멀티플레이어 구현, API 액세스를 위해 사용될 수 있지만 타인에 의해 악용될 수도 있습니다. 이 권한을 허용하게 되면 내 컴퓨터의 IP 주소, 위치 정보 및 기타 정보를 공유하게 됩니다.","tw.settingsModal.customStageSize":"사용자 지정 무대 크기","tw.settingsModal.customStageSizeHelp":"무대 크기를 480x360이 아닌 다른 크기로 바꿉니다.\\n넓은 화면을 원하는 경우 640x360를 시도해 보세요. 일부 프로젝트는 올바르게 작동할 수 있습니다.","tw.settingsModal.dangerZone":"위험한 기능","tw.settingsModal.disableCompiler":"컴파일러 비활성화","tw.settingsModal.disableCompilerHelp":"컴파일러를 비활성화합니다.\\n프로젝트를 편집하는 동안 스크립트가 즉시 업데이트되도록 하려면 컴파일러를 비활성화해도 됩니다. 이 경우가 아니라면 컴파일러를 비활성화하지 마세요.","tw.settingsModal.featured":"추천 기능","tw.settingsModal.fps":"60 FPS (또는 사용자 지정 FPS) 활성화","tw.settingsModal.fpsHelp":"스크립트를 초당 30회로 실행하는 대신 초당 60회 실행합니다. 대부분의 프로젝트는 이 기능이 활성화된 상태에서 제대로 작동하지 않으며, 이 같은 경우에는 60 FPS모드 대신 보간법을 사용해야 합니다. {customFramerate}","tw.settingsModal.fpsHelp.customFramerate":"30 또는 60 이외의 사용자 정의 FPS 사용하기","tw.settingsModal.help":"클릭하여 도움말 열기","tw.settingsModal.highQualityPen":"고품질 펜 활성화","tw.settingsModal.highQualityPenHelp":"펜 프로젝트가 더 높은 해상도에서 렌더링될 수 있도록 해주며, 편집기에서 적용되는 일부 좌표 반올림을 비활성화합니다. 이 옵션은 모든 프로젝트에 도움이 되지는 않으며 성능에 영향을 미칠 수 있습니다.","tw.settingsModal.infiniteClones":"무제한 복제본 활성화","tw.settingsModal.infiniteClonesHelp":"스크래치의 300개 복제본 제한을 비활성화합니다.","tw.settingsModal.interpolation":"보간법 활성화","tw.settingsModal.interpolationHelp":"스프라이트의 움직임을 보간해 프로젝트의 동작을 더 부드럽게 만듭니다. 보간법은 3D 프로젝트, 레이트레이서, 펜 프로젝트, 렉이 걸리는 프로젝트 등에서 사용할 경우 오히려 프로젝트를 더 느려지게 만들 수 있습니다.","tw.settingsModal.largeStageWarning":"사용자 지정 무대의 크기가 너무 큽니다!\\n더 작은 크기의 동일한 화면비를 가진 사용자 지정 무대를 설정하고, 풀스크린 모드로 전환하여 화면이 자동으로 업스케일되도록 하는 것을 권장합니다.","tw.settingsModal.removeFencing":"무대 밖 동작 활성화","tw.settingsModal.removeFencingHelp":"스프라이트가 화면 밖으로 나갈 수 있도록 하거나, 스프라이트가 원하는 만큼 커지거나 작아질 수 있도록 하거나, 충돌 감지 블록이 화면 밖에서도 작동할 수 있도록 합니다.","tw.settingsModal.removeLimits":"제한 풀기","tw.settingsModal.removeMiscLimits":"기타 제한 비활성화","tw.settingsModal.removeMiscLimitsHelp":"이미지 효과 제한과 펜 굵기 제한을 제거합니다.","tw.settingsModal.storeProjectOptions":"프로젝트에 고급 설정 저장하기","tw.settingsModal.storeProjectOptionsHelp":"TurboWarp가 이 프로젝트를 불러올 때 현재 설정이 자동으로 적용되도록 고급 설정을 프로젝트에 저장합니다.\\n<워프 타이머 활성화>와 <컴파일러 비활성화>는 저장되지 않습니다.","tw.settingsModal.title":"고급 설정","tw.settingsModal.warpTimer":"워프 타이머 활성화","tw.settingsModal.warpTimerHelp":"스크립트가 긴 반복문 또는 무한 반복문에 갇힌 경우, 반복문이 끝날 때까지 코드가 멈춰 있지 않고 낮은 프레임에서 실행되고 있는지 확인합니다.\\n이 기능은 대부분의 충돌을 막을 수 있지만 성능을 확연히 저하시킵니다. 따라서 해당 기능은 편집기에서만 활성화됩니다.","tw.soundEditorNotSupported":"해당 브라우저에서는 소리 편집기가 지원되지 않습니다.","tw.spriteSelectorItem.rename":"이름 재설정하기","tw.stereo":"스테레오","tw.stereoAlert":"해당 스테레오 음원을 수정하면 자동으로 모노 음원으로 변환되며 이 작업은 되돌릴 수 없습니다.","tw.studioview.authorAttribution":"제작자 : {author}","tw.studioview.error":"프로젝트의 다음 페이지를 불러오는 도중 오류가 발생했습니다.","tw.studioview.hoverText":"{author}의 \\"{title}\\"","tw.tooLarge":"해당 음원은 파일 용량이 너무 커서 Scratch에 업로드가 불가능할 수 있습니다.","tw.twExtension.description":"이상하고 새로운 블록들입니다.","tw.twExtension.name":"TurboWarp 추가 블럭","tw.unfavorite":"즐겨찾기 해제","tw.unshared.2":"추가 정보를 원하시면, 다음 링크로 접속해 주세요. {link}","tw.unshared.bug":"만약 해당 프로젝트가 실제로 공유된 프로젝트인 경우, 오류 신고를 해주실 것을 부탁드립니다.","tw.unshared.cache":"만약 최근에 공유된 프로젝트일 경우, 이 메시지는 몇 분간 잘못 표시될 수 있습니다.","tw.unshared2.1":"공유되지 않은 프로젝트는 더 이상 볼 수 없습니다.","tw.usernameModal.help":"이 값은 브라우저의 저장소에 저장됩니다. 클라우드 변수를 포함하는 프로젝트와 상호 작용할 때 기록될 수 있습니다.","tw.usernameModal.help2":"유효한 Scratch 계정에 대응하지 않는 사용자 이름은 클라우드 변수 서버에 의해 거부됩니다. 그대로 남기거나 귀하의 Scratch 사용자 이름으로 변경하는 것을 추천합니다.","tw.usernameModal.mustChange":"클라우드 변수 서버가 귀하의 사용자 이름이 안전하지 않다고 생각합니다. 다른 것으로 변경하거나 {resetIt} 해 주세요.","tw.usernameModal.mustChange.resetIt":"초기화하기 (권장됨)","tw.usernameModal.new":"새 사용자 이름:","tw.usernameModal.reset":"초기화하기","tw.usernameModal.title":"사용자 이름 변경하기","tw.usesCloudVariables":"해당 프로젝트는 클라우드 변수를 사용합니다.","tw.usesCloudVariables2":"{APP_NAME} 프로젝트의 클라우드 변수가 스크래치 서버에 연결되지 않았습니다. 모든 사용자가 {changeTheirUsername}을 다른 사용자 이름으로 변경할 수 있으므로 사칭에 주의해야 합니다.","tw.usesCloudVariables2.change":"다른 사용자 이름 변경하기","tw.viewFeaturedProjects":"여기를 클릭하여 특집 프로젝트를 볼 수 있습니다.","tw.viewOnScratch":"프로젝트 스크래치에서 보기","tw.webglModal.description":"귀하의 브라우저가 해당 웹사이트를 구동하는데 필요한{doesNotSupportWebGL}. 브라우저와 그래픽 드라이버를 업데이트한 후 컴퓨터를 재시작해 보세요.","tw.webglModal.link":"WebGL을 지원하지 않습니다"},"lt":{"tw.alerts.creatingRestorePoint":"Atkuriamas atkūrimo taškas...","tw.alerts.lostPeripheralConnection":"Prarastas {extensionName} ryšys.","tw.alerts.savedToDisk":"Išsaugota į jūsų kompiuterį.","tw.backpack.rename":"Naujas vardas:","tw.blocks.addons":"Įskiepiai","tw.blocks.buttonIsDown":"[MOUSE_BUTTON] pelės mygtukas spusteltas?","tw.blocks.lastKeyPressed":"paskutinis paspaustas mygtukas","tw.blocks.mouseButton.middle":"(1) vidurys","tw.blocks.mouseButton.primary":"(0) pagrindinis","tw.blocks.mouseButton.secondary":"(2) antrasis","tw.blocks.openDocs":"Atidaryti Dokumentacijas","tw.browserModal.desc":"Įsitikinkite kad naudojate naujausią Google Chrome, Mozilla Firefox, Microsoft Edge, ar Apple Safari.","tw.changeUsername.cannotChangeWhileRunning":"Naudotojo vardas negali būti pakeistas kol projektas yra paleistas.","tw.code":"Šaltinio kodas","tw.confirmIncompatibleExtension":"Šis papildinys nėra suderinamas su Scratch. Projektai sukurti su šiuo papildiniu negali būti įkelti į Scratch svetainę. Ar jūs tikri kad norite jį įjungti?","tw.customExtension.name":"Pasirinktinis papildinys","tw.customExtensionModal.file":"Failas","tw.featuredProjectsStudio":"Peržiurėti studiją per Scratch.","tw.feedback":"Atsiliepimai ir Klaidos","tw.feedbackButton":"TurboWarp atsiliepimas","tw.footer.credits":"Padėkos","tw.footer.disclaimer":"TurboWarp nėra susietas su Scratch, the Scratch Team ar su the Scratch Foundation.","tw.footer.donate":"Paaukoti","tw.footer.embed":"Įterpimas","tw.footer.parameters":"URL Parametrai","tw.gui.crashMessage.description":"Labai atsiprašome, bet atrodo, kad puslapis užstrigo. Prašome perkrauti puslapį ir pabandyti dar kartą.","tw.gui.defaultProjectTitle":"Projektas","tw.guiDefaultTitle":"Paleisk Scratch projektus greičiau","tw.home.credit":"Pastabos ir Padėkos","tw.home.description":"TurboWarp yra Scratch modifikacija, kuria projektai kompiliuojami į JavaScript, kad veiktų labai greitai. Išbandykite tai įvesdami projekto ID arba URL viršuje arba pasirinkdami rekomenduojamą projektą apačioje.","tw.home.instructions":"Instrukcijos","tw.input.tooltip":"Nukopijuokite ir įklijuokite Scratch projekto nuorodą čia!","tw.interpolationEnabled":"Interpoliacija","tw.invalidParameters.clones":"\\"klono\\" URL parametras yra neteisingas","tw.invalidParameters.fps":"\\"fps\\" URL parametras yra neteisingas","tw.loadError":"Nepavyksta įkelti projekto: {error}","tw.loader.assets.known":"atsisiunčiami duomenys ({complete}/{total}) ...","tw.loader.assets.unknown":"Duomenys įdiegiami.","tw.loader.data":"Projekto duomenys atsisiunčia...","tw.loader.generic":"Projektas kraunamas...","tw.menuBar.60off":"Išjungti 60 FPS režimą","tw.menuBar.60on":"Įjungti 60 FPS režimą","tw.menuBar.addons":"Įskiepiai","tw.menuBar.advanced":"Išplėstiniai","tw.menuBar.changeUsername":"Pakeisti Naudotojo vardą","tw.menuBar.cloudOff":"Išjungti Debesies kintamuosius","tw.menuBar.cloudOn":"Įjungti debesies kintamuosius","tw.menuBar.cloudUnavailable":"Debesies kintamieji nepasiekiami","tw.menuBar.cloudUnavailableAlert":"Negalite naudotis debesies kintamaisiais, tikriausia kad jūs įjungėte redaguotoją.","tw.menuBar.moreSettings":"Išplėstiniai nustatymai","tw.menuBar.newFramerate":"Naujas kadrų per sekundę greitis:","tw.menuBar.package":"Supakuoti projektą","tw.menuBar.reportError1":"Kai kurie veikėjai negali būti sukompiliuoti.","tw.menuBar.reportError2":"Tai klaida. Prašau mums apie ją reportuoti.","tw.menuBar.saveAs":"Išsaugoti kaip {file}","tw.menuBar.seeInside":"Peržiurėti vidų","tw.oldDownload":"Išsaugoti į atskirą failą...","tw.paint.alpha":"Nepermatomumas","tw.privacy":"Privatumo politika","tw.saveAs":"Išsaugoti kaip...","tw.saveTo":"Išsaugoti į {file}","tw.settingsModal.customStageSize":"Pasirinktinis Scenos dydis:","tw.settingsModal.customStageSizeHelp":"Pakeičia Scratch scenos dydį iš 480x360 į kitą. Išbandykite 640x360, kad scena būtų plačiaekranė. Tik nedaugelis projektų su tuo susidoros tinkamai.","tw.settingsModal.dangerZone":"Pavojinga zona","tw.settingsModal.disableCompiler":"Išjungti kompiliatorių","tw.settingsModal.disableCompilerHelp":"Išjungia TurboWarp kompiliatorių. Redaguodami projektus galite norėti įjungti šią funkciją, kad scenarijai būtų nedelsiant atnaujinami. Priešingu atveju niekada neturėtumėte įjungti šios funkcijos.","tw.settingsModal.featured":"Rekomenduojama","tw.settingsModal.fps":"60 FPS (Pasirinktiniai FPS)","tw.settingsModal.fpsHelp":"Paleidžia kodus 60 kadrų per sekundę greičiu užuot paleidus 30. Daugiausia projektų neveiks su šiuo nustatymu įjungtu. Pabandykite Interpoliaciją su 60 FPS režimu išjungtu jei tai priežastis. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Spustelėkite kito nei 30 ar 60 kadrų per sekundę nustatymui","tw.settingsModal.help":"Spustėlkite dėl pagalbos","tw.settingsModal.highQualityPen":"Aukštos kokybės pieštukas","tw.settingsModal.highQualityPenHelp":"Leidžia pieštuko projektams veikti didesne skiriamąja geba ir išjungia kai kurių koordinačių apvalinimą redaktoriuje. Šis nustatymas nėra naudingas visiems projektams ir gali turėti įtakos našumui.","tw.settingsModal.infiniteClones":"Begaliniai Klonai","tw.settingsModal.infiniteClonesHelp":"Panaikina Scratch 300 klonų limitą.","tw.settingsModal.interpolation":"Interpoliacija","tw.settingsModal.interpolationHelp":"Projektai atrodo sklandžiau, nes interpoliuojamas personažų udėjimas. Interpoliacija neturėtų būti naudojama 3D projektuose, \\"Raytracer\\" projektuose, piešimo projektuose ir stringančiuose projektuose, nes dėl interpoliacijos jie veiks lėčiau, bet neatrodys sklandžiau.","tw.settingsModal.largeStageWarning":"Nerekomenduojama naudoti tokio dydžio pasirinktinio scenos dydžio! Vietoj to naudokite mažesnį dydį su tuo pačiu kraštinių santykiu ir leiskite viso ekrano režimui padidinti jo mastelį, kad jis atitiktų naudotojo ekraną.","tw.settingsModal.removeFencing":"Panaikinti scenos aptvarus","tw.settingsModal.removeFencingHelp":"Suteikia galimybę personažams judėti už ekrano ribų, tapti tokiais dideliais arba mažais, kokiais jie nori, ir leidžia liesti blokus už ekrano ribų.","tw.settingsModal.removeLimits":"Pašalinti limitus","tw.settingsModal.removeMiscLimits":"Pašalinti įvairius limitus.","tw.settingsModal.removeMiscLimitsHelp":"Pašalina garso efektų limitus bei pieštuko dydžio limitus.","tw.settingsModal.storeProjectOptions":"Išsaugoti nustatymus projekte.","tw.settingsModal.storeProjectOptionsHelp":"Įrašo pasirinktus nustatymus į projektą, kad jie būtų automatiškai taikomi, kai TurboWarp įkelia šį projektą. \\"Nukreipimo laikmatis\\" ir \\"išjungti kompiliatorių\\" nebus išsaugoti.","tw.settingsModal.title":"Išplėstiniai nustatymai","tw.settingsModal.warpTimer":"Nukreipimo laikmatis","tw.settingsModal.warpTimerHelp":"Kodai tikrina, ar jie nėra įstrigę ilgoje arba begalinėje kilpoje, ir veikia nedideliu kadrų dažniu, užuot įstrigę, kol kilpa baigsis. Tai išsprendžia daugumą gedimų, tačiau turi didelį poveikį našumui, todėl pagal numatytuosius nustatymus ši funkcija įjungta tik redaktoriuje.","tw.spriteSelectorItem.rename":"pervardinti","tw.studioview.authorAttribution":"Sukurta {author}","tw.studioview.error":"Kraunant kitą projektų puslapį įvyko klaida.","tw.studioview.hoverText":"{title} sukurta {author}","tw.twExtension.name":"TurboWarp Blokai","tw.unshared.2":"Dėl daugiau informacijos, aplankykite: {link}","tw.usernameModal.help":"Ši vertė bus išsaugota jūsų naršyklės saugykloje. Ji turėtų būti prijungta kai naudojates projektais kurie turi debesies kintamuosius.","tw.usernameModal.help2":"Vertes, kurios neatitinka galiojančios Scratch paskyros, debesies kintamųjų serveris paprastai atmeta. Rekomenduojame palikti jį tokį, koks yra, arba pakeisti į Scratch naudotojo vardą.","tw.usernameModal.mustChange":"Atsiprašome, bet debesies kintamųjų serveris mano kad jūsų naudotojo vardas gali būti nesaugus. Prašome jį pakeisti arba {resetIt}.","tw.usernameModal.mustChange.resetIt":"Iš naujo nustatyti jį (rekomenduojama)","tw.usernameModal.reset":"nustatyti iš naujo","tw.usernameModal.title":"Pakeisti Naudotojo vardą","tw.viewFeaturedProjects":"Spustelkite kad pažiurėtumėte rekomenduojamus projektus.","tw.viewOnScratch":"Peržiurėti projektą per Scratch"},"nb":{"tw.alerts.savedToDisk":"Lagret på datamaskinet.","tw.backpack.rename":"Nytt navn:","tw.blocks.addons":"Utvidelser","tw.blocks.buttonIsDown":"[MOUSE_BUTTON] mus knappen ned?","tw.blocks.lastKeyPressed":"sist tast trykket","tw.blocks.mouseButton.middle":"(1) mellom","tw.blocks.mouseButton.primary":"(0) primær","tw.blocks.mouseButton.secondary":"(2) sekundær","tw.blocks.openDocs":"Åpne dokumentasjon","tw.changeUsername.cannotChangeWhileRunning":"Brukernavn kan ikke byttes mens prosjektet er på.","tw.code":"Kildekode","tw.featuredProjectsStudio":"Se galeriet på Scratch.","tw.feedback":"Tilbakemelding & feil","tw.feedbackButton":"TurboWarp tillbakemelding","tw.footer.disclaimer":"TurboWarp er ikke tilknyttet Scratch, Scratch Team eller Scratch Foundation.","tw.footer.parameters":"URL-parametere","tw.gui.defaultProjectTitle":"Prosjekt","tw.guiDefaultTitle":"Kjør Scratch prosjekter raskere","tw.home.credit":"Merknader og bidragsytere","tw.home.description":"TurboWarp er en Scratch-mod som samler prosjekter til JavaScript for å få dem til å kjøre veldig raskt. Prøv det ved å legge inn en prosjekt-ID eller URL ovenfor eller velge et utvalgt prosjekt nedenfor.","tw.home.instructions":"Hvordan bruke prosjektet","tw.interpolationEnabled":"Interpolasjon","tw.invalidParameters.clones":"\\"klon\\" Url-parameteren er ugyldig","tw.invalidParameters.fps":"\\"fps\\" Url-parameteren er ugyldig","tw.loader.assets.known":"Laster ned eiendeler ({complete}/{total}) ...","tw.loader.assets.unknown":"Laster ned eiendeler ...","tw.loader.data":"Laster ned prosjektdata ...","tw.loader.generic":"Laster prosjekt ...","tw.menuBar.60off":"Slå av 60 FPS Modus","tw.menuBar.60on":"Slå på 60 FPS Modus","tw.menuBar.addons":"Utvidelser","tw.menuBar.advanced":"Avansert","tw.menuBar.changeUsername":"Bytt Brukernavn","tw.menuBar.cloudOff":"Slå av nett-variabler","tw.menuBar.cloudOn":"Slå på nett-variabler","tw.menuBar.cloudUnavailable":"Nett-variabler er ikke tilgjengelig","tw.menuBar.cloudUnavailableAlert":"Kan ikke bruke nett-variabler, det er kanskje fordi du åpnet redigerer","tw.menuBar.compileError":"{sprite}:{error}","tw.menuBar.moreSettings":"Avansert innstillinger","tw.menuBar.newFramerate":"Nytt bildefrekvens:","tw.menuBar.reportError1":"Noen skripter kunne ikke kompileres.","tw.menuBar.reportError2":"Dette er en feil. Vennligst meld det.","tw.menuBar.saveAs":"Lagre som {file}","tw.menuBar.seeInside":"Se inni","tw.paint.alpha":"Opasitet","tw.privacy":"Personvernregler","tw.settingsModal.customStageSize":"Bytt scene størrelse:","tw.settingsModal.dangerZone":"Faresone","tw.settingsModal.featured":"Anbefalt","tw.settingsModal.fps":"60 FPS (tilpassede fps)","tw.settingsModal.fpsHelp.customFramerate":"Klikk her til å velge mellom 30 eller 60 FPS","tw.settingsModal.help":"Klikk her for hjelp","tw.settingsModal.highQualityPen":"Høy kvalitet penn ","tw.settingsModal.infiniteClones":"Uendelige kloner","tw.settingsModal.infiniteClonesHelp":"Den slår av Scratchs 300 klon grense","tw.settingsModal.interpolation":"Interpolasjon","tw.settingsModal.removeLimits":"Fjern grenser","tw.settingsModal.title":"Avansert innstillinger","tw.spriteSelectorItem.rename":"endre navn","tw.studioview.authorAttribution":"fra {author}","tw.studioview.error":"Det oppsto en feil under innlasting av neste side av prosjekter.","tw.studioview.hoverText":"{title} fra {author}","tw.twExtension.name":"TurboWarp Klosser","tw.usernameModal.mustChange":"Beklager, Nett-variabel server tror at brukernavnet din er usikre. Bytt brukernavnet eller {resetIt}","tw.usernameModal.mustChange.resetIt":"nullstille det (anbefales)","tw.usernameModal.reset":"Nullstille","tw.usernameModal.title":"Bytt Brukernavn","tw.viewFeaturedProjects":"Klikk til å se anbefalte prosjekter.","tw.viewOnScratch":"Se prosjektet på Scratch"},"nl":{"tw.alerts.creatingRestorePoint":"Bezig met herstelpunt maken...","tw.alerts.lostPeripheralConnection":"Verbinding verloren met {extensionName}.","tw.alerts.restorePointError":"Kon herstelpunt niet maken","tw.alerts.restorePointSuccess":"Herstelpunten vind je onder \\"Bestand\\"","tw.alerts.savedToDisk":"Opgeslagen op je computer.","tw.backpack.rename":"Nieuwe naam:","tw.blocks.PROCEDURES_DOCS":"Hoe gebruik ik retourneer?","tw.blocks.PROCEDURES_RETURN":"retourneer {v}","tw.blocks.PROCEDURES_TO_REPORTER":"Veranderen naar waardeblok","tw.blocks.PROCEDURES_TO_STATEMENT":"Veranderen naar stapelblok","tw.blocks.buttonIsDown":"[MOUSE_BUTTON] muisknop ingedrukt?","tw.blocks.lastKeyPressed":"laatst ingedrukte toets","tw.blocks.mouseButton.middle":"(1) middelste","tw.blocks.mouseButton.primary":"(0) primaire","tw.blocks.mouseButton.secondary":"(2) secundaire","tw.blocks.openDocs":"Documentatie Openen","tw.browserModal.desc":"Gebruik een recente versie van Google Chrome, Mozilla Firefox, Microsoft Edge, of Apple Safari","tw.cantUseCloud":"Hoewel je cloudvariabelen kunt maken, zullen ze niet werken, behalve als dit project is geüpload naar Scratch of omgezet d.m.v. een tool zoals de {packager}.","tw.changeUsername.cannotChangeWhileRunning":"Gebruikersnaam kan niet worden veranderd terwijl het project bezig is.","tw.clipboard.danger":"Als je klembord dingen zoals wachtwoorden bevat, kan het project deze informatie delen met andere gebruikers of servers.","tw.clipboard.permission":"Klembordtoegang werkt niet in alle browsers. Indien toegestaan wordt toekomstige klembordtoegang automatisch toegestaan.","tw.clipboard.title":"Het project wilt toegang krijgen tot gegevens uit je klembord.","tw.cloudProvider":"Server aangeboden door {name}.","tw.cloudServers":"Kies een server bij jou in de buurt:","tw.code":"Broncode","tw.confirmIncompatibleExtension":"Deze extensie is niet compatibel met Scratch. Projecten die het gebruiken kunnen niet worden geüpload naar de Scratch website. Weet je zeker dat je het in wilt schakelen?","tw.createdBy":"Gemaakt door:","tw.customCloudServer":"Een aangepaste server voor cloudvariabelen wordt gebruikt: {server}","tw.customExtension.description":"Aangepaste extensies laden van URL\'s, bestanden of JavaScript-broncode.","tw.customExtension.name":"Aangepaste extensie","tw.customExtensionModal.file":"Bestand","tw.customExtensionModal.load":"Laden","tw.customExtensionModal.promptFile":"Selecteer het JavaScript-bestand van de extensie:","tw.customExtensionModal.promptText":"Plak hier de JavaScript-broncode van de extensie:","tw.customExtensionModal.promptURL":"Voer de URL van de extensie in:","tw.customExtensionModal.text":"Tekst","tw.customExtensionModal.title":"Aangepaste Extensie Laden","tw.customExtensionModal.trusted":"Deze extensie wordt zonder sandbox geladen omdat het afkomstig is van een vertrouwde bron.","tw.customExtensionModal.unsandboxed":"Extensie uitvoeren zonder sandbox","tw.customExtensionModal.unsandboxedWarning1":"Extensies laden zonder sandbox is gevaarlijk, doe dit niet als je niet weet wat je doet.","tw.customExtensionModal.unsandboxedWarning2":"Extensies die geladen zijn zonder sandbox kunnen je project beschadigen, je instellingen verwijderen, wachtwoorden phishen, en zorgen voor nog andere slechte zaken. De ontwikkelaars van {APP_NAME} zijn niet verantwoordelijk voor eventuele resulterende problemen.","tw.customExtensionModal.untrusted":"Wegens veiligheidsredenen worden extensies van onbetrouwbare URL\'s altijd geladen met de sandbox.","tw.customReporters.description":"Geef zelfgemaakte blokken onder de categorie \\"Mijn blokken\\" de mogelijkheid om waarden te hebben en te worden gebruikt als invoer.","tw.customReporters.name":"Aangepaste waardeblokken","tw.documentation":"Documentatie","tw.embed.persistent":"Indien toegestaan worden toekomstige invoegingen naar dezelfde website automatisch toegestaan.","tw.embed.risks":"Hoewel de embed wordt geladen met sandbox, heeft het nog wel toegang tot informatie over je apparaat, zoals je IP-adres en algemene locatie.","tw.embed.title1":"Het project wilt HTML-inhoud invoegen op het speelveld:","tw.embed.title2":"Het project wilt inhoud op afstand invoegen op het speelveld:","tw.extensionGallery.error":"Kon extensiegalerij niet laden. Ga naar extensions.turbowarp.org om meer extensies te vinden.","tw.extensionGallery.loading":"Bezig met extensiegalerij laden...","tw.extensionGallery.more":"Ga naar extensions.turbowarp.org om meer te weten te komen over extensies.","tw.extensionGallery.name":"TurboWarp-extensiegalerij","tw.favorite":"Favoriet Maken","tw.featuredProjectsStudio":"Deze studio bekijken op Scratch.","tw.feedbackButton":"Feedback geven","tw.fetch.title":"Het project wilt verbinding maken met de website:","tw.fileInput.none":"Geen bestand geselecteerd.","tw.fileInput.selected":"Geselecteerd: {name}","tw.fonts.add":"Toevoegen","tw.fonts.custom.file":"Selecteer een lettertypebestand van je computer:","tw.fonts.custom.name":"Geef het lettertype een naam:","tw.fonts.custom1":"Lettertype toevoegen uit een bestand","tw.fonts.custom2":"Werkt meestal niet in Scratch. Ondersteunde formaten: {formats}","tw.fonts.delete":"Weet je zeker dat je \\"{font}\\" wilt verwijderen? Elk vector-uiterlijk zal het terugval-lettertype gebruiken.","tw.fonts.fallback":"Kies een terugval-lettertype als het lettertype niet kan worden geladen of is verwijderd:","tw.fonts.list":"Geïnstalleerde lettertypen:","tw.fonts.none":"Nog geen lettertypen toegevoegd.","tw.fonts.readError":"Kon lettertypebestand niet lezen: {error}","tw.fonts.system":"Systeemlettertype","tw.fonts.system.name":"Typ de naam van een lettertype die in je computer is ingebouwd. Het lettertype wordt misschien niet voor iedereen correct weergegeven.","tw.fonts.system1":"Een systeemlettertype toevoegen","tw.fonts.system2":"Werkt misschien in Scratch, maar wordt niet voor iedereen correct weergegeven.","tw.fonts.title":"Lettertypen","tw.footer.disclaimer":"TurboWarp is niet aangesloten bij Scratch, het Scratch Team, of de Scratch Foundation.","tw.footer.documentation":"Documentatie","tw.footer.donate":"Doneren","tw.footer.embed":"Invoeging","tw.footer.parameters":"URL-Parameters","tw.geolocate.permission":"Indien toegestaan kan je door je browser worden gevraagd om toegang tot je locatie toe te staan.","tw.geolocate.title":"Het project wilt toegang tot je locatie.","tw.gui.crashMessage.description":"Het spijt ons, maar het ziet ernaar uit dat de pagina is gecrasht. Ververs je pagina om het opnieuw te proberen.","tw.guiDefaultTitle":"Speel Scratch-projecten sneller af","tw.home.credit":"Opmerkingen en credits","tw.home.description":"TurboWarp is een modificatie van Scratch die projecten omzet naar JavaScript om ze heel snel te laten werken. Probeer het door hierboven een project-ID of URL in te voeren of hieronder een uitgelicht project te kiezen.","tw.home.instructions":"Instructies","tw.input.tooltip":"Plak hier een link naar een Scratch-project!","tw.interpolationEnabled":"Interpolatie","tw.invalidParameters.clones":"URL-parameter \\"clone\\" is ongeldig","tw.invalidParameters.fps":"URL-parameter \\"fps\\" is ongeldig","tw.loadError":"Kon project niet laden: {error}","tw.loadExtension.embedded":"Het project wilt een aangepaste extensie laden met de code:","tw.loadExtension.sandboxed":"Hoewel de code wordt gesandboxed heeft het nog steeds toegang tot informatie van je apparaat, zoals je IP-adres en algemene locatie. Ga alleen verder als je de maker van deze extensie vertrouwt.","tw.loadExtension.unsandboxed":"Extensie uitvoeren zonder sandbox","tw.loadExtension.unsandboxedWarning":"Extensies laden zonder sandbox is gevaarlijk. De extensie kan je project beschadigen, je instellingen verwijderen, wachtwoorden phishen, en zorgen voor nog andere slechte zaken. De ontwikkelaars van {APP_NAME} zijn niet verantwoordelijk voor eventuele resulterende problemen.","tw.loadExtension.url":"Het project wilt een aangepaste extensie laden van de URL:","tw.loader.assets.known":"Bezig met onderdelen downloaden ({complete}/{total}) ...","tw.loader.assets.unknown":"Bezig met onderdelen downloaden …","tw.loader.data":"Bezig met projectgegevens downloaden …","tw.loader.generic":"Bezig met laden van project ...","tw.lockdownMode":"Als je Apple gebruikt, schakel dan {lockdownMode} uit.","tw.lockdownMode2":"de isolatiemodus","tw.menuBar.60off":"60 FPS-stand uitzetten","tw.menuBar.60on":"60 FPS-stand aanzetten","tw.menuBar.advanced":"Geavanceerd","tw.menuBar.changeUsername":"Gebruikersnaam veranderen","tw.menuBar.cloudOff":"Cloudvariabelen uitschakelen","tw.menuBar.cloudOn":"Cloudvariabelen inschakelen","tw.menuBar.cloudUnavailable":"Cloudvariabelen zijn niet beschikbaar","tw.menuBar.cloudUnavailableAlert":"Kan geen cloudvariabelen gebruiken, waarschijnlijk omdat je de editor hebt geopend.","tw.menuBar.cloudUnavailableDesktop":"Cloudvariabelen zijn niet beschikbaar in de desktop-app.","tw.menuBar.moreSettings":"Geavanceerde instellingen","tw.menuBar.newFramerate":"Nieuwe framerate:","tw.menuBar.newWindow":"Nieuw venster","tw.menuBar.package":"Project packagen","tw.menuBar.reportError1":"Sommige scripts konden niet worden gecompileerd.","tw.menuBar.reportError2":"Dit is een bug, meld deze alsjeblieft.","tw.menuBar.restorePoints":"Herstelpunten","tw.menuBar.saveAs":"Opslaan als {file}","tw.menuBar.seeInside":"Bekijk van binnen","tw.moreCloud":"Meer informatie over cloudvariabelen.","tw.notify.permission":"Indien toegestaan kan je door je browser worden gevraagd om notificaties in te schakelen. Ook worden toekomstige notificaties automatisch toegestaan.","tw.notify.title":"Het project wilt notificaties weergeven.","tw.oldDownload":"Opslaan naar apart bestand...","tw.opcode.2000":"dagen sinds 2000","tw.opcode.mousedown":"muis ingedrukt?","tw.opcode.mousex":"muis x","tw.opcode.mousey":"muis y","tw.openAdvanced":"Geavanceerde instellingen openen","tw.openWindow.dangerous":"Deze website is niet beoordeeld door de ontwikkelaars van {APP_NAME}. Het kan gevaarlijke of kwaadaardige code bevatten.","tw.openWindow.title":"Het project wilt een nieuw venster of tabblad openen met de URL:","tw.paint.alpha":"Ondoorzichtigheid","tw.paint.fonts.more":"Meer lettertypen toevoegen...","tw.privacy":"Privacybeleid","tw.recordAudio.permission":"Indien toegestaan kan je door je browser worden gevraagd om microfoontoegang in te schakelen. Ook wordt toekomstige microfoontoegang automatisch toegestaan.","tw.recordAudio.title":"Het project wilt audio van je microfoon opnemen. Dit kan een tekst-transcript of ruwe audiogegevens inhouden. Het project kan audio delen met andere gebruikers of servers.","tw.recordVideo.permission":"Indien toegestaan kan je door je browser worden gevraagd om cameratoegang in te schakelen. Ook wordt toekomstige cameratoegang automatisch toegestaan.","tw.recordVideo.title":"Het project wilt video van je camera opnemen. Het project kan afbeeldingen delen met andere gebruikers of servers.","tw.redirect.dangerous":"Deze website is niet beoordeeld door de ontwikkelaars van {APP_NAME}. Het kan gevaarlijke of kwaadaardige code bevatten.","tw.redirect.title":"Het project wil dit tabblad doorsturen naar de URL:","tw.restorePoints.1minute":"elke minuut","tw.restorePoints.assets":"{n} onderdelen","tw.restorePoints.confirmDelete":"Weet je zeker dat je \\"{projectTitle}\\" wilt verwijderen? Dit kan niet ongedaan worden gemaakt.","tw.restorePoints.confirmDeleteAll":"Weet je zeker dat je ALLE herstelpunten wilt verwijderen? Dit kan niet ongedaan worden gemaakt.","tw.restorePoints.confirmLoad":"Er zijn niet-opgeslagen wijzigingen. Wil je het bestaand project vervangen?","tw.restorePoints.deleteAll":"Alles Verwijderen","tw.restorePoints.description":"{APP_NAME} slaat af en toe herstelpunten op je computer op zodat je je project terug kan halen als je vergeet op te slaan. Dit is een laatste redmiddel voor herstel. Je computer kan deze herstelpunten op elk moment verwijderen. Hang NIET af van deze functie.","tw.restorePoints.empty":"Geen herstelpunten gevonden.","tw.restorePoints.error":"Er is een fout opgetreden bij het laden van het herstelpunt: {error}","tw.restorePoints.intervalOption":"Herstelpunten worden {time} gemaakt.","tw.restorePoints.loading":"Bezig met laden...","tw.restorePoints.minutes":"elke {n} minuten","tw.restorePoints.never":"nooit","tw.restorePoints.off":"Herstelpunten uitschakelen is gevaarlijk.","tw.restorePoints.size":"Schatting gebruikte opslagruimte: {size}","tw.restorePoints.size2":"Onderdelen zoals uiterlijken en geluiden die gebruikt worden door meerdere herstelpunten worden maar één keer opgeslagen.","tw.restorePoints.title":"Herstelpunten","tw.sample":"Voorbeeldproject","tw.saveAs":"Opslaan als...","tw.saveTo":"Opslaan in {file}","tw.scratchUnsafeCloud":"Als je deze cloudvariabele maakt, zal het project het limiet van {number} variabelen overschrijden, en sommige variabelen zullen niet goed werken als je het project uploadt naar Scratch.","tw.securityManager.allow":"Toestaan","tw.securityManager.deny":"Weigeren","tw.securityManager.title":"Extensiebeveiliging","tw.securityManager.trust":"Indien toegestaan worden toekomstige verzoeken naar dezelfde website automatisch toegestaan.","tw.securityManager.why":"Dit kan gebruikt worden om afbeeldingen of geluiden te downloaden, multiplayer mogelijk te maken, toegang te krijgen tot een API, of misschien voor kwaadaardige bedoelingen. Dit zal je IP-adres, je algemene locatie en mogelijk overige gegevens delen met de website.","tw.settingsModal.customStageSize":"Aangepaste speelveldgrootte:","tw.settingsModal.customStageSizeHelp":"Verandert de grootte van het Scratch-speelveld van 480x360 naar iets anders. Probeer 640x360 voor een breed beeld. Maar heel weinig projecten zullen hier goed mee werken.","tw.settingsModal.dangerZone":"Gevarenzone","tw.settingsModal.disableCompiler":"Compiler uitschakelen","tw.settingsModal.disableCompilerHelp":"Schakelt de compiler van TurboWarp uit. Dit is handig tijdens het bewerken van projecten, want scripts updaten gelijk. Anders zou je dit nooit aan moeten zetten.","tw.settingsModal.featured":"Uitgelicht","tw.settingsModal.fps":"60 FPS (aangepaste FPS)","tw.settingsModal.fpsHelp":"Voert scripts 60 keer per seconde uit in plaats van 30. De meeste projecten zullen hier niet goed mee werken. Probeer interpolatie zonder 60 FPS als dit het geval is. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Klik hier om een andere framerate dan 30 of 60 te gebruiken","tw.settingsModal.help":"Klik hier voor hulp","tw.settingsModal.highQualityPen":"Pen met hoge kwaliteit","tw.settingsModal.highQualityPenHelp":"Geeft pen-tekeningen een hogere resolutie en schakelt een paar gevallen van afronding van coördinaten uit in de editor. Niet alle projecten hebben hier voordeel van en het kan prestaties verminderen.","tw.settingsModal.infiniteClones":"Kloonlimiet weghalen","tw.settingsModal.infiniteClonesHelp":"Haalt de limiet van 300 klonen van Scratch weg.","tw.settingsModal.interpolation":"Interpolatie","tw.settingsModal.interpolationHelp":"Laat projecten er soepeler uitzien door spritebewegingen te interpoleren. Gebruik dit niet in 3D-projecten, raytracers, penprojecten, en trage projecten. Interpolatie maakt die projecten juist trager, waardoor je het tegenovergestelde resultaat bereikt.","tw.settingsModal.largeStageWarning":"Het gebruiken van een speelveld van deze grootte is niet aangeraden! Gebruik in plaats daarvan een kleinere grootte met dezelfde beeldverhouding en laat het volledig scherm-modus het vergroten om het op de weergave van de gebruiker af te stemmen.","tw.settingsModal.removeFencing":"Waardelimieten van sprites weghalen","tw.settingsModal.removeFencingHelp":"Geeft sprites de mogelijkheid om van het scherm af te bewegen, zo groot of klein te worden als ze maar willen, en laat blokken voor aanrakingen zelfs buiten het scherm werken.","tw.settingsModal.removeLimits":"Limieten Weghalen","tw.settingsModal.removeMiscLimits":"Diverse limieten weghalen","tw.settingsModal.removeMiscLimitsHelp":"Haalt limieten van o.a. geluidseffecten en pengrootte weg.","tw.settingsModal.storeProjectOptions":"Instellingen opslaan in project","tw.settingsModal.storeProjectOptionsHelp":"Slaat de geselecteerde instellingen op in het project zodat ze automatisch worden toegepast wanneer dit project wordt geladen met TurboWarp. Warp timer en compiler uitschakelen worden niet opgeslagen.","tw.settingsModal.title":"Geavanceerde Instellingen","tw.settingsModal.warpTimer":"Warp timer","tw.settingsModal.warpTimerHelp":"Laat scripts controleren of ze vastzitten in een lange of oneindige lus en voor een lage framerate zorgen, in plaats van vast blijven zitten tot de lus eindigt. Dit lost de meeste crashes op, maar heeft een grote invloed op prestaties, dus het is alleen standaard ingeschakeld in de editor.","tw.soundEditorNotSupported":"De geluidseditor is niet ondersteund in deze browser.","tw.spriteSelectorItem.rename":"naam wijzigen","tw.stereoAlert":"Het bewerken van dit stereogeluid zal het onomkeerbaar veranderen naar mono.","tw.studioview.authorAttribution":"door {author}","tw.studioview.error":"Er is een fout opgetreden bij het laden van de volgende pagina van projecten.","tw.studioview.hoverText":"{title} door {author}","tw.tooLarge":"Dit geluidsbestand is mogelijk te groot voor Scratch.","tw.twExtension.description":"Gekke nieuwe blokken.","tw.twExtension.name":"TurboWarp-blokken","tw.unfavorite":"Niet Favoriet Maken","tw.unshared.2":"Voor meer informatie, bezoek: {link}","tw.unshared.bug":"Als dit project wel gedeeld is, meld dan een bug.","tw.unshared.cache":"Als dit project recentelijk is gedeeld, kan het zijn dat dit bericht een paar minuten lang verkeerd wordt weergegeven.","tw.unshared2.1":"Niet-gedeelde projecten zijn niet meer zichtbaar.","tw.usernameModal.help":"Deze waarde wordt opgeslagen in de opslag van je browser. Het kan worden gelogd wanneer je iets doet met projecten die cloudvariabelen bevatten.","tw.usernameModal.help2":"Waarden die niet corresponderen met een geldig Scratch-account worden normaal gesproken geweigerd door de server voor cloudvariabelen. We raden je aan het zo te laten of het te veranderen naar je Scratch-gebruikersnaam.","tw.usernameModal.mustChange":"Het spijt ons, maar de server voor cloudvariabelen vermoedt dat je gebruikersnaam onveilig is. Verander het alsjeblieft naar iets anders of {resetIt}.","tw.usernameModal.mustChange.resetIt":"reset het (aanbevolen)","tw.usernameModal.new":"Nieuwe gebruikersnaam:","tw.usernameModal.reset":"Resetten","tw.usernameModal.title":"Gebruikersnaam veranderen","tw.usesCloudVariables":"Dit project gebruikt cloudvariabelen.","tw.usesCloudVariables2":"De cloudvariabelen van {APP_NAME} zijn niet verbonden met die van Scratch. Iedereen kan {changeTheirUsername} naar wat ze maar willen, dus pas op voor imitatie.","tw.usesCloudVariables2.change":"hun gebruikersnaam veranderen","tw.viewFeaturedProjects":"Klik hier om uitgelichte projecten te zien.","tw.viewOnScratch":"Dit project bekijken op Scratch","tw.webglModal.description":"Je browser {doesNotSupportWebGL}, wat deze site nodig heeft om te werken. Probeer je browser en grafische stuurprogramma\'s te updaten of start je computer opnieuw op.","tw.webglModal.link":"ondersteunt WebGL niet"},"pl":{"tw.alerts.creatingRestorePoint":"Tworzenie punktu przywracania…","tw.alerts.lostPeripheralConnection":"Utracono połączenie do {extensionName}.","tw.alerts.savedToDisk":"Zapisano na twoim komputerze.","tw.backpack.rename":"Nowa nazwa:","tw.blocks.addons":"Dodatki","tw.blocks.buttonIsDown":"kliknięto [MOUSE_BUTTON] przycisk myszy?","tw.blocks.lastKeyPressed":"ostatnio naciśnięty przycisk","tw.blocks.mouseButton.middle":"(1) środkowy","tw.blocks.mouseButton.primary":"(0) podstawowy","tw.blocks.mouseButton.secondary":"(2) dodatkowy","tw.blocks.openDocs":"Otwórz Dokumentację","tw.changeUsername.cannotChangeWhileRunning":"Nazwa użytkownika nie może zostać zmieniona, kiedy projekt jest uruchomiony","tw.code":"Kod Źródłowy","tw.customExtension.name":"Niestandardowe Rozszerzenie","tw.customExtensionModal.file":"Plik","tw.customExtensionModal.title":"Załaduj Niestandardowe Rozszerzenie","tw.documentation":"Dokumentacja","tw.extensionGallery.name":"Galeria Rozszerzeń TurboWarp","tw.featuredProjectsStudio":"Zobacz studio w Scratchu.","tw.feedback":"Opinie i Błędy","tw.feedbackButton":"Opinia o TurboWarp","tw.fetch.title":"Projekt chce połączyć się z:","tw.fileInput.none":"Nie wybrano żadnego pliku.","tw.fileInput.selected":"Wybrano: {name}","tw.footer.credits":"Podziękowania","tw.footer.disclaimer":"TurboWarp nie jest powiązany ze Scratch, Scratch Team, ani Scratch Foundation.","tw.footer.documentation":"Dokumentacja","tw.footer.donate":"Wesprzyj","tw.footer.embed":"Osadzanie","tw.footer.parameters":"Parametry URL","tw.gui.defaultProjectTitle":"Projekt","tw.guiDefaultTitle":"Uruchamiaj projekty Scratch szybciej","tw.home.credit":"Notatki i Podziękowania","tw.home.description":"TurboWarp to modyfikacja Scratcha która kompiluje projekty do JavaScript żeby chodziły bardzo szybko. Wypróbuj tą funkcje wprowadzając ID projektu lub jego URL powyżej lub wybierając polecany projekt poniżej.","tw.home.instructions":"Instrukcje","tw.input.tooltip":"Skopiuj i wklej link do projektu Scratcha tutaj!","tw.interpolationEnabled":"Interpolacja","tw.invalidParameters.clones":"Parametr URL \\"clone\\" jest nieprawidłowy","tw.invalidParameters.fps":"Parametr URL \\"fps\\" jest nieprawidłowy","tw.loadError":"Nie udało się załadować projektu: {error}","tw.loader.assets.known":"Pobieranie zasobów ({complete}/{total}) ...","tw.loader.assets.unknown":"Pobieranie zasobów ...","tw.loader.data":"Pobieranie danych projektu ...","tw.loader.generic":"Ładowanie projektu ...","tw.menuBar.60off":"Wyłącz tryb 60 FPS","tw.menuBar.60on":"Włącz tryb 60 FPS","tw.menuBar.addons":"Dodatki","tw.menuBar.advanced":"Zaawansowane","tw.menuBar.changeUsername":"Zmień Nazwę Użytkownika","tw.menuBar.cloudOff":"Wyłącz Zmienne W Chmurze","tw.menuBar.cloudOn":"Włącz Zmienne W Chmurze","tw.menuBar.cloudUnavailable":"Zmienne W Chmurze nie są Dostępne","tw.menuBar.cloudUnavailableAlert":"Nie można użyć zmiennych w chmurze, najprawdopodobniej dlatego, że masz włączony edytor.","tw.menuBar.moreSettings":"Zaawansowane Ustawienia","tw.menuBar.newFramerate":"Nowa liczba klatek na sekundę:","tw.menuBar.reportError1":"Nie można skompilować niektórych skryptów.","tw.menuBar.reportError2":"To jest błąd. Proszę zgłoś to.","tw.menuBar.saveAs":"Zapisz jako {file}","tw.menuBar.seeInside":"Zajrzyj do środka","tw.oldDownload":"Zapisz do osobnego pliku...","tw.opcode.2000":"dni od 2000","tw.opcode.mousedown":"kliknięto myszką?","tw.opcode.mousex":"x myszy","tw.opcode.mousey":"y myszy","tw.openAdvanced":"Otwórz zaawansowane ustawienia","tw.openWindow.dangerous":"Ta strona nie została zweryfikowana przez twórców {APP_NAME}. Może zawierać niebezpieczny lub złośliwy kod.","tw.openWindow.title":"Projekt chce otworzyć nowe okno lub kartę z URL:","tw.paint.alpha":"Nieprzezroczystość","tw.privacy":"Polityka Prywatności","tw.redirect.dangerous":"Ta strona nie została zweryfikowana przez twórców {APP_NAME}. Może zawierać niebezpieczny lub złośliwy kod.","tw.redirect.title":"Projekt chce przejść na tej karcie do URL:","tw.saveAs":"Zapisz jako...","tw.saveTo":"Zapisz do {file}","tw.securityManager.allow":"Zezwól","tw.securityManager.title":"Bezpieczeństwo Rozszerzeń","tw.settingsModal.customStageSize":"Niestandardowy Rozmiar Sceny:","tw.settingsModal.customStageSizeHelp":"Zmienia wielkość ekranu używanego w Scratchu z 480x360 do jakiejś innej wielkości. Spróbuj 640x360 żeby zrobić ekran szerszy. Bardzo niewiele projektów poradzi sobie z tym prawidłowo.","tw.settingsModal.dangerZone":"Niebezpieczna Strefa","tw.settingsModal.disableCompiler":"Wyłącz Kompilator","tw.settingsModal.featured":"Wyróżnione","tw.settingsModal.fps":"60 FPS (Niestandardowe FPS)","tw.settingsModal.fpsHelp":"Uruchamia skrypty 60 razy na sekundę, zamiast 30. Większość projektów nie będzie działać poprawnie z tą opcją włączoną. W takim przypadku spróbuj Interpolację z wyłączonym trybem 60 FPS. {customFramerate}","tw.settingsModal.fpsHelp.customFramerate":"Kliknij, aby ustawić liczbę klatek na sekundę inną niż 30 lub 60.","tw.settingsModal.help":"Kliknij po pomoc","tw.settingsModal.highQualityPen":"Wysokiej Jakości Pióro","tw.settingsModal.highQualityPenHelp":"Umożliwia renderowanie pisaka z wyższą rozdzielczością, oraz wyłącza zaokrąglanie współrzędnych dla pisaka (większa dokładność). Nie wszystkie projekty pozytywnie skorzystają z tego ustawienia i może ono negatywnie wpłynąć na wydajność.","tw.settingsModal.infiniteClones":"Nieskończone Klony","tw.settingsModal.infiniteClonesHelp":"Wyłącza domyślny limit 300 klonów.","tw.settingsModal.interpolation":"Interpolacja","tw.settingsModal.removeFencing":"Usuń Ograniczenia","tw.settingsModal.removeFencingHelp":"Pozwala duszkom poruszać się i wykrywać kolizję poza sceną oraz mieć dowolny rozmiar.","tw.settingsModal.removeLimits":"Usuń Limity","tw.settingsModal.removeMiscLimits":"Usuń Różne Limity","tw.settingsModal.removeMiscLimitsHelp":"Usuwa limity efektów dźwiękowych i rozmiaru pisaka.","tw.settingsModal.storeProjectOptions":"Przechowaj ustawienia w projekcie","tw.settingsModal.title":"Zaawansowane Ustawienia","tw.settingsModal.warpTimer":"Warp Stoper","tw.spriteSelectorItem.rename":"zmień nazwę","tw.stereoAlert":"Edytowanie tego dźwięku stereo bezpowrotnie konwertuje go do mono.","tw.studioview.authorAttribution":"przez {author}","tw.studioview.error":"Wystąpił błąd przy ładowaniu następnej strony projektów.","tw.studioview.hoverText":"{title} autorstwa {author}","tw.tooLarge":"Ten dźwięk może być zbyt duży, aby wczytać go do Scratch.","tw.twExtension.description":"Dziwne nowe bloki.","tw.twExtension.name":"Bloki TurboWarp","tw.unshared2.1":"Nieudostępnione projekty nie są już widoczne.","tw.usernameModal.mustChange.resetIt":"zresetuj to (zalecane)","tw.usernameModal.reset":"Resetuj","tw.usernameModal.title":"Zmień Nazwę Użytkownika","tw.viewFeaturedProjects":"Kliknij, aby zobaczyć polecane projekty.","tw.viewOnScratch":"Zobacz projekt w Scratchu"},"pt":{"tw.alerts.creatingRestorePoint":"Criando ponto de restauração...","tw.alerts.savedToDisk":"Salvo no seu computador.","tw.backpack.rename":"Novo nome:","tw.blocks.buttonIsDown":"botão [MOUSE_BUTTON] do mouse pressionado?","tw.blocks.lastKeyPressed":"última tecla pressionada","tw.blocks.mouseButton.middle":"(1) do meio","tw.blocks.mouseButton.primary":"(0) primário","tw.blocks.mouseButton.secondary":"(2) secundário","tw.blocks.openDocs":"Abrir Documentação","tw.browserModal.desc":"Veja se você está usando uma versão recente do Google Chrome, Mozilla Firefox, Microsoft Edge ou Apple Safari.","tw.changeUsername.cannotChangeWhileRunning":"O nome de usuário não pode ser alterado enquanto o projeto está em execução.","tw.code":"Código-fonte","tw.confirmIncompatibleExtension":"Essa extensão não é compatível com o Scratch. Projetos feitos com ela não funcionarão se você fizer upload no site do Scratch. Tem certeza que quer ativá-la?","tw.customExtension.name":"Extensão Customizada","tw.customExtensionModal.file":"Arquivo","tw.featuredProjectsStudio":"Ver estúdio no Scratch.","tw.feedback":"Feedback e bugs","tw.feedbackButton":"Feedback do TurboWarp","tw.footer.credits":"Créditos","tw.footer.disclaimer":"O TurboWarp não tem afiliação com o Scratch, a Equipe do Scratch ou a Fundação Scratch.","tw.footer.embed":"Incorporação","tw.footer.parameters":"Parâmetros de URL","tw.gui.defaultProjectTitle":"Projeto","tw.guiDefaultTitle":"Rode projetos do Scratch mais rapidamente","tw.home.credit":"Notas e Créditos","tw.home.description":"TurboWarp é um mod do Scratch que compila projetos para JavaScript para os executar mais rapidamente. Experimente colocando um ID ou URL de projeto acima ou escolhendo um dos projetos em destaque abaixo.","tw.home.instructions":"Instruções","tw.input.tooltip":"Copie e cole um link de um projeto no Scratch aqui!","tw.interpolationEnabled":"Interpolação","tw.invalidParameters.clones":"parâmetro de URL \\"clone\\" é inválido","tw.invalidParameters.fps":"parâmetro de URL \\"fps\\" é inválido","tw.loader.assets.known":"Baixando recursos ({complete}/{total}) ...","tw.loader.assets.unknown":"Baixando recursos ...","tw.loader.data":"Baixando dados do projeto ...","tw.loader.generic":"Carregando projeto …","tw.menuBar.60off":"Desativar modo 60 FPS","tw.menuBar.60on":"Ativar modo 60 FPS","tw.menuBar.advanced":"Avançado","tw.menuBar.changeUsername":"Mudar nome de usuário","tw.menuBar.cloudOff":"Desativar variáveis na nuvem","tw.menuBar.cloudOn":"Ativar variáveis na nuvem","tw.menuBar.cloudUnavailable":"Variáveis na nuvem não estão disponíveis","tw.menuBar.cloudUnavailableAlert":"Não pôde usar variáveis na nuvem, provavelmente porque você abriu o editor.","tw.menuBar.moreSettings":"Configurações Avançadas","tw.menuBar.newFramerate":"Novo FPS:","tw.menuBar.reportError1":"Alguns scripts não puderam ser compilados.","tw.menuBar.reportError2":"Isso é um bug. Por favor, reporte-o.","tw.menuBar.saveAs":"Salvar como {file}","tw.menuBar.seeInside":"Ver interior","tw.oldDownload":"Salvar como arquivo separado...","tw.paint.alpha":"Opacidade","tw.privacy":"Política de Privacidade","tw.saveAs":"Salvar como...","tw.saveTo":"Salvar como {file}","tw.settingsModal.customStageSize":"Tamanho Customizado do Palco:","tw.settingsModal.customStageSizeHelp":"Muda o tamanho do palco do Scratch de 480x360 para outro valor. Tente 640x360 para deixar o palco em widescreen. Quase nenhum projeto irá funcionar direito com essa opção.","tw.settingsModal.dangerZone":"Zona de Perigo","tw.settingsModal.disableCompiler":"Desativar Compilador","tw.settingsModal.disableCompilerHelp":"Desativa o compilador do TurboWarp. Você pode ativar isso enquanto estiver editando projetos para fazer os scripts serem atualizados imediatamente. Em qualquer outra hipótese, deixe esta opção desativada.","tw.settingsModal.featured":"Em destaque","tw.settingsModal.fps":"60 FPS (FPS customizado)","tw.settingsModal.fpsHelp":"Roda scripts 60 vezes por segundo ao invés de 30. A maioria dos projetos não vão funcionar adequadamente com isso ativado. Se esse for o caso, você pode tentar usar Interpolação e desligar o modo 60 FPS. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Clique para escolher FPS além de 30 ou 60","tw.settingsModal.help":"Ajuda","tw.settingsModal.highQualityPen":"Caneta de Alta Qualidade","tw.settingsModal.highQualityPenHelp":"Permite que projetos renderizem a caneta em uma qualidade melhor e reduz arredondamento de coordenadas no editor. Nem todo projeto se beneficia dessa opção, e ela pode piorar a performance.","tw.settingsModal.infiniteClones":"Clones Infinitos","tw.settingsModal.infiniteClonesHelp":"Desativa o limite de 300 clones do Scratch.","tw.settingsModal.interpolation":"Interpolação","tw.settingsModal.interpolationHelp":"Faz projetos parecerem rodar em framerates mais altas interpolando o movimento de atores. Interpolação não deve ser usada em projetos 3D, raytracers, projetos que usam caneta e projetos lagados porque a interpolação só vai fazer eles rodarem mais devagar sem deixá-los mais suaves.","tw.settingsModal.largeStageWarning":"Não é recomendado usar um tamanho de palco tão grande! Ao invés disso, use um tamanho menor com a mesma proporção e o modo tela cheia irá aumentar o palco para preencher a tela do usuário.","tw.settingsModal.removeFencing":"Remover Borda","tw.settingsModal.removeFencingHelp":"Deixa atores andarem para fora da tela, ficarem grandes ou pequenos sem limitação de tamanho e permite que os blocos \\"tocando\\" funcionem fora dos limites do palco.","tw.settingsModal.removeLimits":"Remover Limites","tw.settingsModal.removeMiscLimits":"Remover Outros Limites","tw.settingsModal.removeMiscLimitsHelp":"Remove os limites de efeitos de som e tamanho da caneta.","tw.settingsModal.storeProjectOptions":"Salvar configurações no projeto","tw.settingsModal.storeProjectOptionsHelp":"Salva suas configurações no projeto e automaticamente os aplica quando você abrir o projeto no TurboWarp. \\"Warp timer\\" e \\"desativar compilador\\" não serão salvos.","tw.settingsModal.title":"Configurações Avançadas","tw.settingsModal.warpTimerHelp":"Faz scripts detectarem se estão presos em um loop longo ou infinito e roda a uma framerate baixa ao invés de travar até o loop terminar. Isso conserta a maioria dos crashes mas prejudica muito a performance, então não está ativado por padrão fora do editor.","tw.spriteSelectorItem.rename":"renomear","tw.studioview.authorAttribution":"por {author}","tw.studioview.error":"Erro ao carregar a próxima página de projetos.","tw.studioview.hoverText":"{title} por {author}","tw.twExtension.name":"Blocos do TurboWarp","tw.usernameModal.help":"Esse valor será guardado no armazenamento do seu navegador. Projetos que contenham variáveis na nuvem podem querer registrá-lo.","tw.usernameModal.help2":"Valores que não correspondem a uma conta válida no Scratch normalmente serão rejeitados pelo servidor de variáveis na nuvem. Recomendamos que você deixe este valor como está ou mude-o para o seu nome de usuário do Scratch.","tw.usernameModal.mustChange":"Desculpe, o servidor de variáveis na nuvem acha que o seu nome de usuário pode ser inapropriado. Por favor, mude para outra coisa ou {resetIt}.","tw.usernameModal.mustChange.resetIt":"resete-o (recomendado)","tw.usernameModal.new":"Novo nome de usuário:","tw.usernameModal.reset":"Redefinir","tw.usernameModal.title":"Mudar nome de usuário","tw.viewFeaturedProjects":"Clique para ver projetos em destaque.","tw.viewOnScratch":"Ver projeto no Scratch"},"pt-br":{"tw.alerts.creatingRestorePoint":"Criando ponto de restauração...","tw.alerts.lostPeripheralConnection":"Conexão com {extensionName} foi perdida.","tw.alerts.savedToDisk":"Salvo no seu computador.","tw.backpack.rename":"Novo nome:","tw.blocks.buttonIsDown":"botão [MOUSE_BUTTON] do mouse pressionado?","tw.blocks.lastKeyPressed":"última tecla pressionada","tw.blocks.mouseButton.middle":"(1) do meio","tw.blocks.mouseButton.primary":"(0) primário","tw.blocks.mouseButton.secondary":"(2) secundário","tw.blocks.openDocs":"Abrir Documentação","tw.browserModal.desc":"Veja se você está usando uma versão recente do Google Chrome, Mozilla Firefox, Microsoft Edge ou Apple Safari.","tw.cantUseCloud":"Embora você possa criar variáveis de nuvem, elas não funcionarão a menos que este projeto seja publicado no Scratch ou convertido usando uma ferramenta como o {packager}.","tw.changeUsername.cannotChangeWhileRunning":"O nome de usuário não pode ser alterado enquanto o projeto está em execução.","tw.code":"Código-fonte","tw.confirmIncompatibleExtension":"Essa extensão não é compatível com o Scratch. Projetos feitos com ela não funcionarão se você fizer upload no site do Scratch. Tem certeza que quer ativá-la?","tw.customExtension.name":"Extensão Customizada","tw.customExtensionModal.file":"Arquivo","tw.customExtensionModal.load":"Carregar","tw.customExtensionModal.title":"Carregar Extensão Customizada","tw.documentation":"Documentação","tw.extensionGallery.name":"Galeria de Extensões do TurboWarp","tw.featuredProjectsStudio":"Ver estúdio no Scratch.","tw.feedback":"Feedback e bugs","tw.feedbackButton":"Feedback do TurboWarp","tw.fetch.title":"Este projeto quer se conectar ao site: ","tw.fileInput.none":"Nenhum arquivo selecionado.","tw.fileInput.selected":"Selecionado: {name}","tw.footer.credits":"Créditos","tw.footer.disclaimer":"O TurboWarp não tem afiliação com o Scratch, a Equipe do Scratch ou a Fundação Scratch.","tw.footer.documentation":"Documentação","tw.footer.donate":"Doar","tw.footer.embed":"Incorporação","tw.footer.parameters":"Parâmetros de URL","tw.gui.crashMessage.description":"Lamentamos, mas parece que a página parou de funcionar. Por favor, renicie-a para tentar novamente.","tw.gui.defaultProjectTitle":"Projeto","tw.guiDefaultTitle":"Rode projetos do Scratch mais rapidamente","tw.home.credit":"Notas e Créditos","tw.home.description":"TurboWarp é um mod do Scratch que compila projetos para JavaScript para os executar mais rapidamente. Experimente colocando um ID ou URL de projeto acima ou escolhendo um dos projetos em destaque abaixo.","tw.home.instructions":"Instruções","tw.input.tooltip":"Copie e cole um link de um projeto no Scratch aqui!","tw.interpolationEnabled":"Interpolação","tw.invalidParameters.clones":"parâmetro de URL \\"clone\\" é inválido","tw.invalidParameters.fps":"parâmetro de URL \\"fps\\" é inválido","tw.loadError":"Erro ao carregar arquivo do projeto: {error}","tw.loader.assets.known":"Baixando recursos ({complete}/{total}) ...","tw.loader.assets.unknown":"Baixando recursos ...","tw.loader.data":"Baixando dados do projeto ...","tw.loader.generic":"Carregando projeto …","tw.menuBar.60off":"Desativar modo 60 FPS","tw.menuBar.60on":"Ativar modo 60 FPS","tw.menuBar.advanced":"Avançado","tw.menuBar.changeUsername":"Mudar nome de usuário","tw.menuBar.cloudOff":"Desativar variáveis na nuvem","tw.menuBar.cloudOn":"Ativar variáveis na nuvem","tw.menuBar.cloudUnavailable":"Variáveis na nuvem não estão disponíveis","tw.menuBar.cloudUnavailableAlert":"Não pôde usar variáveis na nuvem, provavelmente porque você abriu o editor.","tw.menuBar.moreSettings":"Configurações Avançadas","tw.menuBar.newFramerate":"Novo FPS:","tw.menuBar.package":"Exportar projeto","tw.menuBar.reportError1":"Alguns scripts não puderam ser compilados.","tw.menuBar.reportError2":"Isso é um bug. Por favor, reporte-o.","tw.menuBar.saveAs":"Salvar como {file}","tw.menuBar.seeInside":"Ver interior","tw.mono":"Monodirecional","tw.oldDownload":"Salvar como arquivo separado...","tw.opcode.2000":"dias desde 2000","tw.opcode.mousedown":"mouse pressionado?","tw.opcode.mousex":"x do mouse","tw.opcode.mousey":"y do mouse","tw.openAdvanced":"Abrir configurações avançadas","tw.openWindow.dangerous":"Este site não foi revisado pelos desenvolvedores do {APP_NAME}. Pode conter códigos perigosos ou maliciosos.","tw.openWindow.title":"Este projeto quer abrir uma nova janela ou aba para acessar a seguinte URL:","tw.paint.alpha":"Opacidade","tw.privacy":"Política de Privacidade","tw.redirect.dangerous":"Este site não foi revisado pelos desenvolvedores do {APP_NAME}. Pode conter códigos perigosos ou maliciosos.","tw.redirect.title":"O projeto deseja navegar nesta guia para o URL:","tw.restorePoints.loading":"Carregando.","tw.saveAs":"Salvar como...","tw.saveTo":"Salvar como {file}","tw.scratchUnsafeCloud":"Se você criar essa variável de nuvem, o projeto excederá o limite de {number} variáveis do Scratch e algumas variáveis não funcionarão se você enviar o projeto para o Scratch.","tw.securityManager.allow":"Permitir","tw.securityManager.deny":"Negar","tw.securityManager.title":"Segurança de Extensão","tw.securityManager.why":"Isso pode ser usado para baixar imagens ou sons, implementar mecânicas de multiplayer, acessar uma API ou para fins maliciosos. Isso compartilhará seu endereço IP, localização geral e possivelmente outros dados com o site.","tw.settingsModal.customStageSize":"Tamanho Customizado do Palco:","tw.settingsModal.customStageSizeHelp":"Muda o tamanho do palco do Scratch de 480x360 para outro valor. Tente 640x360 para deixar o palco em widescreen. Quase nenhum projeto irá funcionar direito com essa opção.","tw.settingsModal.dangerZone":"Zona de Perigo","tw.settingsModal.disableCompiler":"Desativar compilador","tw.settingsModal.disableCompilerHelp":"Desabilita o compilador do TurboWarp. Você pode ligar isso enquanto estiver editando projetos para fazer os scripts serem atualizados imediatamente. Em qualquer outra hipótese, deixe esta opção desativada.","tw.settingsModal.featured":"Em destaque","tw.settingsModal.fps":"60 FPS (FPS customizado)","tw.settingsModal.fpsHelp":"Roda scripts 60 vezes por segundo ao invés de 30. A maioria dos projetos não vão funcionar adequadamente com isso ativado. Se esse for o caso, você pode tentar usar Interpolação e desligar o modo 60 FPS. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Clique para escolher FPS além de 30 ou 60","tw.settingsModal.help":"Ajuda","tw.settingsModal.highQualityPen":"Caneta de Alta Qualidade","tw.settingsModal.highQualityPenHelp":"Permite que projetos renderizem a caneta em uma qualidade melhor e reduz arredondamento de coordenadas no editor. Nem todo projeto se beneficia dessa opção, e ela pode piorar a performance.","tw.settingsModal.infiniteClones":"Clones Infinitos","tw.settingsModal.infiniteClonesHelp":"Desativa o limite de 300 clones do Scratch.","tw.settingsModal.interpolation":"Interpolação","tw.settingsModal.interpolationHelp":"Faz projetos parecerem rodar em framerates mais altas interpolando o movimento de atores. Interpolação não deve ser usada em projetos 3D, raytracers, projetos que usam caneta e projetos lagados porque a interpolação só vai fazer eles rodarem mais devagar sem deixá-los mais suaves.","tw.settingsModal.largeStageWarning":"Não é recomendado usar um tamanho de palco tão grande! Ao invés disso, use um tamanho menor com a mesma proporção e o modo tela cheia irá aumentar o palco para preencher a tela do usuário.","tw.settingsModal.removeFencing":"Remover Borda","tw.settingsModal.removeFencingHelp":"Deixa atores andarem para fora da tela, ficarem grandes ou pequenos sem limitação de tamanho e permite que os blocos \\"tocando\\" funcionem fora dos limites do palco.","tw.settingsModal.removeLimits":"Remover Limites","tw.settingsModal.removeMiscLimits":"Remover Outros Limites","tw.settingsModal.removeMiscLimitsHelp":"Remove os limites de efeitos de som e tamanho da caneta.","tw.settingsModal.storeProjectOptions":"Salvar configurações no projeto","tw.settingsModal.storeProjectOptionsHelp":"Salva suas configurações no projeto e automaticamente os aplica quando você abrir o projeto no TurboWarp. \\"Warp timer\\" e \\"desativar compilador\\" não serão salvos.","tw.settingsModal.title":"Configurações Avançadas","tw.settingsModal.warpTimerHelp":"Faz scripts detectarem se estão presos em um loop longo ou infinito e roda a uma framerate baixa ao invés de travar até o loop terminar. Isso conserta a maioria dos crashes mas prejudica muito a performance, então não está ativado por padrão fora do editor.","tw.spriteSelectorItem.rename":"renomear","tw.stereo":"Estéreo","tw.stereoAlert":"Editar este som estéreo irá convertê-lo irreversivelmente em mono.","tw.studioview.authorAttribution":"por {author}","tw.studioview.error":"Erro ao carregar a próxima página de projetos.","tw.studioview.hoverText":"{title} por {author}","tw.tooLarge":"Esse som excede os limites de tamanho de sons do Scratch.","tw.twExtension.description":"Novos blocos estranhos.","tw.twExtension.name":"Blocos do TurboWarp","tw.unshared.2":"Para mais informações, visite: {link}","tw.unshared.bug":"Se este projeto estiver compartilhado, por favor denuncie o bug.","tw.unshared.cache":"Se o projeto foi compartilhado recentemente, esta mensagem pode aparecer indevidamente por alguns minutos.","tw.unshared2.1":"Projetos descompartilhados não são mais acessíveis.","tw.usernameModal.help":"Esse valor será guardado no armazenamento do seu navegador. Projetos que contenham variáveis na nuvem podem querer registrá-lo.","tw.usernameModal.help2":"Valores que não correspondem a uma conta válida no Scratch normalmente serão rejeitados pelo servidor de variáveis na nuvem. Recomendamos que você deixe este valor como está ou mude-o para o seu nome de usuário do Scratch.","tw.usernameModal.mustChange":"Desculpe, o servidor de variáveis na nuvem acha que o seu nome de usuário possa ser inapropriado. Por favor, mude para outra coisa ou {resetIt}.","tw.usernameModal.mustChange.resetIt":"resete-o (recomendado)","tw.usernameModal.reset":"Redefinir","tw.usernameModal.title":"Mudar nome de usuário","tw.viewFeaturedProjects":"Clique para ver projetos em destaque.","tw.viewOnScratch":"Ver projeto no Scratch"},"ro":{"tw.alerts.creatingRestorePoint":"Se creează punctul de recuperare…","tw.alerts.savedToDisk":"Salvat pe calculatorul tău.","tw.blocks.addons":"Extensii","tw.blocks.buttonIsDown":"butonul mouse-ului [MOUSE_BUTTON] apăsat?","tw.blocks.lastKeyPressed":"ultima tastă apăsată","tw.blocks.mouseButton.middle":"(1) mijloc","tw.blocks.mouseButton.primary":"(0) principal","tw.blocks.mouseButton.secondary":"(2) secundar","tw.blocks.openDocs":"Deschide Documentarea","tw.changeUsername.cannotChangeWhileRunning":"Numele de utilizator nu poate fi schimbat cât timp proiectul rulează.","tw.code":"Cod sursă","tw.featuredProjectsStudio":"Vezi atilierul pe Scratch.","tw.feedback":"Sugestii și Erori","tw.feedbackButton":"Spune-ți Părerea despre TurboWarp","tw.footer.credits":"Credite","tw.footer.disclaimer":"TurboWarp nu este conectat cu Scratch, Echipa Scratch, sau Fundația Scratch.","tw.footer.embed":"Încorporare","tw.footer.parameters":"Parametri URL","tw.fps":"{framerate} Cadre Pe Secundă","tw.gui.defaultProjectTitle":"Proiect","tw.guiDefaultTitle":"Rulează proiecte Scratch mai rapid","tw.home.credit":"Observații și Credite","tw.home.description":"TurboWarp este un modul pentru Scratch care care compilează (transpune) proiectele în JavaScript pentru a le rula foarte rapid. Încearcă-l prin scrierea ID-ului sau URL-ului unui proiect în caseta de mai sus sau alege unul dintre proiectele recomandate de mai jos.","tw.home.instructions":"Instrucțiuni","tw.invalidParameters.clones":"parametrul URL „clone” este invalid","tw.invalidParameters.fps":"parametrul URL „fps” este invalid","tw.loader.generic":"Se încarcă proiectul …","tw.menuBar.60off":"Oprește modul de 60 Cadre Pe Secundă (FPS)","tw.menuBar.60on":"Pornește modul de 60 Cadre Pe Secundă (FPS)","tw.menuBar.addons":"Extensii","tw.menuBar.advanced":"Avansat","tw.menuBar.changeUsername":"Schimbă Utilizatorul","tw.menuBar.cloudOff":"Oprește Variabilele Cloud","tw.menuBar.cloudOn":"Pornește Variabilele Cloud","tw.menuBar.cloudUnavailable":"Variabilele Cloud nu sunt valabile","tw.menuBar.cloudUnavailableAlert":"Nu se pot folosi variabilele cloud, cel mai probabil deoarece ai deschis editorul.","tw.menuBar.newFramerate":"Cadre Pe Secundă:","tw.menuBar.reportError1":"Unele script-uri nu au putut fi compilate (transpuse)","tw.menuBar.reportError2":"Aceasta este o eroare. Vă rugăm s-o raportați.","tw.menuBar.saveAs":"Salvează ca {file}","tw.menuBar.seeInside":"Vezi în interior","tw.privacy":"Politica de Confidențialitate","tw.settingsModal.disableCompiler":"Oprește Compilerul","tw.studioview.authorAttribution":"de {author}","tw.studioview.error":"A apărut o eroare la încărcarea paginii urmatoare cu proiecte.","tw.studioview.hoverText":"{title} de {author}","tw.twExtension.name":"Blocuri TurboWarp","tw.usernameModal.new":"Nume de utilizator nou:","tw.usernameModal.reset":"Resetează","tw.usernameModal.title":"Schimbă Utilizatorul","tw.viewFeaturedProjects":"Vezi proiectele recomandate (dați click)."},"ru":{"tw.alerts.creatingRestorePoint":"Создание точки восстановления...","tw.alerts.lostPeripheralConnection":"Потеря соединения с {extensionName}.","tw.alerts.savedToDisk":"Сохранено на ваш компьютер.","tw.backpack.rename":"Новое имя:","tw.blocks.addons":"Аддоны","tw.blocks.buttonIsDown":"[MOUSE_BUTTON] кнопка мыши нажата?","tw.blocks.lastKeyPressed":"последняя нажатая клавиша","tw.blocks.mouseButton.middle":"(1) средняя","tw.blocks.mouseButton.primary":"(0) основная","tw.blocks.mouseButton.secondary":"(2) дополнительная","tw.blocks.openDocs":"Открыть документацию","tw.browserModal.desc":"Убедитесь, что Вы используете последнюю версию Google Chrome, Mozilla Firefox, Microsoft Edge или Apple Safari.","tw.cantUseCloud":"Хотя вы можете создавать облачные переменные, они не будут работать до тех пор, пока проект не будет загружен в Scratch или преобразован с помощью такого инструмента, как {packager}.","tw.changeUsername.cannotChangeWhileRunning":"Имя пользователя не может быть изменено, пока проект запущен.","tw.code":"Исходный код","tw.confirmIncompatibleExtension":"Это дополнение не совместимо со Scratch. Проекты, которые используют это дополнение, не могут быть опубликованы на сайт Scratch. Вы уверены, что хотите включить это дополнение?","tw.customExtension.name":"Пользовательское дополнение","tw.customExtensionModal.file":"Файл","tw.featuredProjectsStudio":"Посмотреть студию на Scratch.","tw.feedback":"Обратная связь и ошибки","tw.feedbackButton":"Обратная связь","tw.footer.credits":"Благодарности","tw.footer.disclaimer":"TurboWarp не связан с Scratch, Командой Scratch или Фондом Scratch .","tw.footer.donate":"Пожертвование","tw.footer.embed":"Встраивание","tw.footer.parameters":"Параметры URL","tw.gui.crashMessage.description":"Нам очень жаль, но похоже, что страница дала сбой. Пожалуйста, обновите страницу, чтобы повторить попытку.","tw.gui.defaultProjectTitle":"Проект","tw.guiDefaultTitle":"Запускайте проекты Scratch быстрее","tw.home.credit":"Примечания и благодарности","tw.home.description":"TurboWarp - это мод Scratch, который компилирует проекты в JavaScript, чтобы они работали быстрее. Попробуйте ввести ссылку на проект выше или выберете из избранных проектов ниже.","tw.home.instructions":"Инструкции","tw.input.tooltip":"Скопируйте ссылку на проект Scratch и вставьте её сюда!","tw.interpolationEnabled":"Интерполяция","tw.invalidParameters.clones":"Параметр \\"clone\\" в URL некорректен","tw.invalidParameters.fps":"Параметр \\"fps\\" в URL некорректен","tw.loadError":"Не удалось загрузить проект: {error}","tw.loader.assets.known":"Скачивание ресурсов ({complete} / {total}) ...","tw.loader.assets.unknown":"Скачивание ресурсов …","tw.loader.data":"Загрузка данных проекта ...","tw.loader.generic":"Загрузка проекта ...","tw.menuBar.60off":"Выключить режим 60 FPS","tw.menuBar.60on":"Включить режим 60 FPS","tw.menuBar.addons":"Аддоны","tw.menuBar.advanced":"Дополнительно","tw.menuBar.changeUsername":"Изменить имя пользователя","tw.menuBar.cloudOff":"Отключить облачные переменные","tw.menuBar.cloudOn":"Включить облачные переменные","tw.menuBar.cloudUnavailable":"Облачные переменные недоступны","tw.menuBar.cloudUnavailableAlert":"Невозможно использовать облачные переменные, скорее всего, потому, что вы открыли редактор.","tw.menuBar.moreSettings":"Расширенные настройки","tw.menuBar.newFramerate":"Новая частота кадров:","tw.menuBar.package":"Упаковать проект","tw.menuBar.reportError1":"Некоторые скрипты не могут быть скомпилированы.","tw.menuBar.reportError2":"Это ошибка. Пожалуйста, сообщите о ней.","tw.menuBar.saveAs":"Сохранить как {file}","tw.menuBar.seeInside":"Войти внутрь проекта","tw.mono":"Моно","tw.oldDownload":"Сохранить в отдельный файл...","tw.opcode.2000":"дней с 2000 года","tw.opcode.mousedown":"мышка нажата?","tw.opcode.mousex":"мышка по x","tw.opcode.mousey":"мышка по y","tw.openAdvanced":"Открыть дополнительные настройки","tw.paint.alpha":"Непрозрачность","tw.privacy":"Политика конфиденциальности","tw.saveAs":"Сохранить как...","tw.saveTo":"Сохранить в {file}","tw.scratchUnsafeCloud":"Если вы сделаете эту облачную переменную, проект превысит лимит Scratch в {number} переменных, и некоторые переменные не будут работать, если вы загрузите проект в Scratch.","tw.settingsModal.customStageSize":"Пользовательский размер сцены:","tw.settingsModal.customStageSizeHelp":"Изменяет размер сцены из 480х360 на что-то другое. Попробуйте использовать 640х360, чтобы сделать сцену широкоэкранной. Лишь некоторые проекты будут работать правильно с этой настройкой.","tw.settingsModal.dangerZone":"Опасная зона","tw.settingsModal.disableCompiler":"Отключить компилятор","tw.settingsModal.disableCompilerHelp":"Отключает компилятор TurboWarp. Рекомендуется включать эту настройку, когда вы редактируете проект, чтобы скрипты обновлялись моментально. В других случаях, не включайте эту настройку.","tw.settingsModal.featured":"Избранное","tw.settingsModal.fps":"60 FPS (Пользовательские FPS)","tw.settingsModal.fpsHelp":"Выполняет скрипты 60 раз в секунду вместо 30. Большинство проектов не будут работать должным образом, если этот параметр включен. Если это так, вам следует попробовать интерполяцию с отключенным режимом 60 FPS. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Нажмите, чтобы использовать частоту кадров другую, чем 30 или 60","tw.settingsModal.help":"Нажмите для справки","tw.settingsModal.highQualityPen":"Перо в высоком качестве","tw.settingsModal.highQualityPenHelp":"Позволяет выполнять рендеринг проектов пера с более высоким разрешением и отключает некоторое округление координат в редакторе. Этот параметр полезен не для всех проектов, и это может повлиять на производительность.","tw.settingsModal.infiniteClones":"Бесконечные клоны","tw.settingsModal.infiniteClonesHelp":"Отключает ограничение Scratch в 300 клонов.","tw.settingsModal.interpolation":"Интерполяция","tw.settingsModal.interpolationHelp":"Делает, чтобы проекты производились более плавно, интерполируя движение спрайтов. Не используйте интерполяцию в 3D проектах, проектах с трассировкой лучей, проектах, выполненных пером и медленных проектах, интерполяция сделает их медленнее и не сделает их более плавными.","tw.settingsModal.largeStageWarning":"Использовать настолько большой пользовательский размер сцены не рекомендуется! Лучше, используйте сцену меньшего размера, но с таким же соотношением сторон изображения и дайте полноэкранному режиму увеличить сцену так, чтобы она могла подойти по размерам к дисплею пользователя.","tw.settingsModal.removeFencing":"Убрать рамку","tw.settingsModal.removeFencingHelp":"Позволяет спрайтам выходить за рамки сцены, становится настолько большими или маленькими, насколько они захотят, и делает, чтобы блоки касания работали за рамками сцены.","tw.settingsModal.removeLimits":"Убрать ограничения","tw.settingsModal.removeMiscLimits":"Удалить Разные Ограничения","tw.settingsModal.removeMiscLimitsHelp":"Убирает лимиты звуков и размера пера.","tw.settingsModal.storeProjectOptions":"Сохранить настройки проекта","tw.settingsModal.storeProjectOptionsHelp":"Сохранение выбранных настроек в проекте, чтобы они автоматически применялись при загрузке этого проекта TurboWarp\'ом. Warp-таймер и отключение компилятора не будут сохранены.","tw.settingsModal.title":"Расширенные настройки","tw.settingsModal.warpTimer":"Warp таймер","tw.settingsModal.warpTimerHelp":"Проверяет, какие скрипты застряли в долгом или бесконечном цикле и понижает частоту кадров, вместо того, чтобы он застыл пока цикл не завершится. Исправляет большую часть критических ошибок, но это негативно отражается на скорости проекта, поэтому он включается по умолчанию только в редакторе.","tw.spriteSelectorItem.rename":"переименовать","tw.stereo":"Стерео","tw.stereoAlert":"Редактирование этого стерео звука необратимо преобразует его в моно звук.","tw.studioview.authorAttribution":"от {author}","tw.studioview.error":"Произошла ошибка во время загрузки следующей страницы проектов.","tw.studioview.hoverText":"{title} от {author}","tw.tooLarge":"Этот звук может быть слишком большим для загрузки в Scratch.","tw.twExtension.name":"Блоки TurboWarp","tw.unshared.2":"Для получения большей информации посетите этот сайт: {link}","tw.unshared.cache":"Если проект был опубликован недавно, то это сообщение может ложно отображаться в течение нескольких минут.","tw.usernameModal.help":"Это значение будет сохранено в данных вашего браузера. Оно будет использоваться, когда вы используете проекты, в которых есть облачные переменные.","tw.usernameModal.help2":"Значения, которые не соответствуют настоящим именам пользователя будут заблокированными сервером облачных переменных. Мы рекомендуем оставлять это значение, которым оно есть или изменять его на своё имя пользователя в Scratch.","tw.usernameModal.mustChange":"Извините, сервер облачных переменных считает, что ваше имя пользователя может быть небезопасным. Измените имя пользователя на другое или {resetIt}.","tw.usernameModal.mustChange.resetIt":"сбросьте его (рекомендуется)","tw.usernameModal.reset":"Сбросить","tw.usernameModal.title":"Изменить имя пользователя","tw.viewFeaturedProjects":"Нажмите, чтобы посмотреть избранные проекты.","tw.viewOnScratch":"Посмотреть проект на Scratch"},"sl":{"tw.alerts.creatingRestorePoint":"Ustvarjanje obnovitvene različice...","tw.alerts.savedToDisk":"Shranjeno na računalnik.","tw.backpack.rename":"Novo ime:","tw.blocks.addons":"Dodatki","tw.blocks.buttonIsDown":"[MOUSE_BUTTON] miškina tipka pritisnjena?","tw.blocks.lastKeyPressed":"zadnja pritisnjena tipka","tw.blocks.mouseButton.middle":"(1) srenja","tw.blocks.mouseButton.primary":"(0) glavna","tw.blocks.mouseButton.secondary":"(2) sekundarna","tw.blocks.openDocs":"Odpri dokumentacijo","tw.browserModal.desc":"Prepričajte se, da uporabljate sodobno različico brskalnika Google Chrome, Mozilla Firefox, Microsoft Edge ali Apple Safari.","tw.changeUsername.cannotChangeWhileRunning":"Uporabniškega imena ni mogoče spremeniti med izvajanjem projekta.","tw.code":"Izvirna koda","tw.confirmIncompatibleExtension":"Ta razširitev ni združljiva s Scratchem. Projektov, narejenih z njo, ni mogoče naložiti na Scratchevo spletno stran. Ste prepričani, da jo želite vključiti?","tw.customExtension.name":"Razširitev po meri","tw.customExtensionModal.file":"Datoteka","tw.featuredProjectsStudio":"Ogled studia na Scratchu.","tw.feedback":"Povratne informacije in napake","tw.feedbackButton":"Povratne informacije za TurboWarp","tw.footer.credits":"Zasluge","tw.footer.disclaimer":"TurboWarp ni povezan s Scratchem, skupino Scratch ali fundacijo Scratch.","tw.footer.donate":"Prispevaj","tw.footer.embed":"Vgraditev","tw.footer.parameters":"URL parametri","tw.gui.crashMessage.description":"Žal je videti, da je na tej strani prišlo do napake. Prosimo, da znova naložite stran, če želite poskusiti znova.","tw.gui.defaultProjectTitle":"Projekt","tw.guiDefaultTitle":"Izvedite Scratcheve projekte hitreje","tw.home.credit":"Opombe in zasluge","tw.home.description":"TurboWarp je spremenjena različica Scratcha, ki prevede projekte v JavaScript, da delujejo zelo hitro. Preizkusite ga tako, da zgoraj vnesete ID ali URL projekta ali pa spodaj izberete enega od izpostavljenih projektov.","tw.home.instructions":"Navodila","tw.input.tooltip":"Prilepite povezavo na Scratchev projekt sem!","tw.interpolationEnabled":"Interpolacija","tw.invalidParameters.clones":"Parameter \\"clone\\" v URL-ju ni veljaven","tw.invalidParameters.fps":"Parameter \\"fps\\" v URL-ju ni veljaven","tw.loadError":"Nalaganje projekta ni uspelo:{error}","tw.loader.assets.known":"Nalaganje projekta ({complete}/{total}) ...","tw.loader.assets.unknown":"Nalaganje projekta ...","tw.loader.data":"Nalaganje podatkov projekta ...","tw.loader.generic":"Nalaganje projekta ...","tw.menuBar.60off":"Izključi 60 FPS način","tw.menuBar.60on":"Vključi 60 FPS način","tw.menuBar.addons":"Dodatki","tw.menuBar.advanced":"Napredno","tw.menuBar.changeUsername":"Spremeni uporabniško ime","tw.menuBar.cloudOff":"Onemogoči spremenljivke v oblaku","tw.menuBar.cloudOn":"Omogoči spremenljivke v oblaku","tw.menuBar.cloudUnavailable":"Spremenljivke v oblaku niso na voljo","tw.menuBar.cloudUnavailableAlert":"Ni mogoče uporabiti spremenljivk v oblaku, verjetno zato, ker ste odprli urejevalnik","tw.menuBar.moreSettings":"Napredne nastavitve","tw.menuBar.newFramerate":"Nov FPS:","tw.menuBar.reportError1":"Nekaterih skript ni bilo mogoče prevesti.","tw.menuBar.reportError2":"To je napaka. Prosimo, da jo prijavite.","tw.menuBar.saveAs":"Shrani kot {file}","tw.menuBar.seeInside":"Poglej v","tw.oldDownload":"Shrani v ločeno datoteko...","tw.openAdvanced":"Odpri napredne nastavitve","tw.paint.alpha":"Neprosojnost","tw.privacy":"Politika zasebnosti","tw.saveAs":"Shrani kot...","tw.saveTo":"Shrani v {file}","tw.scratchUnsafeCloud":"Če naredite to spremenljivko v oblaku, bo projekt prekoračil Scratchevo omejitev {number} spremenljivk. Nekatere spremenljivke ne bodo delovale, če projekt naložite v Scratch.","tw.settingsModal.customStageSize":"Velikost odra po meri:","tw.settingsModal.customStageSizeHelp":"Spremeni velikost Scratchevega odra iz običajne 480x360. Poskusite 640x360 za širokozaslonski prikaz. Samo zelo redki projekti se pravilno prilagodijo tej nastavitvi.","tw.settingsModal.dangerZone":"Nevarno območje","tw.settingsModal.disableCompiler":"Onemogoči prevajalnik","tw.settingsModal.disableCompilerHelp":"Izključi TurboWarpov prevajalnik. Morda boste to potrebovali med urejanjem projektov, da se skripte takoj posodobijo. Sicer je bolje, da te možnosti ne vključite.","tw.settingsModal.featured":"Izpostavljeno","tw.settingsModal.fps":"60 FPS (FPS po meri)","tw.settingsModal.fpsHelp":"Izvede skripte 60-krat na sekundo namesto 30-krat. Večina projektov ne deluje pravilno, če je ta nastavitev omogočena. V tem primeru preizkusite interpolacijo namesto 60 FPS načina. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Kliknite, da uporabite hitrost, ki ni 30 ali 60 FPS","tw.settingsModal.help":"Kliknite za pomoč","tw.settingsModal.highQualityPen":"Visoka ločljivost svinčnika","tw.settingsModal.highQualityPenHelp":"Poveča ločljivost projektov, ki uporabljajo razširitev Svinčnik, in odstrani zaokroževanje koordinat v urejevalniku. Ta nastavitev ni primerna za vse projekte in lahko vpliva na hitrost delovanja.","tw.settingsModal.infiniteClones":"Neskončno klonov","tw.settingsModal.infiniteClonesHelp":"Odstrani Scratchevo omejitev 300 klonov.","tw.settingsModal.interpolation":"Interpolacija","tw.settingsModal.interpolationHelp":"S pomočjo interpolacije naredi gibanje figur bolj tekoče. Interpolacije ne uporabljajte za 3D projekte, projekte, ki uporabljajo svinčnik in počasne projekte. Zaradi interpolacije delovali počasneje, ne da bi izgledali bolje.","tw.settingsModal.largeStageWarning":"Uporaba tako velikega odra ni priporočena! Namesto tega nastavite manjšo velikost z istim razmerjem stranic, saj jo bo celozaslonski način povečal, da jo prilagodi uporabnikovemu zaslonu.","tw.settingsModal.removeFencing":"Odstrani omejitve premikanja figur","tw.settingsModal.removeFencingHelp":"Omogoči figuram, da se premaknejo ven iz odra in postanejo poljubno velike ali majhne ter omogoči uporabo blokov za zaznavanje dotikanja zunaj odra.","tw.settingsModal.removeLimits":"Odstrani omejitve","tw.settingsModal.removeMiscLimits":"Odstrani razne omejitve","tw.settingsModal.removeMiscLimitsHelp":"Odstrani omejitve zvočnih učinkov in velikosti svinčnika.","tw.settingsModal.storeProjectOptions":"Shrani nastavitve v projektu","tw.settingsModal.storeProjectOptionsHelp":"Shrani izbrane nastavitve v projektu. TurboWarp jih bo uporabil, ko naslednjič naloži ta projekt. Warp timer in onemogočen prevajalnik ne bosta shranjena.","tw.settingsModal.title":"Napredne nastavitve","tw.settingsModal.warpTimerHelp":"Preveri, če pride do dolge ali neskončne zanke, in v tem primeru zmanjša hitrost osveževanja zaslona, namesto da bi skripto zamrznil. To pogosto prepreči sesutje, vendar vpliva na hitrost projekta, zato običajno ni vključeno zunaj urejevalnika.","tw.spriteSelectorItem.rename":"preimenuj","tw.studioview.authorAttribution":"{author}","tw.studioview.error":"Pri nalaganju naslednje strani projektov je prišlo do napake.","tw.studioview.hoverText":"{title} avtorja {author}","tw.twExtension.name":"TurboWarpovi bloki","tw.unshared.2":"Za več informacij obiščite: {link}","tw.usernameModal.help":"Ta vrednost bo shranjena v vašem brskalniku. Morda bo zapisana med uporabo projektov, ki vsebujejo spremenljivke v oblaku.","tw.usernameModal.help2":"Vrednosti, ki se ne ujemajo z obstoječim računom na Scratchu, bo strežnik za spremenljivke v oblaku običajno zavrnil. Priporočamo, da te nastavitve ne spreminjate ali pa uporabite svoje uporabniško ime na Scratchu.","tw.usernameModal.mustChange":"Strežnik za spremenljivke v oblaku misli, da vaše uporabniško ime morda ni varno. Prosimo, daga spremenite ali {resetIt}.","tw.usernameModal.mustChange.resetIt":"ga ponastavite (priporočeno)","tw.usernameModal.reset":"Ponastavi","tw.usernameModal.title":"Spremeni uporabniško ime","tw.viewFeaturedProjects":"Kliknite za ogled izpostavljenih projektov.","tw.viewOnScratch":"Ogled projekta na Scratchu"},"sr":{"tw.alerts.creatingRestorePoint":"Прављење тачке враћања...","tw.alerts.savedToDisk":"Сачувано на вашем компјутеру.","tw.backpack.rename":"Ново име:","tw.blocks.addons":"Додаци","tw.blocks.buttonIsDown":"[MOUSE_BUTTON] миш притиснут?","tw.blocks.lastKeyPressed":"последњи притиснут тастер","tw.blocks.mouseButton.middle":"(1) средњи","tw.blocks.mouseButton.primary":"(0) примарни","tw.blocks.mouseButton.secondary":"(2) секундарни","tw.blocks.openDocs":"Отвори документацију","tw.browserModal.desc":"Проверите да ли користите најновију верзију Google Chrome, Mozilla Firefox, Microsoft Edge или Apple Safari прегледача.","tw.changeUsername.cannotChangeWhileRunning":"Корисничко име се не може мењати док пројекат ради.","tw.code":"Изворни код","tw.confirmIncompatibleExtension":"Ово проширење није компатибилно са Scratch-ом. Пројекти са њим се не могу отпремити на Scratch сајт. Да ли сте сигурни да желите да га укључите?","tw.customExtension.name":"Прилагођена проширења","tw.featuredProjectsStudio":"Погледај студио на Scratch-у.","tw.feedback":"Повратне информације и грешке","tw.feedbackButton":"Повратне информације","tw.footer.credits":"Заслуге","tw.footer.disclaimer":"TurboWarp није повезан са Scratch-ом, Scratch тимом, или Scratch фондацијом.","tw.footer.embed":"Уграђивање","tw.footer.parameters":"URL параметри","tw.gui.defaultProjectTitle":"Пројекат","tw.guiDefaultTitle":"Убрзајте Scratch пројекте","tw.home.credit":"Белешке и заслуге","tw.home.description":"TurboWarp је Scratch мод који преводи пројекте у JavaScript и тако их убрзава. Испробајте га уносом пројектовог ID-а или URL-а у поље изнад или одабиром једног од истакнутог пројекта испод.","tw.home.instructions":"Упутства","tw.input.tooltip":"Прекопирај линк Scratch пројекта овде!","tw.interpolationEnabled":"Интерполација","tw.invalidParameters.clones":"\\"clone\\" URL параметар није валидан","tw.invalidParameters.fps":"\\"fps\\" URL параметар није валидан","tw.loadError":"Пројекат се није могао учитати: {error}","tw.loader.assets.known":"Преузимање ресурса ({complete}/{total}) ...","tw.loader.assets.unknown":"Преузимање ресурса ...","tw.loader.data":"Преузимање података пројекта ...","tw.loader.generic":"Учитавање пројекта ...","tw.menuBar.60off":"Искључи опцију 60 FPS","tw.menuBar.60on":"Укључи опцију 60 FPS","tw.menuBar.addons":"Додаци","tw.menuBar.advanced":"Напредно","tw.menuBar.changeUsername":"Промени корисничко име","tw.menuBar.cloudOff":"Онемогући променљиве у облаку","tw.menuBar.cloudOn":"Омогући променљиве у облаку","tw.menuBar.cloudUnavailable":"Променљиве у облаку нису доступне","tw.menuBar.cloudUnavailableAlert":"Променљиве у облаку се не могу користити, вероватно зато што сте у едитору.","tw.menuBar.moreSettings":"Напредна подешавања","tw.menuBar.newFramerate":"Нови FPS:","tw.menuBar.reportError1":"Део кода се није могао превести.","tw.menuBar.reportError2":"Ово је грешка. Молимо Вас да је пријавите.","tw.menuBar.saveAs":"Сачувај као {file}","tw.menuBar.seeInside":"Погледај изнутра","tw.oldDownload":"Сачувај у посебну датотеку...","tw.paint.alpha":"Непровидност","tw.privacy":"Политика приватности","tw.saveAs":"Сачувај као...","tw.saveTo":"Сачувај у {file}","tw.settingsModal.customStageSize":"Прилагођена величина позорнице:","tw.settingsModal.customStageSizeHelp":"Мења величину Scratch-ове позорнице са 480x360 на нешто друго. Пробајте 640x360 да би позорница постала широки екран. Мало пројеката ће ово подржати.","tw.settingsModal.dangerZone":"Опасно","tw.settingsModal.disableCompiler":"Онемогући преводилац кода","tw.settingsModal.disableCompilerHelp":"Онемогућава TurboWarp-ов преводилац кода. Ово можете да укључите док програмирате тако да се код не ажурира одмах. У другим случајевима, ово подешавање не треба укључивати.","tw.settingsModal.featured":"Истакнуто","tw.settingsModal.fps":"60 FPS (Прилагођен FPS)","tw.settingsModal.fpsHelp":"Покреће код 60 пута у секунди уместо 30. Многи пројекти неће исправно радити са овим подешавањем. Уместо тога онда искористите Интерполацију уместо опције 60 FPS. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Кликните за FPS који није 30 или 60","tw.settingsModal.help":"Кликни за помоћ","tw.settingsModal.highQualityPen":"Оловка високог квалитета","tw.settingsModal.highQualityPenHelp":"Црта пројекте са оловком у већој резолуцији и онемогућава заокругљивање координата у едитору. Ово подешавање није најбоље за неке пројекте и може утицати на перформансе.","tw.settingsModal.infiniteClones":"Бесконачно умножака","tw.settingsModal.infiniteClonesHelp":"Онемогућава Scratch-ову границу од 300 умножака","tw.settingsModal.interpolation":"Интерполација","tw.settingsModal.interpolationHelp":"Чини да пројекти изгледају брже помоћу интерполације кретања ликова. Интерполација се не треба користити за 3D пројекте, пројекте са оловком и пројекте који лагују јер ће радити спорије, а да не изгледају брже.","tw.settingsModal.largeStageWarning":"Коришћење оволике величине позорнице није препоручљиво! Уместо тога, користите мање величине са истим односом ширине и висине, а онда укључите приказ преко целог екрана да све повећа тако да се поклапа са корисниковим приказом.","tw.settingsModal.removeFencing":"Уклони границе","tw.settingsModal.removeFencingHelp":"Дозвољава ликовима да се крећу ван граница екрана, да им величина не буде ограничена, и чини да \\"додирује ли\\" блокови раде ван екрана.","tw.settingsModal.removeLimits":"Уклони граничне вредности","tw.settingsModal.removeMiscLimits":"Уклони различите максималне вредности","tw.settingsModal.removeMiscLimitsHelp":"Уклања граничне вредности за звучне ефекте и величину оловке.","tw.settingsModal.storeProjectOptions":"Складишти подешавања у пројекту","tw.settingsModal.storeProjectOptionsHelp":"Складишти одабрана подешавања у пројекту тако да се аутоматски примене када TurboWarp учита пројекат. Warp тајмер и онемогућавање преводиоца кода се неће сачувати.","tw.settingsModal.title":"Напредна подешавања","tw.settingsModal.warpTimer":"Warp тајмер","tw.settingsModal.warpTimerHelp":"Чини да код проверава да ли је заглављен у дугачкој или бескрајној петљи и смањује квалитет уместо заглављивања док се петља не заврши. Поправља већину кварова, али има значајан утицај на перформансе, па је подразумевано укључен само у едитору.","tw.spriteSelectorItem.rename":"преименуј","tw.studioview.authorAttribution":"од {author}","tw.studioview.error":"Десила се грешка у учитавању следеће странице пројеката.","tw.studioview.hoverText":"{title} од {author}","tw.twExtension.name":"TurboWarp блокови","tw.usernameModal.help":"Ова вредност ће бити сачувана у меморији вашег прегледача. Може се сама учитати када користите пројекте са променљивама у облику.","tw.usernameModal.help2":"Вредности које не одговарају валидном Scratch налогу ће бити одбијене од стране сервера променљивих у облаку. Препоручујемо да га оставите како јесте или га промените у своје Scratch корисничко име.","tw.usernameModal.mustChange":"Извињавамо се, али сервер променљивих у облаку мисли да је Ваше корисничко име можда небезбедно. Молимо Вас да га промените или {resetIt}.","tw.usernameModal.mustChange.resetIt":"ресејтујте га (препоручено)","tw.usernameModal.reset":"Ресетуј","tw.usernameModal.title":"Промени корисничко име","tw.viewFeaturedProjects":"Кликни да видиш истакнуте пројекте","tw.viewOnScratch":"Погледај пројекат на Scratch-у"},"sv":{"tw.alerts.creatingRestorePoint":"Skapar återställningspunkt...","tw.alerts.lostPeripheralConnection":"Förlorade anslutningen till {extensionName}.","tw.alerts.savedToDisk":"Sparad på datorn.","tw.backpack.rename":"Nytt namn: ","tw.blocks.addons":"Tillägg","tw.blocks.buttonIsDown":"[MOUSE_BUTTON]Musknappen nere?","tw.blocks.lastKeyPressed":"Sista tangenten nertryckt ","tw.blocks.mouseButton.middle":"(1) mitten","tw.blocks.mouseButton.primary":"(0) primär","tw.blocks.mouseButton.secondary":"(2) andra","tw.blocks.openDocs":"Öppna dokumentation","tw.browserModal.desc":"Titta om du använder den nyaste versionen av Google Chrome, Mozilla Firefox, Microsoft Edge eller Appel Safari.","tw.cantUseCloud":"Även om du kan skapa molnvariabler så kommer de inte att funka om du inte kommer att ladda upp projektet till Scratch eller att använda ett verktyg som {packager}.","tw.changeUsername.cannotChangeWhileRunning":"Användarnamn kan inte ändras när projektet är igång.","tw.clipboard.danger":"Om ditt urklipp har saker som lösenord, kan projektet dela de med andra servrar.","tw.clipboard.permission":"Tillgång till urklipp kan kanske inte fungera i alla webbläsare. Om tillåtet, senare läsningar från urklippen kommer att vara automatiskt tillåtna.","tw.clipboard.title":"Projektet vill läsa data från ditt urklipp.","tw.code":"Källkod","tw.confirmIncompatibleExtension":"Detta tillägg är inkompatibelt med Scratch. Projekt skapade med det kan inte bli uppladdade till Scratch-webbplatsen. Är du säker att aktivera det?","tw.customExtension.description":"Ladda in anpassade tillägg från URL:s, filer, eller JavaScript källkod.","tw.customExtension.name":"Anpassatt tillägg","tw.customExtensionModal.file":"Fil","tw.customExtensionModal.load":"Ladda in","tw.customExtensionModal.promptFile":"Välj tilläggets JavaScript fil:","tw.customExtensionModal.promptText":"Klistra in tilläggets JavaScript källkod:","tw.customExtensionModal.promptURL":"Ange tilläggets URL:","tw.customExtensionModal.title":"Ladda in ett anpassat tillägg","tw.customExtensionModal.trusted":"Tillägget kan vara laddat in utan sandboxen eftersom den är från en betrodd källa.","tw.customExtensionModal.unsandboxed":"Kör tillägget utan sandlådan","tw.customExtensionModal.unsandboxedWarning1":"Att ladda in anpassade utan sandboxen är farligt och ska inte vara aktiverat om du inte vet vad du gör.","tw.customExtensionModal.unsandboxedWarning2":"Osandlådade tillägg kan förstöra ditt projekt, ta bort dina inställningar, nätfiska för lösenord, och andra dåliga saker. Utvecklarna för {APP_NAME} är inte ansvariga för resulterade problem.","tw.customExtensionModal.untrusted":"Tillägg från opålitliga URL:s kommer alltid att vara laddade in med sandboxen för säkerhet.","tw.documentation":"Dokumentation","tw.extensionGallery.name":"Turbowarp tilläggsgalleri","tw.featuredProjectsStudio":"Se studion på Scratch.","tw.feedback":"Respons & buggar","tw.fetch.title":"Projektet vill koppa sig till webbsidan: ","tw.fileInput.none":"Ingen fil vald.","tw.fileInput.selected":"Vald: {name}","tw.fonts.add":"Lägg till","tw.fonts.custom.name":"Ge teckensnittet ett namn:","tw.fonts.title":"Teckensnitt","tw.footer.credits":"Krediter","tw.footer.disclaimer":"TurboWarp är inte ansluten med Scratch, Scratch teamet eller Scratchstiftelsen.","tw.footer.documentation":"Dokumentation","tw.footer.donate":"Donera","tw.footer.embed":"Inbäddning","tw.footer.parameters":"URL Parametrar","tw.gui.crashMessage.description":"Vi är ledsna men det ser ut som sidan har krashat. Ladda om sidan för att försöka igen.","tw.gui.defaultProjectTitle":"Projekt","tw.guiDefaultTitle":"Kör scratchprojekt snabbare","tw.home.credit":"Anteckningar och kerditer","tw.home.description":"TurboWarp är en modifikation som kompilerar project till JavaScript så att de körs väldigt fort. Testa med att skriva in projekt ID eller URL över eller att välja utvalda projekt nedan.","tw.home.instructions":"Instruktioner","tw.input.tooltip":"Kopiera och klistra in en Scratch länk här!","tw.invalidParameters.clones":"\\"klon\\" URL är ogiltig","tw.invalidParameters.fps":"\\"fps\\" URL parameter är ogiltig","tw.loadError":"Kunde inte ladda in projekt: {error}","tw.loadExtension.embedded":"Projektet vill att ladda in ett anpassat tillägg med koden:","tw.loadExtension.sandboxed":"Medan koden kommer att bli sandboxad, kommer det att ha tillgång till information om din enhet som till exempel din IP adress och din position. Kontrollera att du litar på författaren av detta tillägg innan du fortsätter.","tw.loadExtension.unsandboxed":"Kör tillägget utan sanboxen","tw.loadExtension.unsandboxedWarning":"Att ladda tillägg utan sandboxen är farligt. Det kommer at kunna förstöra ditt projekt, ta bort dina inställningar, nätfiska för lösenord, och andra dåliga saker. Utvecklarna för {APP_NAME} är inte ansvariga för resulterade problem.","tw.loadExtension.url":"Projektet vill ladda in ett anpassad tillägg från denna URL:","tw.loader.assets.known":"Hämtar tillgångar ({complete}/{total})...","tw.loader.assets.unknown":"Hämtar tillgångar...","tw.loader.data":"Hämtar projektdata...","tw.loader.generic":"Laddar projekt...","tw.menuBar.60off":"Avaktivera 60 FPS","tw.menuBar.60on":"Aktivera 60 FPS","tw.menuBar.addons":"Tillägg","tw.menuBar.advanced":"Avancerat","tw.menuBar.changeUsername":"Ändra användarnamn","tw.menuBar.cloudOff":"Avaktivera molnvariabler","tw.menuBar.cloudOn":"Aktivera molnvariabler","tw.menuBar.cloudUnavailable":"Molnvariabler är inte tillgängliga","tw.menuBar.cloudUnavailableAlert":"Kan inte använda molnvariabler, mest troligt att du öppnade editorn.","tw.menuBar.compileError":"{sprite}:{error}","tw.menuBar.moreSettings":"Avancerade inställningar","tw.menuBar.newFramerate":"Ny upplösningshastighet:","tw.menuBar.package":"Packa projektet","tw.menuBar.reportError1":"Några skript kunde inte kompileras","tw.menuBar.reportError2":"Detta är en bugg. Snälla rapportera buggen. ","tw.menuBar.restorePoints":"Återställspunkter","tw.menuBar.saveAs":"Spara som {file}","tw.menuBar.seeInside":"Se inuti","tw.notify.permission":"Om tillåtet, kommer du kanske att bli frågad om att tillåta notifikationer av din webbläsare, och senare notifikationer kommer att bli automatiskt tillåtna. ","tw.notify.title":"Projektet vill visa notifikationer.","tw.oldDownload":"Spara till separat fil...","tw.opcode.2000":"dagar från år 2000","tw.opcode.mousedown":"Musknapp nedtryckt?","tw.opcode.mousex":"mus x","tw.opcode.mousey":"mus y","tw.openAdvanced":"Öppna avancerade inställningar","tw.openWindow.dangerous":"Denna webbsida har inte granskats av utvecklarna {APP_NAME} . Den kan innehålla farlig eller skadlig kod.","tw.openWindow.title":"Projektet vill öppna ett fönster eller en flik med länken: ","tw.paint.alpha":"Opacitet","tw.paint.fonts.more":"Lägg till fler font...","tw.privacy":"Integritetspolicy","tw.recordAudio.permission":"Om tillåtet, kommer du kanske att bli frågad om att tillåta tillgång till mikrofonen från din webbläsare, och senare tillgång till mikrofonen kommer att bli automatiskt tillåtet.","tw.recordAudio.title":"Projektet vill spela in ljud från din mikrofon. Detta kan inkludera ett textutskrift eller rå ljud. Projektet kan dela ljudet med andra personer eller servrar.","tw.recordVideo.permission":"Om tillåtet, kommer du kanske att bli frågad av din webbläsare att få tillgång till din kamera, och senare tillgång till kameran kommer att bli automatiskt tillåtet.","tw.recordVideo.title":"Projektet vill spela in video från din kamera. Projektet kan dela bilder med andra användare eller servrar.","tw.redirect.dangerous":"Denna webbsida har inte granskats av utvecklarna {APP_NAME} . Den kan innehålla farlig eller skadlig kod.","tw.redirect.title":"Projektet will navigera dig till denna webbsida:","tw.restorePoints.deleteAll":"Radera allt","tw.restorePoints.description":"{APP_NAME} sparar återställspunkter med jämna mellanrum på don dator för att hjälpa återställa projekt om du glömde spara. Detta är avsett som sista utvägen för återhämtning. Din dator kan ta bart återställningspunkterna när som helts. Bero INTE på denna funktion.","tw.restorePoints.error":"Ett fel uppstod under laddningen av återställningspunkten: {error}","tw.restorePoints.loading":"Laddar...","tw.restorePoints.title":"Återställspunkter","tw.saveAs":"Spara som...","tw.saveTo":"Spara till {file}","tw.scratchUnsafeCloud":"Om du gör denna molnvariabel så kommer projektet att överskrida Scratchs gräns av {number} variabler och några variabler kommer inte fungera om du kommer ladda upp projektet till Scratch.","tw.securityManager.allow":"Tillåt","tw.securityManager.deny":"Avvisa","tw.securityManager.title":"Tilläggssäkerhet","tw.securityManager.trust":"Om tillåtet, senare förfrågor till samma websida kommer att automatiskt vara tillåtna.","tw.securityManager.why":"Detta kan vara använt till att ladda ned bilder eller ljud, implementera multiplayer, få tillgång till API, eller för skadliga syften. Detta kommer att dela din IP adress, allmän plats, och kanske annan data med websidan.","tw.settingsModal.customStageSize":"Anpassad scenstorlek:","tw.settingsModal.customStageSizeHelp":"Ändrar storleken av Scratch scenen från 480x360 till något annat. Prova 640x360 för att göra scenen widescreen. Väldigt få projekt funkar rätt med detta","tw.settingsModal.dangerZone":"Farliga zonen","tw.settingsModal.disableCompiler":"Avaktivera kompilatorn","tw.settingsModal.disableCompilerHelp":"Avaktiverar TurboWarps kompilator. Du kanske vill att aktivera detta när du vill ändra koden så att skripterna uppdateras momentalt, annars så ska du aldrig aktivera detta.","tw.settingsModal.featured":"Utvalda","tw.settingsModal.fps":"60 FPS (Anpassat FPS)","tw.settingsModal.fpsHelp":"Kör skripter 60 gånger i sekunden istället för 30. De flesta projekt kommer inte att funka rätt med detta aktiverat. Do kan prova interpolation med 60 FPS läget avaktiverat om så är fallet. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Klicka för att använda en hastighet förutom 30 och 60 FPS","tw.settingsModal.help":"Klicka för hjälp","tw.settingsModal.highQualityPen":"Högkvalitativ penna","tw.settingsModal.highQualityPenHelp":"Tillåter att projekt med penna kan rendera med högre kvalité och tar bort några koordinat avrundning i editorn. Inte alla projekt drar nytta av den här inställningen och det kan påverka prestandan.","tw.settingsModal.infiniteClones":"Oändliga kloner","tw.settingsModal.infiniteClonesHelp":"Avaktiverar Scratch\'s 300 klongräns.","tw.settingsModal.interpolationHelp":"Får projekt att se jämnare ut genom att interpolera sprite-rörelser. Interpolering bör inte användas på 3D-projekt, raytracers, pennprojekt och långsamma projekt eftersom interpolering kommer att göra att de går långsammare utan att få dem att se jämnare ut.","tw.settingsModal.largeStageWarning":"Att använda en scenstorlek som detta är inte rekomenderat! Istället, använd en mindre storlek med samma sidförhållande och låt fullskärmen att uppskala den så att storleken matchar datorns skärm.","tw.settingsModal.removeFencing":"Ta bort scengränser","tw.settingsModal.removeFencingHelp":"Tillåter sprites att flytta utanför skärmen, bli så stora eller så små som de vill, och gör att beröringsblock fungerar utanför skärmen.","tw.settingsModal.removeLimits":"Ta bort limitationerna","tw.settingsModal.removeMiscLimits":"Ta bort diverse gränser","tw.settingsModal.removeMiscLimitsHelp":"Tar bort ljud limitationer och gränser för pennstorlek","tw.settingsModal.storeProjectOptions":"Spara inställningarna i projektet","tw.settingsModal.storeProjectOptionsHelp":"Sparar de valda inställningarna i projektet så de kommer bli automatiskt tillämpas när TurboWarp laddar projektet. Warp timer och avaktivera kompilatorn kommer inte vara sparade.","tw.settingsModal.title":"Avancerade inställningar","tw.settingsModal.warpTimerHelp":"Ser till så att skript är inte fasta i en lång eller oändlig loop och gör så att de körs på låg hastighet istället för att fastna tills loopen blir klar. Detta fixar de flesta kraschar men har en betydande prestationspåverkan så det är bara aktiverat i editorn som standard.","tw.spriteSelectorItem.rename":"Döp om","tw.stereoAlert":"Om du redigerar detta stereoljud konverteras det oåterkalleligt till mono.","tw.studioview.authorAttribution":"av {author}","tw.studioview.error":"Det uppstod ett fel när nästa sida med projekt skulle laddas.","tw.studioview.hoverText":"{title} av {author}","tw.tooLarge":"Detta ljud kommer att kanske vara för stort för att ladda upp till Scratch.","tw.twExtension.description":"Konstiga nya block.","tw.twExtension.name":"TurboWarps block","tw.unshared.2":"För mer information se: {link}","tw.unshared.bug":"Om detta projektet är delat, rapportera en bugg.","tw.unshared.cache":"Om projektet var delat nyligen så kan detta meddelandet vara ogiltigt i några minuter.","tw.unshared2.1":"Odelade projekt är inte tillgängliga längre.","tw.usernameModal.help":"Detta värde kommer att lagras i din webbläsares lagring. Det kan loggas när du interagerar med projekt som innehåller molnvariabler.","tw.usernameModal.help2":"Värden som inte korresponderar till ett valt Scratch konto kommer vanligtvis att avvisas av molnvariabelservern. Vi rekomenderar att lämna det så som det är eller att ändra det till ditt Scratch användarnamn","tw.usernameModal.mustChange":"Förlåt, men det ser ut som om att servern tänker att ditt användarnamn är osäkert. Ändra det till något annat eller {resetIt}.","tw.usernameModal.mustChange.resetIt":"Återställa (Rekomenderat)","tw.usernameModal.reset":"Starta om","tw.usernameModal.title":"Ändra användarnamn","tw.viewFeaturedProjects":"Klicka för att se utvalda projekt","tw.viewOnScratch":"Se projektet på Scratch"},"tr":{"tw.alerts.creatingRestorePoint":"Yükleme noktası yapılıyor","tw.alerts.lostPeripheralConnection":"Bağlantı kesildi {extensionName}","tw.alerts.restorePointError":"Geri yükleme noktası oluşturulamadı","tw.alerts.restorePointSuccess":"\\"Dosya\\"daki geri yükleme noktalarına erişin","tw.alerts.savedToDisk":"Bilgisayarına kaydedilmiştir.","tw.backpack.rename":"Yeni kullanıcı adı:","tw.blocks.PROCEDURES_DOCS":"Return nasıl kullanılır","tw.blocks.PROCEDURES_RETURN":"{v} geri dön","tw.blocks.PROCEDURES_TO_REPORTER":"Reporter olarak Değiştir","tw.blocks.PROCEDURES_TO_STATEMENT":"İfadeye Değiştir","tw.blocks.addons":"Eklentiler","tw.blocks.buttonIsDown":"[MOUSE_BUTTON] fare düğmesi basılımı?","tw.blocks.lastKeyPressed":"basılan son tuş","tw.blocks.mouseButton.middle":"(1) orta","tw.blocks.mouseButton.primary":"(0) birincil","tw.blocks.mouseButton.secondary":"(2) ikincil","tw.blocks.openDocs":"Belgeyi Aç","tw.browserModal.desc":"Lütfen Google Chrome, Mozilla Firefox, Microsoft Edge veya Apple Safari\'nin yeni bir sürümünü kullandığınızdan emin olun.","tw.cantUseCloud":"Bulut değişkenleri oluşturabilseniz de, bu proje Scratch\'e yüklenmediği veya {packager} gibi bir araç kullanılarak dönüştürülmediği sürece bunlar çalışmayacaktır.","tw.changeUsername.cannotChangeWhileRunning":"Proje çalışırken kullanıcı adı değiştirilemez.","tw.clipboard.danger":"Panonuzda şifre gibi şeyler varsa proje bunları diğer kullanıcılarla veya sunucularla paylaşabilir.","tw.clipboard.permission":"Pano erişimi bazı tarayıcılarda çalışmayabilir. İzin verilirse, daha fazla pano okumasına otomatik olarak izin verilecektir.","tw.clipboard.title":"Proje panonuzdaki verileri okumak istiyor.","tw.cloudProvider":"{name} tarafından sağlanan sunucu","tw.cloudServers":"Yakınınızdaki bir sunucuyu seçin:","tw.code":"Kaynak Kodu","tw.confirmIncompatibleExtension":"Bu eklenti Scratch ile kullanamılınıyor. Bununla yapılan projeler Scratch web sitesine yüklenemez. Etkinleştirmek istediğinizden emin misiniz?","tw.createdBy":"Yazar:","tw.customCloudServer":"Özel bir bulut değişken sunucusu kullanma:{server}","tw.customExtension.description":"URL\'lerden, dosyalardan veya JavaScript kaynak kodundan özel uzantılar yükleyin.","tw.customExtension.name":"Görenek Eklenti","tw.customExtensionModal.file":"Dosya","tw.customExtensionModal.load":"Yükle","tw.customExtensionModal.promptFile":"Uzantının JavaScript dosyasını seçin:","tw.customExtensionModal.promptText":"Uzantının JavaScript kaynak kodunu yapıştırın:","tw.customExtensionModal.promptURL":"Uzantının URL\'sini girin:","tw.customExtensionModal.text":"Metin","tw.customExtensionModal.title":"Özel Uzantıyı Yükle","tw.customExtensionModal.trusted":"Bu uzantı, güvenilir bir kaynaktan geldiği için korumalı alan olmadan yüklenecek.","tw.customExtensionModal.unsandboxed":"Uzantıyı korumalı alan olmadan çalıştır","tw.customExtensionModal.unsandboxedWarning1":"Uzantıları korumalı alan olmadan yüklemek tehlikelidir ve ne yaptığınızı bilmiyorsanız etkinleştirilmemelidir.","tw.customExtensionModal.unsandboxedWarning2":"Korumalı alanda olmayan uzantılar projenizi bozabilir, ayarlarınızı silebilir, şifreleri ele geçirmek için kimlik avı yapabilir ve diğer kötü şeylere neden olabilir. {APP_NAME} geliştiricileri ortaya çıkan sorunlardan sorumlu değildir.","tw.customExtensionModal.untrusted":"Güvenilmeyen URL\'lerden gelen uzantılar, güvenlik amacıyla her zaman korumalı alanla birlikte yüklenecektir.","tw.customReporters.description":"Özel blokların değerlerin çıktısını almasına ve girdi olarak kullanılmasına izin verin.","tw.customReporters.name":"Özel Haberciler","tw.documentation":"Belgesel","tw.embed.persistent":"İzin verilirse aynı siteye daha fazla yerleştirme yapılmasına otomatik olarak izin verilecektir.","tw.embed.risks":"Yerleştirme korumalı alana alınsa da, cihazınızla ilgili IP\'niz ve genel konumunuz gibi bilgilere erişmeye devam edecektir.","tw.embed.title1":"Proje, HTML içeriğini sahneye yerleştirmek istiyor:","tw.embed.title2":"Proje, uzak içeriği sahneye yerleştirmek istiyor:","tw.extensionGallery.error":"Uzantı galerisi yüklenirken hata oluştu. Daha fazla uzantı bulmak için extensions.turbowarp.org adresini ziyaret edin.","tw.extensionGallery.loading":"Uzantı galerisi yükleniyor...","tw.extensionGallery.more":"extensions.turbowarp.org adresinde uzantılar hakkında daha fazla bilgi edinin.","tw.extensionGallery.name":"TurboWarp Uzantı Galerisi","tw.favorite":"Favori","tw.featuredProjectsStudio":"Stüdyoyu Scratch\'te görüntüleyin.","tw.feedback":"Geribildirim ve Hatalar","tw.feedbackButton":"Turbowarp geribildirim","tw.fetch.title":"Proje web sitesine bağlanmak istiyor:","tw.fileInput.none":"Dosya seçilmedi.","tw.fileInput.selected":"Seçildi: {name}","tw.fonts.add":"Ekle","tw.fonts.custom.file":"Bilgisayarınızdan bir yazı tipi dosyası seçin:","tw.fonts.custom.name":"Yazı tipine bir ad verin:","tw.fonts.custom1":"Bir dosyadan yazı tipi ekleme","tw.fonts.custom2":"Genellikle Scratch\'te çalışmaz. Desteklenen formatlar: {formats}.","tw.fonts.delete":"\\"{font}\\"i silmek istediğinizden emin misiniz? Herhangi bir vektör kostümü bunun yerine yedek yazı tipini kullanacaktır.","tw.fonts.fallback":"Yazı tipinin yüklenememesi veya silinmesi durumunda kullanılacak bir yedek yazı tipi seçin:","tw.fonts.list":"Yüklü yazı tipleri:","tw.fonts.none":"Henüz yazı tipi eklenmedi.","tw.fonts.readError":"Yazı tipi dosyası okunamadı: {error}","tw.fonts.system":"Sistem yazı tipi","tw.fonts.system.name":"Bilgisayarınızda yerleşik olan herhangi bir yazı tipinin adını yazın. Yazı tipi herkes için doğru görünmeyebilir.","tw.fonts.system1":"Sistem yazı tipi ekleme","tw.fonts.system2":"Scratch\'te çalışabilir ancak herkes için doğru şekilde görünmeyecektir.","tw.fonts.title":"Yazı tipleri","tw.footer.credits":"Krediler","tw.footer.disclaimer":"TurboWarp, Scratch, Scratch Takım veya Scratch Vakıfı ile bağlantılı değildir.","tw.footer.documentation":"Belgesel","tw.footer.donate":"Bağış Yapın","tw.footer.embed":"Gömmek","tw.footer.parameters":" URL parametreler","tw.geolocate.permission":"İzin verilirse tarayıcınız tarafından konum erişimine izin vermeniz istenebilir.","tw.geolocate.title":"Proje konumunuzu bilmek istiyor.","tw.gui.crashMessage.description":"Çok üzgünüz ancak sayfanın çökmüş olduğu anlaşılıyor. Tekrar denemek için lütfen sayfanızı yenileyin.","tw.gui.defaultProjectTitle":"Proje","tw.guiDefaultTitle":"Scratch Projeleri daha hızlı yapın","tw.home.credit":"Notlar ve Krediler","tw.home.description":"TurboWarp, projeleri çok hızlı çalıştırmaları için JavaScript\'e derleyen bir Scratch modudur. Yukarıda bir proje ID yada URL girerek yada özel projeleri şeçerek ile deneyin.","tw.home.instructions":"Kurallar","tw.input.tooltip":"Bir Scratch proje linki buraya kopyala ve yapıştır!","tw.interpolationEnabled":"Enterpolasyon","tw.invalidParameters.clones":"\\"klon\\" URL parametresi geçersizdir","tw.invalidParameters.fps":"\\"fps\\" URL parametresi geçersizdir","tw.loadError":"Bu projeyi yükleyemiyoruz: {error}","tw.loadExtension.embedded":"Proje şu kodu içeren özel bir uzantı yüklemek istiyor:","tw.loadExtension.sandboxed":"Kod korumalı alana alınsa da, cihazınızla ilgili IP\'niz ve genel konumunuz gibi bilgilere erişmeye devam edecektir. Devam etmeden önce bu uzantının yazarına güvendiğinizden emin olun.","tw.loadExtension.unsandboxed":"Uzantıyı korumalı alan olmadan çalıştır","tw.loadExtension.unsandboxedWarning":"Korumalı alan olmadan uzantıların yüklenmesi tehlikelidir. Projenizi bozabilir, ayarlarınızı silebilir, şifreleri ele geçirebilir ve diğer kötü şeyleri yapabilir. {APP_NAME}geliştiricileri ortaya çıkan sorunlardan sorumlu değildir.","tw.loadExtension.url":"Proje, URL\'den özel bir uzantı yüklemek istiyor:","tw.loader.assets.known":"Varlıklar indiriliyor ({complete}/{total}) ...","tw.loader.assets.unknown":"Varlıklar indiriliyor ...","tw.loader.data":"Proje verileri indiriliyor ...","tw.loader.generic":"Proje yükleniyor ...","tw.menuBar.60off":"60 FPS modunu kapat","tw.menuBar.60on":"60 FPS modunu aç","tw.menuBar.addons":"Eklentiler","tw.menuBar.advanced":"Gelişmiş","tw.menuBar.changeUsername":"Adını değiştir","tw.menuBar.cloudOff":"Bulut değişkenleri kapat","tw.menuBar.cloudOn":"Bulut değişkenleri aç","tw.menuBar.cloudUnavailable":"Bulut Değişkenleri bulamıyoruz","tw.menuBar.cloudUnavailableAlert":"Bulut değişkenleri kullanamıyoruz, büyük ihtimalle editörü açtığınız için.","tw.menuBar.cloudUnavailableDesktop":"Masaüstü uygulamasında bulut değişkenleri kullanılamaz.","tw.menuBar.moreSettings":"Gelişmiş Ayarlar","tw.menuBar.newFramerate":"Yeni karehızı:","tw.menuBar.newWindow":"Yeni Pencere","tw.menuBar.package":"Projeyi paketle","tw.menuBar.reportError1":"Bazı komut dosyaları derlenemedi.","tw.menuBar.reportError2":"Bu bir hatadır. Lütfen bildirin.","tw.menuBar.restorePoints":"Son kayıtlı nokta","tw.menuBar.saveAs":"{file} olarak kaydet","tw.menuBar.seeInside":"İçeri bak","tw.moreCloud":"Bulut değişkenleri hakkında daha fazla bilgi edinin.","tw.notify.permission":"İzin verilirse, tarayıcınız tarafından bildirimleri etkinleştirmeniz istenebilir ve daha sonraki bildirimlere otomatik olarak izin verilir.","tw.notify.title":"Proje bildirimleri görüntülemek istiyor.","tw.oldDownload":"Farklı dosyaya kaydet...","tw.opcode.2000":"2000\'den beri günler","tw.opcode.mousedown":"fare basılı mı?","tw.opcode.mousex":"fare x","tw.opcode.mousey":"fare y","tw.openAdvanced":"Gelişmiş ayarları aç","tw.openWindow.dangerous":"Bu web sitesi {APP_NAME} geliştiricileri tarafından incelenmemiştir. Tehlikeli veya kötü amaçlı kod içerebilir.","tw.openWindow.title":"Proje, URL\'yi içeren yeni bir pencere veya sekme açmak istiyor:","tw.paint.alpha":"Saydamlık","tw.paint.fonts.more":"Daha fazla yazı tipi ekleyin...","tw.privacy":"Gizillik Politikası","tw.recordAudio.permission":"İzin verilirse, tarayıcınız tarafından mikrofon erişimini etkinleştirmeniz istenebilir ve daha fazla mikrofon erişimine otomatik olarak izin verilecektir.","tw.recordAudio.title":"Proje mikrofonunuzdan ses kaydetmek istiyor. Bu, bir metin transkriptini veya ham ses verilerini içerebilir. Proje sesi diğer kullanıcılarla veya sunucularla paylaşabilir.","tw.recordVideo.permission":"İzin verilirse, tarayıcınız tarafından kamera erişimini etkinleştirmeniz istenebilir ve daha fazla kamera erişimine otomatik olarak izin verilecektir.","tw.recordVideo.title":"Proje kameranızdan video kaydetmek istiyor. Proje, görüntüleri diğer kullanıcılarla veya sunucularla paylaşabilir.","tw.redirect.dangerous":"Bu web sitesi {APP_NAME} geliştiricileri tarafından incelenmemiştir. Tehlikeli veya kötü amaçlı kod içerebilir.","tw.redirect.title":"Proje bu sekmeyi şu URL\'ye yönlendirmek istiyor:","tw.restorePoints.1minute":"her dakika","tw.restorePoints.assets":"{n} varlıklar","tw.restorePoints.confirmDelete":"\\"{projectTitle}\\"i silmek istediğinizden emin misiniz? Bu geri alınamaz.","tw.restorePoints.confirmDeleteAll":"TÜM geri yükleme noktalarını silmek istediğinizden emin misiniz? Bu geri alınamaz.","tw.restorePoints.confirmLoad":"Kaydedilmemiş değişiklikleriniz var. Mevcut projeyi değiştirmek mi?","tw.restorePoints.deleteAll":"Hepsini sil","tw.restorePoints.description":"{APP_NAME}, kaydetmeyi unutursanız projenizi kurtarmanıza yardımcı olmak için periyodik olarak bilgisayarınıza geri yükleme noktaları kaydeder. Bu, iyileşme için son çare olarak tasarlanmıştır. Bilgisayarınız bu geri yükleme noktalarını istediği zaman sessizce silebilir. Bu özelliğe güvenmeyin.","tw.restorePoints.empty":"Geri yükleme noktası bulunamadı.","tw.restorePoints.error":"Geri yükleme noktası yüklenirken hata oluştu: {error}","tw.restorePoints.intervalOption":"{time} geri yükleme noktaları oluşturuldu.","tw.restorePoints.loading":"Yükleniyor...","tw.restorePoints.minutes":"her {n} dakikada bir","tw.restorePoints.never":"Asla","tw.restorePoints.off":"Geri yükleme noktalarını devre dışı bırakmak tehlikelidir.","tw.restorePoints.size":"Kullanılan tahmini depolama alanı: {size}","tw.restorePoints.size2":"Birden çok geri yükleme noktası tarafından kullanılan kostümler veya sesler yalnızca bir kez depolanır.","tw.restorePoints.title":"Geri Yükleme Noktaları","tw.sample":"Örnek Proje","tw.saveAs":"Farklı kaydet...","tw.saveTo":"{file} dosyasına kaydet","tw.scratchUnsafeCloud":"Bu bulut değişkenini yaparsanız proje Scratch\'in {number} değişkenleri sınırını aşacaktır ve projeyi Scratch\'e yüklerseniz bazı değişkenler çalışmayacaktır.","tw.securityManager.allow":"İzin vermek","tw.securityManager.deny":"Reddetmek","tw.securityManager.title":"Uzantı Güvenliği","tw.securityManager.trust":"İzin verilirse, aynı web sitesine yapılacak başka isteklere de otomatik olarak izin verilecektir.","tw.securityManager.why":"Bu, görüntüleri veya sesleri indirmek, çok oyunculu modu uygulamak, bir API\'ye erişmek veya kötü amaçlarla kullanılabilir. Bu, IP adresinizi, genel konumunuzu ve muhtemelen diğer verilerinizi web sitesiyle paylaşacaktır.","tw.settingsModal.customStageSize":"Özel Sahne Büyüklüğü:","tw.settingsModal.customStageSizeHelp":"Scratch\'in büyüklüğünü 480x360\'den başka büyüklüğe değiştiriyor. Eğer geniş ekran istiyorsanız, 640x360yi deneyin. Sadece bir kaç projeler bunu düzgün bir şekilde halledebilir.","tw.settingsModal.dangerZone":"Tehlikeli yer","tw.settingsModal.disableCompiler":"Derlemeyi kapat","tw.settingsModal.disableCompilerHelp":"Turbowarp Derleyiciyi devre dışı bırakır. Blokları hemen güncellenmesi için projeleri düzenlerken bunu etkinleştirmek isteyebilirsiniz, aksi takdirde bunu etkinleştirmemelisiniz.","tw.settingsModal.featured":"Özellikli","tw.settingsModal.fps":"60 FPS (Özel FPS)","tw.settingsModal.fpsHelp":"Blokarı 30FPS yerinde 60FPS ile çalıştırır. Çoğu projeler bu mod ile 30FPS gibi çalışamaz. Bu durumda Enterpolasyonu 60 FPS modu devre dışı bırakarak denemelisiniz. {customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"30FPS yada 60FPS\'den başka kare hızı ile çalıştırmak istiyorsan bunu tıkla.","tw.settingsModal.help":"Yardım için buraya tıkla","tw.settingsModal.highQualityPen":"Yüksek kalite kalem","tw.settingsModal.highQualityPenHelp":"Yüksek Kaliteli Kalem, kalem projelerinin daha yüksek kalitede görüntülemekte sağlar. ve oluşturucudaki bazı yuvarlamaları da görünmemesini sağlar. Bu ayardan tüm projelere bir advantaj veremiyor ve performansı etkileyebilir.","tw.settingsModal.infiniteClones":"Sonsuz klonlar","tw.settingsModal.infiniteClonesHelp":"Scratch\'in 300 klon limiti çıkarıyor.","tw.settingsModal.interpolation":"Enterpolasyon","tw.settingsModal.interpolationHelp":"Enterpolasyon, hareketli grafik hareketini interpolasyon yaparak, projenin davranışını değiştirmeden daha yüksek kare hızlarında çalışıyormuş gibi görünmesini sağlayan deneysel bir özelliktir. Eğer bir projeyi 60 FPS\'de çalıştırdıysanız ve çok hızlı çalıştığını fark ettiyseniz, İnterpolasyon bunu çözer. Enterpolasyon 3B projelerde, raytracer ve kalem projelerde kullanmayın çünkü projeleri yavaşlatır ve daha pürüzsüz yapmaz.","tw.settingsModal.largeStageWarning":"Bu büyüklükte özel bir sahne boyutu kullanılması önerilmez! Bunun yerine, aynı en boy oranına sahip daha düşük bir boyut kullanın ve tam ekran modunun kullanıcının ekranına uyacak şekilde yükseltmesine izin verin.","tw.settingsModal.removeFencing":"Eskirimi çıkart","tw.settingsModal.removeFencingHelp":"Kuklaları ekran dışı yerler gitmeyi izin verir ve kuklaların istediği kadar büyük yada küçük olmasını izin verir, ve dokunma blokları ekran dışında kullanılabilir.","tw.settingsModal.removeLimits":"Limitleri çıkart","tw.settingsModal.removeMiscLimits":"Çeşitli Limitleri Kaldır","tw.settingsModal.removeMiscLimitsHelp":"Ses efekti limitleri gibi projeleri bozmaması olmayan çeşitli limitleri kaldırır.","tw.settingsModal.storeProjectOptions":"Proje ayarlarını kaydet","tw.settingsModal.storeProjectOptionsHelp":"TurboWarp bu projeyi yüklediğinde, ayarların otomatik olarak uygulanması için seçilmiş ayarları projede kaydeder. Warp zamanlayıcısı ve derleyiciyi devre dışı bırakma ayarları kaydedilmeyecektir.","tw.settingsModal.title":"Gelişmiş Ayarlar","tw.settingsModal.warpTimer":"Warp zamanlayıcı","tw.settingsModal.warpTimerHelp":"Warp zamanlayıcı bloklara uzun veya sonsuz bir döngüde takılıp kalmadıklarını kontrol etmesini sağlar ve çok yavaş bir karehızında yürütüyor, ve bu da çoğu çökmeyi düzeltir. Bunun çok büyük bir performans etkisi vardır, bu nedenle editörün dışında varsayılan olarak etkinleştirilmez.","tw.spriteSelectorItem.rename":"yeniden adlandır","tw.stereo":"Müzik seti","tw.stereoAlert":"Bu stereo sesi düzenlemek onu geri dönülemez bir şekilde monoya dönüştürecektir.","tw.studioview.authorAttribution":"{author} tarafından","tw.studioview.error":"Sonraki proje sayfası yüklenirken hata oluştu.","tw.studioview.hoverText":"{title} tarafından {author}","tw.tooLarge":"Bu ses Scratch\'e yüklenemeyecek kadar büyük olabilir.","tw.twExtension.description":"Tuhaf yeni bloklar.","tw.twExtension.name":"Turbowarp Bloklar","tw.unfavorite":"Favori Olmayan","tw.unshared.2":"Daha fazla bilgi için şu adresi ziyaret edin: {link}","tw.unshared.bug":"Bu proje gerçekten paylaşılıyorsa lütfen bir hata bildirin.","tw.unshared.cache":"Proje yakın zamanda paylaşıldıysa bu mesaj birkaç dakika boyunca hatalı görünebilir.","tw.unshared2.1":"Paylaşılmayan projeler artık görünmez.","tw.usernameModal.help":"Bu kullanıcı adı web tarayıcının çerezlerinde olacak. Bulut değişkenleri olan projelerle etkileşim kurduğunuzda kaydedilebilir.","tw.usernameModal.help2":"Geçerli bir Scratch hesabına karşılık gelen değerler genellikle bulut değişken sunucusu tarafından reddedilirecek. Olduğu gibi ybırakmanızı vea Scratch kullanıcı adınızı değiştirmenizi öneririz.","tw.usernameModal.mustChange":"Üzgünüz, bulut değişken sunucusu kullanıcı adınızın güvensiz olabileceğini düşünüyor. Lütfen başka bir şeyle değiştirin yada {resetIt}.","tw.usernameModal.mustChange.resetIt":"sıfırlayın (önerildi)","tw.usernameModal.new":"Yeni kullanıcı adı:","tw.usernameModal.reset":"Sıfırla","tw.usernameModal.title":"Adını değiştir","tw.usesCloudVariables":"Bu proje bulut değişkenlerini kullanıyor.","tw.usesCloudVariables2":"{APP_NAME}\'in bulut değişkenleri Scratch\'inkilere bağlı değil. Herkes {changeTheirUsername} herhangi bir şey yapabilir, bu nedenle kimliğe bürünmeye karşı dikkatli olun.","tw.usesCloudVariables2.change":"kullanıcı adını değiştir","tw.viewFeaturedProjects":"Özellikli projeleri görmek için buraya tıklayınız.","tw.viewOnScratch":"Projeyi Scratch\'te görüntüleyin."},"uk":{"tw.alerts.creatingRestorePoint":"Створення точки відновлення...","tw.alerts.lostPeripheralConnection":"Втрачено зв\'язок з {extensionName}","tw.alerts.savedToDisk":"Збережено на ваш комп\'ютер.","tw.backpack.rename":"Нова назва:","tw.blocks.addons":"Доповнення","tw.blocks.buttonIsDown":"[MOUSE_BUTTON] кнопку миші натиснуто?","tw.blocks.lastKeyPressed":"остання клавіша натиснута","tw.blocks.mouseButton.middle":"(1) середня","tw.blocks.mouseButton.primary":"(0) основна","tw.blocks.mouseButton.secondary":"(2) додаткова","tw.blocks.openDocs":"Відкрити документацію","tw.browserModal.desc":"Переконайтеся, що ви використовуєте останню версію Google Chrome, Mozilla Firefox, Microsoft Edge, або Apple Safari.","tw.cantUseCloud":"Хоча ви можете створювати хмарні змінні, вони не будуть працювати до тих пір, доки проект не буде завантажений на Scratch, або упакований за допомогою {packager}","tw.changeUsername.cannotChangeWhileRunning":"Неможливо змінити ім\'я користувача поки проект працює.","tw.code":"Вихідний код","tw.confirmIncompatibleExtension":"Це розшрення несумісне зі Scratch. Проекти, створені за допомогою цього розширення, неможливо завантажити на Scratch. Ви дійсно хочете увімкнути це?","tw.customExtension.name":"Користувальницьке розширення","tw.customExtensionModal.file":"Файл","tw.featuredProjectsStudio":"Переглянути студію на Scratch.","tw.feedback":"Зв\'язок з розробником та помилки","tw.feedbackButton":"Зворотній звязок","tw.footer.credits":"Подяки","tw.footer.disclaimer":"TurboWarp ніяк не пов\'язаний із Scratch, Командою Scratch або Фондом Scratch.","tw.footer.donate":"Пожертвувати","tw.footer.embed":"Вбудовування","tw.footer.parameters":"Параметри URL","tw.fps":"{framerate}Кадрів у секунду","tw.gui.crashMessage.description":"Нам дуже шкода, але схоже що сторінка дала збій. Будь ласка, оновіть сторінку, щоб повторити спробу.","tw.gui.defaultProjectTitle":"Проєкт","tw.guiDefaultTitle":"Запускайте проекти Scratch швидше","tw.home.credit":"Замітки та Подяки","tw.home.description":"TurboWarp - це модифікація Scratch, що компілює проекти в JavaScript, щоб вони працювали швидше. Спробуйте ввести URL або ID проекту вище або виберіть з обраних проектів нище.","tw.home.instructions":"Інструкції","tw.input.tooltip":"Скопіюйте та вставте URL адресу Scratch проекту сюди!","tw.interpolationEnabled":"Інтерполяція","tw.invalidParameters.clones":"Параметр \\"clone\\" в URL некоректний","tw.invalidParameters.fps":"Параметр \\"fps\\" в URL некоректний","tw.loadError":"Не вийшло завантажити проект: {error}","tw.loader.assets.known":"Завантаження ресурсів ({complete}/{total}) ...","tw.loader.assets.unknown":"Завантаження ресурсів...","tw.loader.data":"Завантаження даних проєкту...","tw.loader.generic":"Завантаження проєкту...","tw.menuBar.60off":"Вимкнути режим 60 FPS","tw.menuBar.60on":"Увімкнути режим 60 FPS","tw.menuBar.addons":"Доповнення","tw.menuBar.advanced":"Додатково","tw.menuBar.changeUsername":"Змінити ім\'я користувача","tw.menuBar.cloudOff":"Вимкнути хмарні змінні","tw.menuBar.cloudOn":"Увімкнути хмарні змінні","tw.menuBar.cloudUnavailable":"Хмарні змінні недоступні","tw.menuBar.cloudUnavailableAlert":"Не вдається використати хмарні змінні, швидше за все, тому що ви відкрили редактор.","tw.menuBar.moreSettings":"Налаштування Доповнень","tw.menuBar.newFramerate":"Нова частота кадрів:","tw.menuBar.package":"Упакувати проект","tw.menuBar.reportError1":"Деякі скрипти не можуть бути скомпільовані.","tw.menuBar.reportError2":"Це помилка. Будь-ласка, повідомте нам про це.","tw.menuBar.saveAs":"Зберегти як {file}","tw.menuBar.seeInside":"Переглянути код","tw.mono":"Моно","tw.oldDownload":"Зберегти як окремий файл...","tw.opcode.2000":"днів від 2000 року","tw.openAdvanced":"Відкрити налаштування доповнень","tw.openWindow.title":"Даний проект хоче відкрити нове вікно, або вкладку за посиланням:","tw.paint.alpha":"Непрозорість","tw.privacy":"Політика Конфіденсійності","tw.saveAs":"Зберегти як...","tw.saveTo":"Зберегти як {file}","tw.scratchUnsafeCloud":"Якщо ви створите цю хмарну змінну, проект перевищить ліміт Scratch в {number} змінних, тому деякі змінні не працюватимуть, якщо завантажии проект на Scratch.","tw.securityManager.allow":"Дозволити","tw.settingsModal.customStageSize":"Користувальницький розмір сцени:","tw.settingsModal.customStageSizeHelp":"Змінює розмір сцени з 480x360 на щось інше. Спробуйте використати 640x360, щоб зробити сцену широкоекранною. Тільки деякі проекти будуть працювати правильно з цим налаштуванням.","tw.settingsModal.dangerZone":"Небезпечна зона","tw.settingsModal.disableCompiler":"Вимкнути компілятор","tw.settingsModal.disableCompilerHelp":"Вимикає компілятор TurboWarp. Рекомендуємо вмикати це налаштування коли ви редактуєте проект, щоб скрипти оновлювалися моментально. В інших випадках не вмикайте це.","tw.settingsModal.featured":"Обране","tw.settingsModal.fps":"60 FPS (Користувальницькі FPS)","tw.settingsModal.fpsHelp":"Виконує скрипти 60 раз в секунду замість 30. Більшість проектів не будуть працювати належним чином, коли цей параметр увімкнено. Якщо це так, спробуйте інтерполяцію з вимкненим режимом 60 FPS.{customFramerate}.","tw.settingsModal.fpsHelp.customFramerate":"Натисніть, щоб використати іншу частоту кадрів, ніж 30 або 60","tw.settingsModal.help":"Натисніть, щоб побачити подробиці","tw.settingsModal.highQualityPen":"Перо високої якості","tw.settingsModal.highQualityPenHelp":"Дозволяє виконувати візуалізацію пера з більш високою якістю, також вимикає деякі округлення координат в редакторі. Цей параметр корисний не для всіх проектів, і може вплинути на продуктивність.","tw.settingsModal.infiniteClones":"Безмежна кількість клонів","tw.settingsModal.infiniteClonesHelp":"Вимикає ліміт Scratch на 300 клонів.","tw.settingsModal.interpolation":"Інтерполяція","tw.settingsModal.interpolationHelp":"Інтерполює рухи спрайтів, роблячи проект більш плавним. Не використовуйте інтерполяцію в 3D проектах, проектах з трассуванням променів, проектах на основі пера та повільних проектах, оскільки інтерполяція не зробить їх більш плавними, і навіть негативно вплине на їх швидкість.","tw.settingsModal.largeStageWarning":"Використовувати настільки великий розмір сцени не рекомендується! Краще використовуйте сцену меншого розміру, але з таким самим співвідношенням сторін і дайте повноекранному режиму збільшити сцену так, щоб вона могла підійти по розміру до дисплею користувача.","tw.settingsModal.removeFencing":"Прибрати рамку","tw.settingsModal.removeFencingHelp":"Дозволяє спрайтам виходити за межі сцени, ставати настільки великими або маленькими, наскільки вони захочуть, та робить так, щоб блоки доторкань працювали за межами сцени.","tw.settingsModal.removeLimits":"Прибрати обмеження","tw.settingsModal.removeMiscLimits":"Прибрати різні обмеження","tw.settingsModal.removeMiscLimitsHelp":"Прибирає обмеження звукових еффектів та розміру пера.","tw.settingsModal.storeProjectOptions":"Зберегти налаштування у проєкті","tw.settingsModal.storeProjectOptionsHelp":"Зберігає вибрані налаштування в проекті щоб вони автоматично застосовувалися, коли проект відкривається TurboWarp\'ом. Warp Таймер і відключення компілятора не буде збережено. ","tw.settingsModal.title":"Розширені Налаштування","tw.settingsModal.warpTimer":"Warp Таймер","tw.settingsModal.warpTimerHelp":"Перевіряє, які скрипти застрягли в довгому, або безкінечному циклі та знижує часоту кадрів, замість того щоб він застиг, доки цикл не завершиться. Це виправляє велику частину критичних помилок, але це негативно впливає на швидкість проекту, тому за умовчанням цей параметр увімкнений тільки в редакторі.","tw.spriteSelectorItem.rename":"перейменувати","tw.stereo":"Стерео","tw.stereoAlert":"Редактування цого стерео звуку приведе до його конвертування в моно.","tw.studioview.authorAttribution":"від {author}","tw.studioview.error":"При завантаженні наступної сторінки проектів сталася помилка.","tw.studioview.hoverText":"{title} від {author}","tw.tooLarge":"Цей звук занадто великий для експорту в Scratch.","tw.twExtension.name":"Блоки TurboWarp ","tw.unshared.2":"Перейдіть на {link}, щоб отримати більше інформації","tw.unshared.bug":"Якщо насправді цей проект опубліковано, повідомте нам про помилку.","tw.usernameModal.help":"Це значення буде зберігатися в пам\'яті вашого браузера. Воно буде використовуватися, коли ви взаємодієте з проектами, що містять хмарні змінні.","tw.usernameModal.help2":"Значення, які не відповідають дійсному обліковому запису Scratch, зазвичай відхиляються сервером хмарних змінних. Ми рекомендуємо залишити його як є або змінити його на своє ім\'я користувача в Scratch.","tw.usernameModal.mustChange":"Вибачте, сервер хмарних змінних вважає, що ваше ім\'я користувача неприйнятне, Будь-ласка змініть ім\'я користувача на щось інше або на {resetIt}","tw.usernameModal.mustChange.resetIt":"скинути його (рекомендовано)","tw.usernameModal.reset":"Скинути","tw.usernameModal.title":"Змінити ім\'я користувача","tw.viewFeaturedProjects":"Натисніть щоб переглянути обрані проекти.","tw.viewOnScratch":"Проглянути проєкт на Scratch"},"vi":{"tw.alerts.creatingRestorePoint":"Đang tạo điiểm khôi phục","tw.alerts.lostPeripheralConnection":"Mất kết nối từ {extensionName}","tw.alerts.savedToDisk":"Đã lưu vời máy tính bạn.","tw.backpack.rename":"Tên mới:","tw.blocks.openDocs":"Mở tài liệu","tw.browserModal.desc":"Đảm bảo bạn đang sử dụng Google Chrome, Mozilla Firefox, Microsoft Edge, hoặc Apple Safari phiên bản mới nhất.","tw.changeUsername.cannotChangeWhileRunning":"Tên người dùng không thể đổi khi dự án đang chạy.","tw.feedbackButton":"Phản hồi TurboWarp","tw.fps":"{framerate}FPS","tw.gui.crashMessage.description":"Chúng tôi xin lỗi, nhưng hình như trang có vấn đề. Xin vui lòng tải lại trang của bạn để thử lại.","tw.home.credit":"Ghi chú và Tín dụng","tw.home.instructions":"Hướng đẫn","tw.input.tooltip":"Sao chép và đán một đường dẫn dự án Scratch vào đây!","tw.loader.data":"Đang tải dữ liệu dự án...","tw.loader.generic":"Đang tải dự án...","tw.menuBar.60off":"Tắt chế độ 60 FPS","tw.menuBar.60on":"Bật chế độ 60 FPS","tw.menuBar.advanced":"Nâng cao","tw.menuBar.changeUsername":"Đổi tên người dùng","tw.menuBar.cloudOff":"Vô hiệu hóa biến đám mây","tw.menuBar.cloudOn":"Kích hoạt biến đám mây","tw.menuBar.cloudUnavailable":"Biến đám mây không có sẵn","tw.menuBar.cloudUnavailableAlert":"Không thể dùng biến đám mây, hầu như vì bạn mở phần chỉnh sửa","tw.menuBar.moreSettings":"Cài đặt nâng cao","tw.menuBar.newFramerate":"Tỷ lệ mới:","tw.menuBar.package":"Đóng gói dự án","tw.menuBar.reportError1":"Một số khối lệnh không thể biên dịch","tw.menuBar.reportError2":"Đây là một lỗi. Xin vui lòng báo cáo.","tw.menuBar.saveAs":"Lưu thành {file}","tw.menuBar.seeInside":"Xem bên trong","tw.oldDownload":"Lưu để tách tệp tin...","tw.saveAs":"Lưu thành...","tw.saveTo":"Lưu về {file}","tw.settingsModal.customStageSize":"Cỡ sân khấu tùy chỉnh:","tw.settingsModal.dangerZone":"Vùng nguy hiểm","tw.settingsModal.disableCompiler":"Vô hiệu hóa biên dịch","tw.settingsModal.featured":"Đặc sắc","tw.settingsModal.fps":"60 FPS (FPS tủy chỉnh)","tw.settingsModal.fpsHelp.customFramerate":"Bấm để dùng một tỷ lệ khung hình từ 30 hoặc 60","tw.settingsModal.help":"Bấm để hỗ trợ","tw.settingsModal.highQualityPen":"Bút chất lượng Cao","tw.settingsModal.infiniteClones":"Bản sao vô hạn","tw.settingsModal.infiniteClonesHelp":"Vô hiệu hóa giới hạn 300 bản sao của Scratch","tw.settingsModal.removeLimits":"Xóa giới hạn","tw.settingsModal.removeMiscLimits":"Xóa các giới hạn khác","tw.settingsModal.removeMiscLimitsHelp":"Xóa giới hạn hiệu ứng âm thanh và cỡ bút.","tw.settingsModal.storeProjectOptions":"Lưu trữ cài đặt trong dự án","tw.settingsModal.title":"Cài đặt nâng cao","tw.spriteSelectorItem.rename":"đổi tên thành","tw.studioview.authorAttribution":"bởi {author}","tw.studioview.error":"Hình như có một lỗi tải trang tiếp theo của dự án","tw.studioview.hoverText":"{title} bởi {author}","tw.twExtension.name":"Khối TurboWarp","tw.usernameModal.mustChange.resetIt":"cài lại (khuyến nghị)","tw.usernameModal.reset":"Cài đặt lại","tw.usernameModal.title":"Đổi tên người dùng","tw.viewFeaturedProjects":"Bấm để xem dự án đặc sắc","tw.viewOnScratch":"Xem dự án trên Scratch"},"zh-cn":{"tw.alerts.creatingRestorePoint":"新建还原点中...","tw.alerts.lostPeripheralConnection":"与 {extensionName} 的连接中断了。","tw.alerts.restorePointError":"无法创建还原点","tw.alerts.restorePointSuccess":"可在“文件”菜单中访问还原点","tw.alerts.savedToDisk":"已保存至您的计算机。","tw.backpack.rename":"新名称:","tw.blocks.PROCEDURES_DOCS":"如何使用返回值","tw.blocks.PROCEDURES_RETURN":"返回 {v}","tw.blocks.PROCEDURES_TO_REPORTER":"转为返回值","tw.blocks.PROCEDURES_TO_STATEMENT":"转为流程块","tw.blocks.addons":"插件","tw.blocks.buttonIsDown":"鼠标[MOUSE_BUTTON]键按下?","tw.blocks.lastKeyPressed":"最后按下的键","tw.blocks.mouseButton.middle":"(1)中键","tw.blocks.mouseButton.primary":"(0)左键","tw.blocks.mouseButton.secondary":"(2)右键","tw.blocks.openDocs":"打开文档","tw.browserModal.desc":"确保你使用的是最新版本的 Google Chrome、Mozilla Firefox、Microsoft Edge 或 Apple Safari。","tw.cantUseCloud":"你创建的云变量仅在被上传到有云变量功能的网站或使用 {packager} 等工具转换时生效。","tw.changeUsername.cannotChangeWhileRunning":"作品运行时无法更改用户名。","tw.clipboard.danger":"如果你的剪贴板包含像密码之类的内容,该项目可能会共享这些给其他用户或服务器。","tw.clipboard.permission":"在一些浏览器,剪贴板可能不允许被访问。如果允许,将自动允许进一步读取剪贴板。","tw.clipboard.title":"该项目想要获取你剪贴板的数据。","tw.cloudProvider":"云变量服务器由 {name} 提供","tw.cloudServers":"选择您附近的服务器:","tw.code":"源代码","tw.confirmIncompatibleExtension":"此扩展与 Scratch 不兼容。 用它制作的作品不能上传到 Scratch 网站。 您确定要启用它吗?","tw.createdBy":"作者:","tw.customCloudServer":"使用自定义云变量服务器:{server}","tw.customExtension.description":"从URL网址、文件或JavaScript源代码加载自定义扩展。","tw.customExtension.name":"自定义扩展","tw.customExtensionModal.file":"文件","tw.customExtensionModal.load":"加载","tw.customExtensionModal.promptFile":"选择扩展的 JavaScript 文件:","tw.customExtensionModal.promptText":"粘贴扩展的 JavaScript 源代码:","tw.customExtensionModal.promptURL":"输入扩展的URL:","tw.customExtensionModal.text":"文本","tw.customExtensionModal.title":"加载自定义扩展","tw.customExtensionModal.trusted":"此扩展将不会运行在沙盒中,因为其来自可信任的来源。","tw.customExtensionModal.unsandboxed":"不使用沙盒运行扩展","tw.customExtensionModal.unsandboxedWarning1":"在没有沙盒的情况下加载扩展是危险的,如果你不知道自己在做什么,就不应该启用它。","tw.customExtensionModal.unsandboxedWarning2":"未被沙盒隔离的扩展可能会使你的项目报错,删除你的设置,盗取你的密码,或造成其他严重后果。{APP_NAME}开发人员不对由此产生的任何问题负责。","tw.customExtensionModal.untrusted":"为了保障安全,加载来自不信任的URL网址的扩展将总是运行在沙盒中。","tw.customReporters.description":"允许自制积木提供返回值。","tw.customReporters.name":"自定义返回值","tw.documentation":"文档","tw.embed.persistent":"如果允许,将自动允许后续同一站点的嵌入内容。","tw.embed.risks":"即使嵌入内容在沙盒中运行,它仍能访问像IP地址或大概位置等设备信息。","tw.embed.title1":"此项目想要在舞台上嵌入 HTML 内容","tw.embed.title2":"此项目想要在舞台上嵌入远程内容","tw.extensionGallery.error":"加载扩展库时出错。 访问 extensions.turbowarp.org 以查找更多扩展。","tw.extensionGallery.loading":"正在加载扩展库……","tw.extensionGallery.more":"要了解有关扩展的更多信息,请访问 extensions.turbowarp.org","tw.extensionGallery.name":"TurboWarp 扩展库","tw.favorite":"收藏","tw.featuredProjectsStudio":"在 Scratch 上查看工作室","tw.feedback":"反馈与漏洞提交","tw.feedbackButton":"TurboWarp 反馈","tw.fetch.title":"此项目想要连接该网站:","tw.fileInput.none":"未选择文件。","tw.fileInput.selected":"选择:{name}","tw.fonts.add":"添加","tw.fonts.custom.file":"从你的电脑中选择一个字体文件","tw.fonts.custom.name":"给字体命名:","tw.fonts.custom1":"从文件添加字体","tw.fonts.custom2":"通常在 Scratch 中不起作用。支持的格式包括:{formats}","tw.fonts.delete":"您确定要删除“{font}”吗?所有矢量造型的该字体将使用备用字体代替。","tw.fonts.fallback":"选择字体加载失败或被删除时的备用字体:","tw.fonts.list":"已安装字体:","tw.fonts.none":"尚未添加字体。","tw.fonts.readError":"读取字体文件失败:{error}","tw.fonts.system":"系统字体","tw.fonts.system.name":"输入电脑中的字体名称。这个字体可能无法对所有人正确显示。","tw.fonts.system1":"添加系统字体","tw.fonts.system2":"可能可以在 Scratch 中运行,但不一定所有人都能正确显示。","tw.fonts.title":"字体","tw.footer.credits":"鸣谢","tw.footer.disclaimer":"TurboWarp 不属于 Scratch、Scratch 团队或 Scratch 基金会。","tw.footer.documentation":"文档","tw.footer.donate":"捐赠","tw.footer.embed":"将作品嵌入到网站","tw.footer.parameters":"网址参数","tw.fps":"{framerate} 帧","tw.geolocate.permission":"如果允许,浏览器可能会提示您允许位置访问","tw.geolocate.title":"项目希望知道您的位置","tw.gui.crashMessage.description":"我们很抱歉,但页面似乎已崩溃。请刷新页面以重试。","tw.gui.defaultProjectTitle":"作品","tw.guiDefaultTitle":"加速运行 Scratch 作品","tw.home.credit":"备注与鸣谢","tw.home.description":"TurboWarp 是一款 Scratch 的修改版,它可以将作品编译成 JavaScript,使其运行速度非常快。试试在上面输入一个 Scratch 官网的作品 ID 或网页链接,或者在下面选择一个特色作品。","tw.home.instructions":"操作说明","tw.input.tooltip":"在这里粘贴一个 Scratch 作品的链接!","tw.interpolationEnabled":"补帧","tw.invalidParameters.clones":"克隆体参数不合法","tw.invalidParameters.fps":"“fps” URL 参数不合法","tw.loadError":"不能加载作品:{error}","tw.loadExtension.embedded":"该项目希望通过以下代码加载一个自定义扩展:","tw.loadExtension.sandboxed":"即使代码在沙盒中运行,它仍能访问像IP地址或大概位置等设备信息。请在继续使用扩展前确保你信任此作者。","tw.loadExtension.unsandboxed":"不使用沙盒运行扩展","tw.loadExtension.unsandboxedWarning":"不使用沙盒加载未知的扩展是十分危险的。这可能使你的项目报错,删除你的设置,盗取你的密码,或造成其他严重后果。{APP_NAME}开发人员不对由此产生的任何问题负责。","tw.loadExtension.url":"该项目想通过此URL网址加载一个自定义扩展:","tw.loader.assets.known":"下载素材中(第 {complete} 个,共 {total} 个)...","tw.loader.assets.unknown":"下载素材中...","tw.loader.data":"下载作品数据中...","tw.loader.generic":"加载作品中...","tw.lockdownMode":"在苹果设备上,你必须禁用{lockdownMode}","tw.lockdownMode2":"锁定模式","tw.menuBar.60off":"关闭 60 帧模式","tw.menuBar.60on":"打开 60 帧模式","tw.menuBar.addons":"插件","tw.menuBar.advanced":"高级","tw.menuBar.changeUsername":"更改用户名","tw.menuBar.cloudOff":"禁用云变量","tw.menuBar.cloudOn":"启用云变量","tw.menuBar.cloudUnavailable":"云变量不可用","tw.menuBar.cloudUnavailableAlert":"无法使用云变量,可能因为切换到编辑器模式了。","tw.menuBar.cloudUnavailableDesktop":"桌面版应用无法使用云变量","tw.menuBar.compileError":"{sprite}:{error}","tw.menuBar.moreSettings":"高级设置","tw.menuBar.newFramerate":"帧率:","tw.menuBar.newWindow":"新窗口","tw.menuBar.package":"打包作品","tw.menuBar.reportError1":"一些脚本不能被编译。","tw.menuBar.reportError2":"这是一个漏洞,请将它报告给开发团队。 ","tw.menuBar.restorePoints":"还原点","tw.menuBar.saveAs":"另存为 {file}","tw.menuBar.seeInside":"转到源代码","tw.mono":"单声道","tw.moreCloud":"了解有关云变量的更多信息","tw.notify.permission":"如果允许,浏览器可能会提醒你启用通知,并自动允许进一步的通知。","tw.notify.title":"该项目希望显示通知。","tw.oldDownload":"保存到文件","tw.opcode.2000":"自从2000年的天数","tw.opcode.mousedown":"鼠标被按下?","tw.opcode.mousex":"鼠标x坐标","tw.opcode.mousey":"鼠标y坐标","tw.openAdvanced":"高级设置","tw.openWindow.dangerous":"该网站未被{APP_NAME}开发人员审核。它可能包含危险或恶意的代码。","tw.openWindow.title":"该项目希望通过此URL网址打开新的窗口或标签页:","tw.paint.alpha":"不透明度","tw.paint.fonts.more":"添加更多字体……","tw.privacy":"隐私政策","tw.recordAudio.permission":"如果允许,浏览器可能会提醒你启用麦克风,并自动允许进一步的访问麦克风。","tw.recordAudio.title":"该项目想通过你的麦克风录入音频。这可能包含文字记录或原始音频。该项目可能会共享这些音频给其他用户或服务器。","tw.recordVideo.permission":"如果允许,浏览器可能会提醒你启用摄像头,并自动允许进一步的访问摄像头。","tw.recordVideo.title":"该项目想从你的摄像头录制视频。该项目可以与其他用户或服务器共享图像。","tw.redirect.dangerous":"该网站未被{APP_NAME}开发人员审核。它可能包含危险或恶意的代码。","tw.redirect.title":"该项目想跳转至此URL网址: ","tw.restorePoints.1minute":"每分钟","tw.restorePoints.assets":"{n} 个素材","tw.restorePoints.confirmDelete":"您确定要删除\\"{projectTitle}\\"吗?这将无法恢复","tw.restorePoints.confirmDeleteAll":"您确定要删除所有还原点吗?这将无法恢复","tw.restorePoints.confirmLoad":"您有未保存的更改。替换现有项目?","tw.restorePoints.deleteAll":"删除全部","tw.restorePoints.description":"{APP_NAME} 会定期在计算机上保存还原点,以便在忘记保存时帮助恢复项目。这是恢复的最后手段。您的计算机可能会随时悄悄删除这些还原点。请勿依赖此功能。","tw.restorePoints.empty":"未找到还原点","tw.restorePoints.error":"加载还原点时出错:{error}","tw.restorePoints.intervalOption":"{time}创建还原点","tw.restorePoints.loading":"加载中……","tw.restorePoints.minutes":"每 {n} 分钟","tw.restorePoints.never":"永不","tw.restorePoints.off":"禁用还原点很危险","tw.restorePoints.size":"预计占用空间: {size}","tw.restorePoints.size2":"多个还原点使用的造型或声音只存储一次。","tw.restorePoints.title":"还原点","tw.sample":"示例作品","tw.saveAs":"另存为","tw.saveTo":"保存到 {file}","tw.scratchUnsafeCloud":"如果你创建这个云变量,作品就会超过 Scratch 的 {number} 个变量的限制,如果你把作品上传到 Scratch,有些变量就不能正常工作。","tw.securityManager.allow":"允许","tw.securityManager.deny":"拒绝","tw.securityManager.title":"扩展安全警告","tw.securityManager.trust":"如果允许,将自动允许后续对同一站点的请求。","tw.securityManager.why":"这将会被用来下载图片或音频,实现多人游戏,访问API,再或者用于恶意目的。这将与网站分享你的IP地址、大概位置和其它可能的数据。","tw.settingsModal.customStageSize":"自定义舞台大小:","tw.settingsModal.customStageSizeHelp":"改变 Scratch 的屏幕大小,原大小为 480x360。例如,将分辨率改为 640x360 可实现宽屏作品。但是很少有大佬能做出适合修改尺寸后能正常运行的作品。","tw.settingsModal.dangerZone":"危险功能","tw.settingsModal.disableCompiler":"不使用编译","tw.settingsModal.disableCompilerHelp":"禁用 TurboWarp 编译器。该选项适合在编辑作品实时更新时使用,否则请勿启用。","tw.settingsModal.featured":"特色","tw.settingsModal.fps":"60 帧(自定义帧率)","tw.settingsModal.fpsHelp":"每秒运行脚本 60 次,而不是 30 次。启用此选项后,大多数作品将无法正常工作。如果是这种情况,您应该尝试在禁用 60 帧模式的情况下使用补帧。{customFramerate}。","tw.settingsModal.fpsHelp.customFramerate":"点击设置 30 或 60 以外的帧率","tw.settingsModal.help":"点击查看帮助","tw.settingsModal.highQualityPen":"高清画笔","tw.settingsModal.highQualityPenHelp":"允许有画笔的作品以更高的分辨率渲染,并且避免编辑器中的一些坐标精度丢失。该功能可能会影响运行性能,且不是所有作品都适合该功能。","tw.settingsModal.infiniteClones":"无限克隆","tw.settingsModal.infiniteClonesHelp":"取消 Scratch 的 300 个克隆体限制。","tw.settingsModal.interpolation":"补帧","tw.settingsModal.interpolationHelp":"通过在角色的运动中插入帧使角色运动看起来更平滑。此功能不应该在 3D、光线追踪、纯画笔作品等运算量大的作品中使用。这会使它们运行得更慢而没有明显的平滑效果。","tw.settingsModal.largeStageWarning":"我们不推荐使用自定义舞台大小!请使用具有相同长宽比的较低尺寸,并让用户开启全屏模式将其放大以匹配显示器来代替它。","tw.settingsModal.removeFencing":"角色可穿过边缘","tw.settingsModal.removeFencingHelp":"允许角色移到屏幕之外,根据需要变大或变小,并使触摸块在屏幕外有效。","tw.settingsModal.removeLimits":"移除限制","tw.settingsModal.removeMiscLimits":"移除其他限制","tw.settingsModal.removeMiscLimitsHelp":"取消音效范围限制和画笔大小限制。","tw.settingsModal.storeProjectOptions":"在作品中保留设置","tw.settingsModal.storeProjectOptionsHelp":"在作品文件中储存已选择的设置,它们会在 TurboWarp 加载作品文件时自动被应用。循环计时器和不使用编译不会被保存。","tw.settingsModal.title":"高级设置","tw.settingsModal.warpTimer":"循环计时器","tw.settingsModal.warpTimerHelp":"让脚本检查它们是否卡在长循环或无限循环中,并以低帧率运行,从而阻止它们卡在循环中。这会解决大多数崩溃,但对性能有很大影响,所以它只在编辑器中默认启用。","tw.soundEditorNotSupported":"浏览器不支持编辑声音","tw.spriteSelectorItem.rename":"重命名","tw.stereo":"双声道","tw.stereoAlert":"编辑多声道音频会将音频转换成单声道!","tw.studioview.authorAttribution":"作者:{author}","tw.studioview.error":"加载下一页作品出错。","tw.studioview.hoverText":"{title} 作者:{author}","tw.tooLarge":"这个音频文件太大了,无法上传到 Scratch。","tw.twExtension.description":"奇怪的块。与 Scratch 不兼容。","tw.twExtension.name":"TurboWarp 积木","tw.unfavorite":"取消收藏","tw.unshared.2":"详见 {link}","tw.unshared.bug":"如果该作品实际上是被分享的,请报告错误。","tw.unshared.cache":"如果该项目是最近共享的,几分钟内可能会出现一些错误。","tw.unshared2.1":"未共享的项目不可见。","tw.usernameModal.help":"此变量将存储在浏览器中。当您与包含云变量的作品交互时,它可能会被记录。","tw.usernameModal.help2":"与有效的 Scratch 帐户不对应的值通常会被云变量服务器拒绝。我们建议保持原样或将其更改为您的 Scratch 用户名。","tw.usernameModal.mustChange":"抱歉,云变量服务器认为您的用户名可能不合适。请把它改成别的或 {resetIt}。","tw.usernameModal.mustChange.resetIt":"重置(推荐)","tw.usernameModal.new":"用户名:","tw.usernameModal.reset":"重置","tw.usernameModal.title":"更改用户名","tw.usesCloudVariables":"本项目使用云变量","tw.usesCloudVariables2":"{APP_NAME} 的云变量与 Scratch 的云变量没有关联。任何人都可以把自己的用户名 {changeTheirUsername} 改成任何东西,所以要小心冒名顶替","tw.usesCloudVariables2.change":"更改用户名","tw.viewFeaturedProjects":"点击以查看特色作品。","tw.viewOnScratch":"在 Scratch 网站上查看作品","tw.webglModal.link":"不支持 WebGL"},"zh-tw":{"tw.backpack.rename":"新名稱:","tw.blocks.addons":"擴充功能","tw.blocks.buttonIsDown":"[MOUSE_BUTTON] 被按下?","tw.blocks.lastKeyPressed":"上一次按下的按鍵","tw.blocks.mouseButton.middle":"(1)中鍵","tw.blocks.mouseButton.primary":"(0)左鍵","tw.blocks.mouseButton.secondary":"(2)右鍵","tw.blocks.openDocs":"開啟文檔","tw.browserModal.desc":"請確保你使用的是最新版本的 Chrome、Firefox、Edge 或 Safari。","tw.code":"原始碼","tw.customExtensionModal.file":"檔案","tw.featuredProjectsStudio":"在 Scratch 查看該創作坊","tw.feedback":"回報建議及錯誤","tw.feedbackButton":"TurboWarp 回饋","tw.footer.credits":"感謝","tw.footer.disclaimer":"TurboWarp 並不隸屬於 Scratch、Scratch 團隊或 Scratch 基金會。","tw.footer.embed":"嵌入","tw.footer.parameters":"網址參數","tw.guiDefaultTitle":"使 Scratch 專案跑得更快","tw.home.credit":"備註與謝誌","tw.home.instructions":"操作說明","tw.input.tooltip":"把 Scratch 專案連結貼在這裡!","tw.interpolationEnabled":"運動補償","tw.invalidParameters.clones":"無效的「分身」網址參數","tw.invalidParameters.fps":"無效的「影格率」網址參數","tw.loadError":"不能夠加載作品:{error}","tw.loader.assets.known":"下載素材中({complete}/{total})……","tw.loader.assets.unknown":"下載素材中……","tw.loader.data":"下載專案資料中……","tw.loader.generic":"載入專案中……","tw.menuBar.60off":"關閉 60 FPS模式","tw.menuBar.60on":"開啟 60 FPS模式","tw.menuBar.addons":"擴充功能","tw.menuBar.advanced":"進階","tw.menuBar.changeUsername":"更改用戶名稱","tw.menuBar.cloudOff":"禁用雲端變數","tw.menuBar.cloudOn":"啟用雲端變數","tw.menuBar.cloudUnavailable":"雲端變數不可用","tw.menuBar.compileError":"{sprite}:{error}","tw.menuBar.moreSettings":"進階設定","tw.menuBar.reportError1":"某些程式可能沒被編譯。","tw.menuBar.reportError2":"這是個錯誤,請回報。","tw.menuBar.saveAs":"儲存為 {file}","tw.menuBar.seeInside":"切換到程式頁面","tw.oldDownload":"存儲為獨立文件…","tw.paint.alpha":"不透明度","tw.privacy":"隱私權政策","tw.saveAs":"另存為…","tw.saveTo":"存儲為{file}","tw.settingsModal.customStageSize":"自訂舞臺大小:","tw.settingsModal.customStageSizeHelp":"更改 Scratch 的舞臺大小。你可以試試 640×360,比例會變成 16:9。僅有極少數的專案能在更改後正常運行。","tw.settingsModal.dangerZone":"危險","tw.settingsModal.disableCompiler":"停用編譯器","tw.settingsModal.disableCompilerHelp":"停用 TurboWarp 編譯器。請不要勾選此選項,除你欲使程式立即更新。","tw.settingsModal.featured":"精選","tw.settingsModal.fps":"60 FPS(自訂影格率)","tw.settingsModal.fpsHelp":"程式運行速度從每秒 30 次改為每秒 60 次,大多數專案都會無法正常運行,你應該試試運動補償。{customFramerate}。","tw.settingsModal.fpsHelp.customFramerate":"使用30或60以外的其他影格率","tw.settingsModal.help":"點擊查看幫助","tw.settingsModal.highQualityPen":"高品質畫筆","tw.settingsModal.highQualityPenHelp":"使畫筆精度提高,並在編輯器中關閉坐標四捨五入。不是所有專案都適合,且可能影響性能。","tw.settingsModal.infiniteClones":"無限分身","tw.settingsModal.infiniteClonesHelp":"移除 300 分身限制。","tw.settingsModal.interpolation":"運動補償","tw.settingsModal.interpolationHelp":"在角色移動中進行運動補償以提升流暢度。你不該在 3D 專案、光線追蹤專案、畫筆專案或運算量大的專案啟用它,不僅效果低下,還會影響效能。","tw.settingsModal.largeStageWarning":"不建議把舞臺調得這麼大!你應當使用同比例但較小的舞臺並讓用戶以全螢幕運行。","tw.settingsModal.removeFencing":"移除屏障","tw.settingsModal.removeLimits":"移除限制","tw.settingsModal.removeMiscLimits":"移除各類限制","tw.settingsModal.removeMiscLimitsHelp":"移除音效效果限制及畫筆大小限制。","tw.settingsModal.storeProjectOptions":"將設定存至專案內","tw.settingsModal.title":"進階設定","tw.settingsModal.warpTimer":"防卡死","tw.settingsModal.warpTimerHelp":"程式卡在迴圈裡時會以低幀率運行,以防止卡死。這可以防止崩潰,但會影響性能,僅在編輯器預設啟用。","tw.spriteSelectorItem.rename":"重新命名","tw.studioview.authorAttribution":"作者:{author}","tw.studioview.hoverText":"{title},作者:{author}","tw.twExtension.name":"TurboWarp積木塊","tw.usernameModal.reset":"重設","tw.usernameModal.title":"更改用戶名稱","tw.viewFeaturedProjects":"瀏覽精選專案","tw.viewOnScratch":"在 Scratch 查看該作品"}}')},,,,,,function(e,t,n){var a=n(1445);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1455);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1475);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1481);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1483);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/b8f0b40efdf6eafc02c3f894a5941818.svg"},function(e,t,n){var a=n(1490);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1491);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/422b48c2206d5240a6717c92496ba21a.svg"},function(e,t,n){var a=n(1558);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1564);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1565);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/664d94e5cb8676c780c74c695f2e972c.svg"},function(e,t,n){e.exports=n.p+"static/assets/5dbf111a76a93a93613ec81c16dfc6d3.svg"},function(e,t,n){var a=n(1577);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/a80790c977586cc0595b5fe2f0bcb39a.svg"},function(e,t,n){e.exports=n.p+"static/assets/33592a76d0d0fdaa4a32b2ea41db5e16.svg"},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";function a(e){const t=atob(e.split(",")[1]),n=e.split(",")[0].split(":")[1].split(";")[0],a=new ArrayBuffer(t.length),o=new Uint8Array(a);for(let e=0;e\n \x3c!-- Exported by Scratch - http://scratch.mit.edu/ --\x3e\n'},function(e,t){e.exports='\n \x3c!-- This icon is based on Twemoji https://twemoji.twitter.com/ --\x3e\n \x3c!-- License: CC-BY 4.0 https://creativecommons.org/licenses/by/4.0/ --\x3e\n \n \n \n \n \n \n \n \n \n'},function(e,t){e.exports='The project you tried to load does not exist.'},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){var a=n(1371);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/dd98971c2c185caf86144b6b5234d0fa.svg"},function(e,t,n){e.exports=n.p+"static/assets/ee54d776d2cda9a3c537ac7e8f144037.svg"},function(e,t,n){e.exports=n.p+"static/assets/4b6100c9f591be6470cdfd4697de0b54.svg"},function(e,t,n){e.exports=n.p+"static/assets/df6a71244d4727d19c5a78d71677d2a6.svg"},function(e,t,n){e.exports=n.p+"static/assets/a4d91e3b83e7cbccaf4a4e2322b873f5.svg"},function(e,t,n){e.exports=n.p+"static/assets/dfe35552790fb5ff38c78a43f5e62f30.svg"},function(e,t,n){e.exports=n.p+"static/assets/1bb0adb555e07593962e9fc28ec7566d.svg"},function(e,t,n){e.exports=n.p+"static/assets/f626ffd60cbd3c60f33ea09f1ad32092.svg"},function(e,t,n){e.exports=n.p+"static/assets/754c9f67512f29d9f799744146cc38ee.svg"},function(e,t,n){var a=n(1448);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/5e460dab4dfda0fe34f93d3faf95b778.svg"},function(e,t,n){e.exports=n.p+"static/assets/c8481ea8e104d4d2bb6b340e0c90da26.svg"},function(e,t,n){var a=n(1452);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/10811a978de201353d564df7ba1ddb58.svg"},function(e,t,n){e.exports=n.p+"static/assets/2a70b21aaaed0619bdfcdec91db1ebe8.svg"},function(e,t,n){e.exports=n.p+"static/assets/8beb9da10f72d02b48baf0b24ac72449.svg"},function(e,t,n){e.exports=n.p+"static/assets/a5787bb7364d8131ed49a8f53037d7f4.svg"},,function(e,t,n){e.exports=n.p+"static/assets/44e4859e354c81d66c73f741df2e5ec7.svg"},function(e,t,n){e.exports=n.p+"static/assets/c9528ee4be1a12380a6c9caf73bd99e9.svg"},function(e,t,n){e.exports=n.p+"static/assets/9cc1e7a12b63848899055ddc982ab2ce.svg"},function(e,t,n){e.exports=n.p+"static/assets/57593d3aac258d2c0abf75a0b8ecbdaa.svg"},function(e,t,n){e.exports=n.p+"static/assets/143a9041098d0e0724ed22c89e6558cc.svg"},function(e,t,n){e.exports=n.p+"static/assets/0dd03e5061d2865c0e8ac50cc75e9982.svg"},function(e,t,n){e.exports=n.p+"static/assets/8ea23814ef4f6dc9f86859a028377a3a.svg"},function(e,t,n){e.exports=n.p+"static/assets/38a70367a21e2f1fb15aa59b7d367450.svg"},function(e,t,n){e.exports=n.p+"static/assets/9ddae4f6c1aeaf0784007203d9d4ac9c.svg"},function(e,t,n){e.exports=n.p+"static/assets/c80022cd3424a0dc9635de89433cf08e.svg"},function(e,t,n){e.exports=n.p+"static/assets/e214dc66bba3d014deaa931a2be33f53.svg"},,,function(e,t,n){e.exports=n.p+"static/assets/385aa4b73a425883b4f9e91501a52299.svg"},function(e,t,n){e.exports=n.p+"static/assets/63e5827c1506216bd7c9927a4e5eb558.svg"},function(e,t,n){e.exports=n.p+"static/assets/53ef96392ac2a92361884783808a02c9.svg"},function(e,t,n){e.exports=n.p+"static/assets/9cfdd378e4cc977fe663ca932e530ec6.svg"},function(e,t,n){e.exports=n.p+"static/assets/35c6867250ec4f430624bc9e2e7072d7.svg"},function(e,t,n){e.exports=n.p+"static/assets/993a0700d8a0972d309307b0a4688ed7.svg"},function(e,t,n){e.exports=n.p+"static/assets/21988681fa28c8ce37982ca26463a6f5.svg"},function(e,t,n){e.exports=n.p+"static/assets/26255153f92ea41df149a58d3c3fe2cf.svg"},function(e,t,n){e.exports=n.p+"static/assets/d889a872f3b0985b28fa872764172ef1.svg"},function(e,t,n){e.exports=n.p+"static/assets/b5257afbe4bcf7953029ddb8f18b24fe.svg"},function(e,t,n){e.exports=n.p+"static/assets/481fbac64b59203d7ddffa564a7537d8.svg"},function(e,t,n){e.exports=n.p+"static/assets/f231056019ffe328e58432393f6102c5.svg"},function(e,t,n){e.exports=n.p+"static/assets/82605c2ddff77109d8fafc0e4cf997ed.svg"},function(e,t,n){e.exports=n.p+"static/assets/8279ce395d0333b880b8be6d243fd111.svg"},function(e,t,n){e.exports=n.p+"static/assets/424371873bc8df88d6a305d8727157ab.svg"},function(e,t,n){e.exports=n.p+"static/assets/b2c44c738c9cbc1a99cd6edfd0c2b85b.svg"},function(e,t,n){e.exports=n.p+"static/assets/3547fa1f2678a483a19f46852f36b426.svg"},function(e,t,n){e.exports=n.p+"static/assets/199f58b4a80fa56c5d8e032d6da5e9c2.svg"},function(e,t,n){e.exports=n.p+"static/assets/fb3f9fa9be421f5153cd0223c3b0cb87.svg"},function(e,t,n){e.exports=n.p+"static/assets/fe5afd6776eac0f7724b132a9ff5057d.svg"},function(e,t,n){e.exports=n.p+"static/assets/f22d5ea0ef6a46b2a4a174fed722c396.svg"},function(e,t,n){e.exports=n.p+"static/assets/42428924171999cebe3efd5e70b7bc53.svg"},function(e,t,n){e.exports=n.p+"static/assets/e21225ab4b675bc61eed30cfb510c288.svg"},function(e,t,n){e.exports=n.p+"static/assets/193be3815628fb3d90d4d636a0e97f3a.svg"},function(e,t,n){e.exports=n.p+"static/assets/516274ebe91f61197ef4c62d1dc2024a.svg"},function(e,t,n){e.exports=n.p+"static/assets/5306d1506a03db52b6f918de4c809ca7.svg"},function(e,t,n){e.exports=n.p+"static/assets/f0f9f818bc9fff5dc6f30f34cb1cc156.svg"},function(e,t,n){e.exports=n.p+"static/assets/7bd7487b704797cb5ab3cb441486ea70.svg"},function(e,t,n){e.exports=n.p+"static/assets/582b9f12ce60392a8ef736c5dfabb4ce.svg"},function(e,t,n){var a=n(1489);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/36fcc7dbca20720abcab01e49d4955f9.svg"},function(e,t,n){e.exports=n.p+"static/assets/f2457825850317e66ef2128504613c30.svg"},function(e,t,n){var a=n(1494);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/2d96b207399b06aa8fd389bb44cfbdb4.svg"},function(e,t,n){e.exports=n.p+"static/assets/2e2faaf5753ac5ae1df6153ea2daf683.svg"},function(e,t,n){e.exports=n.p+"static/assets/dd55f4c6c20f5d25e520b6f5bfb090c5.svg"},function(e,t,n){e.exports=n.p+"static/assets/05e9c069d478b9e056e35f04e7dedf64.svg"},function(e,t,n){var a=n(1496);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},,,,,function(e,t,n){e.exports=n.p+"static/assets/27f90bfa982840e56c3ad207561193fa.svg"},function(e,t,n){var a=n(1560);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/4da38973d5ffd15c54e80894d430288c.svg"},function(e,t,n){e.exports=n.p+"static/assets/bbbd98ae6a34eac772e34a57aaa5f977.svg"},function(e,t,n){e.exports=n.p+"static/assets/f9dce53613d5f85b311ce9f84423c08b.svg"},function(e,t,n){e.exports=n.p+"static/assets/ce5820b006d753e4133f46ae776f4d96.svg"},function(e,t,n){e.exports=n.p+"static/assets/97926439955086f8ee4aabbd81580f17.png"},function(e,t,n){e.exports=n.p+"static/assets/3e83d9d800459175308f0b45b117af16.png"},function(e,t,n){var a=n(1567);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1569);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1570);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1573);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/f8ff5dbef05bc3337cd3660fb956cffa.svg"},function(e,t,n){e.exports=n.p+"static/assets/1319094a51748798730f01d1dc0972ac.svg"},function(e,t,n){e.exports=n.p+"static/assets/74546102be38f592d24b4330a16a8639.svg"},function(e,t,n){e.exports=n.p+"static/assets/90e939d170002c61a50116ed55763b19.svg"},function(e,t,n){e.exports=n.p+"static/assets/8bcd9c00e30a0af9d832735651fd9643.svg"},function(e,t,n){var a=n(1578);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/89a5687599f173f2b910aa5fcd862b42.svg"},function(e,t,n){e.exports=n.p+"static/assets/76121b7f4eff7d7ca0d49a45479d3f3f.svg"},function(e,t,n){e.exports=n.p+"static/assets/04e28ba12fe914cf4f131dcb85ae82d6.svg"},function(e,t,n){e.exports=n.p+"static/assets/a3e689235188ba10c5cfd75730cb88a7.svg"},function(e,t,n){var a=n(1583);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/71655cde34ae75f48cb8820abf4b31e7.svg"},function(e,t,n){e.exports=n.p+"static/assets/8b8f2d052b4092ec47ad66c30c8b1642.svg"},function(e,t,n){e.exports=n.p+"static/assets/05e05756b592740a3670417b4df19ca9.svg"},function(e,t,n){var a=n(1589);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1595);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1596);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){var a=n(1598);"string"==typeof a&&(a=[[e.i,a,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(10)(a,o);a.locals&&(e.exports=a.locals)},function(e,t,n){e.exports=n.p+"static/assets/870d942b2502550f58b9eab7561f42ec.svg"},function(e,t,n){e.exports=n.p+"static/assets/d71c0379472f709318ef81ff0dccf7d5.svg"},function(e,t,n){e.exports=n.p+"static/assets/01011831acb632804df035321ff68afe.svg"},function(e,t,n){e.exports=n.p+"static/assets/5f4208a6b7257c456c018d57efc8a7e9.svg"},function(e,t,n){e.exports=n.p+"static/assets/5f85a3e5a04dd3de4271589dac82d45b.svg"},function(e,t,n){e.exports=n.p+"static/assets/afc646fe671f2f43cf0deb3f2247b8bf.svg"},function(e,t,n){e.exports=n.p+"static/assets/2ede3b1977411d39f0cc8ba0a973e25c.svg"},,,,,,,,,function(e,t,n){0},,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t){},,,,,,function(e,t){},,,,,,,,,,,,,,,,,,,,,,,,,function(e,t){},,function(e,t){},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t){},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){e.exports=n.p+"static/assets/9ec3449723269a806ec6eaba0f8f6cef.ttf"},function(e,t,n){e.exports=n.p+"static/assets/8996930d8e83f63cc3341172205df460.otf"},function(e,t,n){e.exports=n.p+"static/assets/64bcfe1f13fce38e2ea26280157ff2ce.ttf"},function(e,t,n){e.exports=n.p+"static/assets/3682b35e452a7f4a5a61167d1632e24a.ttf"},function(e,t,n){e.exports=n.p+"static/assets/eb64e706eb7a3b324ba50d3279a980b1.ttf"},function(e,t,n){e.exports=n.p+"static/assets/87a3a62c0627e925b92d3ede2f62b04f.ttf"},function(e,t,n){e.exports=n.p+"static/assets/bbc0dd79717bfa338a199bb26cdd780b.ttf"},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t){},,function(e,t){},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".box_box_2jjDp {\n}\n",""]),t.locals={box:"box_box_2jjDp"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ body {\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n} h2 {\n font-size: 1.5rem;\n font-weight: bold;\n} p {\n font-size: 1rem;\n line-height: 1.5em;\n} .crash-message_crash-wrapper_25B61 {\n background-color: hsla(0, 100%, 65%, 1);\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n} [theme="dark"] .crash-message_crash-wrapper_25B61 {\n background-color: #333;\n} .crash-message_body_1q0lu {\n width: 50%;\n color: white;\n text-align: center;\n} .crash-message_reloadButton_FoS7x {\n border: 1px solid hsla(0, 100%, 65%, 1);\n border-radius: 0.25rem;\n padding: 0.5rem 2rem;\n background: white;\n color: hsla(0, 100%, 65%, 1);\n font-weight: bold;\n font-size: 0.875rem;\n cursor: pointer;\n} .crash-message_header_1tEXc {\n font-size: 1.5em;\n font-weight: bold;\n} .crash-message_error-message_1pX4X {\n font-family: monospace;\n}\n',""]),t.locals={"crash-wrapper":"crash-message_crash-wrapper_25B61",crashWrapper:"crash-message_crash-wrapper_25B61",body:"crash-message_body_1q0lu",reloadButton:"crash-message_reloadButton_FoS7x",header:"crash-message_header_1tEXc","error-message":"crash-message_error-message_1pX4X",errorMessage:"crash-message_error-message_1pX4X"}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n.button_outlined-button_1bS__ {\n cursor: pointer;\n border-radius: calc(0.5rem / 2);\n font-weight: bold;\n display: flex;\n flex-direction: row;\n align-items: center;\n padding-left: .75rem;\n padding-right: .75rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.button_icon_77d8G {\n height: 1.5rem;\n}\n\n[dir="ltr"] .button_icon_77d8G {\n margin-right: .5rem;\n}\n\n[dir="rtl"] .button_icon_77d8G {\n margin-left: .5rem;\n}\n\n.button_content_3jdgj {\n white-space: nowrap;\n}\n',""]),t.locals={"outlined-button":"button_outlined-button_1bS__",outlinedButton:"button_outlined-button_1bS__",icon:"button_icon_77d8G",content:"button_content_3jdgj"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .close-button_close-button_lOp2G {\n display: flex;\n align-items: center;\n justify-content: center;\n\n overflow: hidden; /* Mask the icon animation */\n background-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 50%;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: pointer;\n transition: all 0.15s ease-out;\n} .close-button_close-button_lOp2G.close-button_large_2oadS:hover {\n transform: scale(1.1, 1.1);\n box-shadow: 0 0 0 4px var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} .close-button_close-button_lOp2G.close-button_large_2oadS.close-button_orange_3I0rs:hover {\n transform: scale(1.1, 1.1);\n box-shadow: 0px 0px 0px 4px hsla(29, 100%, 54%, 0.2);\n} .close-button_small_3BsRW {\n width: 0.825rem;\n height: 0.825rem;\n background-color: hsla(0, 100%, 65%, 1);\n color: hsla(0, 100%, 100%, 1);\n} .close-button_large_2oadS {\n width: 1.75rem;\n height: 1.75rem;\n box-shadow: 0 0 0 2px var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} .close-button_large_2oadS.close-button_orange_3I0rs {\n background-color: hsla(29, 100%, 54%, 0.2);\n box-shadow: 0px 0px 0px 2px hsla(29, 100%, 54%, 0.2);\n} .close-button_close-icon_HBCuO {\n position: relative;\n margin: 0.25rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n transform-origin: 50%;\n transform: rotate(45deg);\n} .close-button_close-icon_HBCuO.close-button_orange_3I0rs {\n transform: rotate(45deg);\n transform: scale(1.4);\n} .close-button_small_3BsRW .close-button_close-icon_HBCuO {\n width: 50%;\n} .close-button_large_2oadS .close-button_close-icon_HBCuO {\n width: 0.75rem;\n height: 0.75rem;\n} .close-button_back-icon_tlcJm {\n position: relative;\n margin: 0.25rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n} .close-button_small_3BsRW .close-button_back-icon_tlcJm {\n width: 50%;\n} .close-button_large_2oadS .close-button_back-icon_tlcJm {\n width: 2rem;\n height: 2rem;\n}\n',""]),t.locals={"close-button":"close-button_close-button_lOp2G",closeButton:"close-button_close-button_lOp2G",large:"close-button_large_2oadS",orange:"close-button_orange_3I0rs",small:"close-button_small_3BsRW","close-icon":"close-button_close-icon_HBCuO",closeIcon:"close-button_close-icon_HBCuO","back-icon":"close-button_back-icon_tlcJm",backIcon:"close-button_back-icon_tlcJm"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ /*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/ /* Toolbox z-index: 40; set in scratch-blocks */ /* tooltips should go over add buttons if they overlap */ /* monitors go over add buttons */ /* "ask" block text input goes above monitors */ /* menu-bar should go over monitors, alerts and tutorials */ /* tw: show below menu bar normally */ /* Block drag z-index: 1000; default 50 is overriden in blocks.css */ /* so it is draggable into other panes */ /* in most interfaces, the context menu is always on top */ .modal_modal-overlay_1Lcbx {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 510;\n background-color: var(--ui-modal-overlay, hsla(0, 100%, 65%, 0.9));\n} .modal_modal-content_1h3ll * {\n box-sizing: border-box;\n} .modal_modal-content_1h3ll {\n margin: 100px auto;\n outline: none;\n border: 4px solid hsla(0, 100%, 100%, 0.25);\n padding: 0;\n border-radius: 0.5rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n color: hsla(225, 15%, 40%, 1);\n overflow: hidden;\n} .modal_modal-content_1h3ll.modal_full-screen_FA4cr {\n position: absolute;\n\n display: flex;\n height: 100%;\n width: 100%;\n\n overflow-y: auto;\n -webkit-overflow-scrolling: \'touch\';\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n background-color: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n\n /* Default modal resets */\n margin: 0;\n border: none;\n border-radius: 0;\n} /*\n Modal header has 3 items:\n |filter title x|\n\n Use the same width for both side item containers,\n so that title remains centered\n*/ .modal_header_1h7ps {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n height: 3.125rem;\n\n box-sizing: border-box;\n width: 100%;\n background-color: hsla(0, 100%, 65%, 1);\n \n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n} [theme="dark"] .modal_header_1h7ps {\n background-color: #333;\n} [theme="dark"] .modal_full-screen_FA4cr .modal_header_1h7ps {\n background-color: hsla(0, 100%, 65%, 1);\n} .modal_header-item_2zQTd {\n display: flex;\n align-items: center;\n padding: 1rem;\n text-decoration: none;\n color: hsla(0, 100%, 100%, 1);\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n} [dir="ltr"] .modal_header-image_2KMDd {\n margin-right: 0.5rem;\n} [dir="rtl"] .modal_header-image_2KMDd {\n margin-left: 0.5rem;\n} .modal_header-item-filter_3W-ah {\n display: flex;\n flex-basis: 20rem;\n justify-content: flex-start;\n} .modal_header-item-title_tLOU5 {\n flex-grow: 1;\n flex-shrink: 0;\n justify-content: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n letter-spacing: 0.4px;\n cursor: default;\n} [dir="ltr"] .modal_header-item-title_tLOU5 {\n margin: 0 -20rem 0 0;\n} [dir="rtl"] .modal_header-item-title_tLOU5 {\n margin: 0 0 0 -20rem;\n} .modal_full-screen_FA4cr [dir="ltr"] .modal_header-item-title_tLOU5 {\n margin: 0 0 0 -20rem;\n} .modal_full-screen_FA4cr [dir="rtl"] .modal_header-item-title_tLOU5 {\n margin: 0 -20rem 0 0;\n} .modal_header-item-close_2XDeL {\n flex-basis: 20rem;\n justify-content: flex-end;\n z-index: 1;\n} .modal_full-screen_FA4cr .modal_header-item-close_2XDeL {\n order: -1;\n justify-content: flex-start;\n} .modal_back-button_2ej6v {\n font-weight: normal;\n padding-right: 0;\n padding-left: 0;\n} [dir="rtl"] .modal_back-button_2ej6v img {\n transform: scaleX(-1);\n} .modal_header-item-help_UZFrJ {\n padding: 0;\n z-index: 1;\n} [dir="ltr"] .modal_header-item-help_UZFrJ {\n margin-right: -4.75rem;\n} [dir="rtl"] .modal_header-item-help_UZFrJ {\n margin-left: -4.75rem;\n} .modal_help-button_dLhZu {\n font-weight: normal;\n font-size: 0.75rem;\n} [dir="ltr"] .modal_help-button_dLhZu {\n padding-right: 0;\n} [dir="rtl"] .modal_help-button_dLhZu {\n padding-left: 0;\n}\n',""]),t.locals={"modal-overlay":"modal_modal-overlay_1Lcbx",modalOverlay:"modal_modal-overlay_1Lcbx","modal-content":"modal_modal-content_1h3ll",modalContent:"modal_modal-content_1h3ll","full-screen":"modal_full-screen_FA4cr",fullScreen:"modal_full-screen_FA4cr",header:"modal_header_1h7ps","header-item":"modal_header-item_2zQTd",headerItem:"modal_header-item_2zQTd","header-image":"modal_header-image_2KMDd",headerImage:"modal_header-image_2KMDd","header-item-filter":"modal_header-item-filter_3W-ah",headerItemFilter:"modal_header-item-filter_3W-ah","header-item-title":"modal_header-item-title_tLOU5",headerItemTitle:"modal_header-item-title_tLOU5","header-item-close":"modal_header-item-close_2XDeL",headerItemClose:"modal_header-item-close_2XDeL","back-button":"modal_back-button_2ej6v",backButton:"modal_back-button_2ej6v","header-item-help":"modal_header-item-help_UZFrJ",headerItemHelp:"modal_header-item-help_UZFrJ","help-button":"modal_help-button_dLhZu",helpButton:"modal_help-button_dLhZu"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .prompt_modal-content_1BfWj {\n width: 360px;\n} .prompt_body_18Z-I {\n background: hsla(0, 100%, 100%, 1);\n padding: 1.5rem 2.25rem;\n} [theme="dark"] .prompt_body_18Z-I {\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} .prompt_body_18Z-I input[type="checkbox"],\n.prompt_body_18Z-I input[type="radio"] {\n margin: 3px;\n} .prompt_label_tWjYZ {\n font-weight: 500;\n margin: 0 0 0.75rem;\n} .prompt_disabled-label_3Y-7h {\n opacity: 0.5;\n} .prompt_variable-name-text-input_1iu8- {\n margin-bottom: 1.5rem;\n width: 100%;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 5px;\n padding: 0 1rem;\n height: 3rem;\n color: hsla(225, 15%, 40%, 0.75);\n font-size: .875rem;\n} [theme="dark"] .prompt_variable-name-text-input_1iu8- {\n background: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n color: white;\n} .prompt_info-message_-WcQL {\n font-weight: normal;\n font-size: .875rem;\n margin-bottom: 1.5rem;\n text-align: center;\n} .prompt_options-row_36JmB {\n display: flex;\n font-weight: normal;\n justify-content: space-between;\n margin-bottom: 1.5rem;\n} .prompt_button-row_3Wc5Z {\n font-weight: bolder;\n text-align: right;\n} .prompt_button-row_3Wc5Z button {\n padding: 0.75rem 1rem;\n border-radius: 0.25rem;\n background: white;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n font-weight: 600;\n font-size: 0.85rem;\n} .prompt_button-row_3Wc5Z button.prompt_ok-button_3QFdD {\n background: hsla(0, 100%, 65%, 1);\n border: hsla(0, 100%, 65%, 1);\n color: white;\n} [dir="ltr"] .prompt_button-row_3Wc5Z button + button {\n margin-left: 0.5rem;\n} [dir="rtl"] .prompt_button-row_3Wc5Z button + button {\n margin-right: 0.5rem;\n} .prompt_cloud-option_1jjSa {\n display:flex;\n border-top: 1px dashed hsla(0, 0%, 0%, .25);\n overflow: visible;\n padding: 1rem 0;\n text-align: center;\n width: 100%;\n margin: 0 auto;\n} [theme="dark"] .prompt_cloud-option_1jjSa {\n border-color: rgba(255, 255, 255, .25);\n} .prompt_cloud-option-text_P1r8J {\n opacity: .5;\n} .prompt_cancel-button_36cPC {\n color: black;\n}\n',""]),t.locals={"modal-content":"prompt_modal-content_1BfWj",modalContent:"prompt_modal-content_1BfWj",body:"prompt_body_18Z-I",label:"prompt_label_tWjYZ","disabled-label":"prompt_disabled-label_3Y-7h",disabledLabel:"prompt_disabled-label_3Y-7h","variable-name-text-input":"prompt_variable-name-text-input_1iu8-",variableNameTextInput:"prompt_variable-name-text-input_1iu8-","info-message":"prompt_info-message_-WcQL",infoMessage:"prompt_info-message_-WcQL","options-row":"prompt_options-row_36JmB",optionsRow:"prompt_options-row_36JmB","button-row":"prompt_button-row_3Wc5Z",buttonRow:"prompt_button-row_3Wc5Z","ok-button":"prompt_ok-button_3QFdD",okButton:"prompt_ok-button_3QFdD","cloud-option":"prompt_cloud-option_1jjSa",cloudOption:"prompt_cloud-option_1jjSa","cloud-option-text":"prompt_cloud-option-text_P1r8J",cloudOptionText:"prompt_cloud-option-text_P1r8J","cancel-button":"prompt_cancel-button_36cPC",cancelButton:"prompt_cancel-button_36cPC"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n/*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/\n\n/* Toolbox z-index: 40; set in scratch-blocks */\n\n/* tooltips should go over add buttons if they overlap */\n\n/* monitors go over add buttons */\n\n/* "ask" block text input goes above monitors */\n\n/* menu-bar should go over monitors, alerts and tutorials */\n\n/* tw: show below menu bar normally */\n\n/* Block drag z-index: 1000; default 50 is overriden in blocks.css */\n\n/* so it is draggable into other panes */\n\n/* in most interfaces, the context menu is always on top */\n\n.blocks_blocks_C530M {\n height: 100%;\n}\n\n.blocks_drag-over_2btTP:after {\n content: \'\';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 0.75;\n background-color: hsla(0, 100%, 77%, 1);\n transition: all 0.25s ease;\n}\n\n.blocks_blocks_C530M .injectionDiv{\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-top-right-radius: 0.5rem;\n border-bottom-right-radius: 0.5rem;\n}\n\n[dir="rtl"] .blocks_blocks_C530M .injectionDiv {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-top-left-radius: 0.5rem;\n border-bottom-left-radius: 0.5rem;\n}\n\n.blocks_blocks_C530M .blocklyMainBackground {\n stroke: none;\n}\n\n.blocks_blocks_C530M .blocklyToolboxDiv {\n border-right: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-bottom: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n box-sizing: content-box;\n height: calc(100% - 3.25rem) !important;\n overflow-x: hidden;\n\n /*\n For now, the layout cannot support scrollbars in the category menu.\n The line below works for Edge, the `::-webkit-scrollbar` line\n below that is for webkit browsers. It isn\'t possible to do the\n same for Firefox, so a different solution may be needed for them.\n */\n -ms-overflow-style: none;\n}\n\n[dir="rtl"] .blocks_blocks_C530M .blocklyToolboxDiv {\n border-right: none;\n border-left: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n\n.blocks_blocks_C530M .blocklyToolboxDiv::-webkit-scrollbar {\n display: none;\n}\n\n.blocks_blocks_C530M .blocklyFlyout {\n border-right: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n box-sizing: content-box;\n}\n\n[dir="rtl"] .blocks_blocks_C530M .blocklyFlyout {\n border-right: none;\n border-left: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n\n.blocks_blocks_C530M .blocklyBlockDragSurface {\n /*\n Fix an issue where the drag surface was preventing hover events for sharing blocks.\n This does not prevent user interaction on the blocks themselves.\n */\n pointer-events: none;\n z-index: 1000; /* make blocks match gui drag layer */\n}\n\n/*\n Shrink category font to fit "My Blocks" for now.\n Probably will need different solutions for language support later, so\n make the change here instead of in scratch-blocks.\n*/\n\n.blocks_blocks_C530M .scratchCategoryMenuItemLabel {\n font-size: 0.65rem;\n}\n\n.blocks_blocks_C530M .blocklyMinimalBody {\n min-width: auto;\n min-height: auto;\n}\n',""]),t.locals={blocks:"blocks_blocks_C530M","drag-over":"blocks_drag-over_2btTP",dragOver:"blocks_drag-over_2btTP"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .play-button_play-button_3MkN- {\n display: flex;\n align-items: center;\n justify-content: center;\n\n overflow: hidden; /* Mask the icon animation */\n width: 2.5rem;\n height: 2.5rem;\n background-color: hsla(300, 53%, 60%, 1);\n color: hsla(0, 100%, 100%, 1);\n border-radius: 50%;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: pointer;\n transition: all 0.15s ease-out;\n} .play-button_play-button_3MkN- {\n position: absolute;\n top: .5rem;\n z-index: auto;\n} .play-button_play-button_3MkN-:focus {\n outline: none;\n} .play-button_play-icon_CX5nH {\n width: 50%;\n} [dir="ltr"] .play-button_play-button_3MkN- {\n right: .5rem;\n} [dir="rtl"] .play-button_play-button_3MkN- {\n left: .5rem;\n}\n',""]),t.locals={"play-button":"play-button_play-button_3MkN-",playButton:"play-button_play-button_3MkN-","play-icon":"play-button_play-icon_CX5nH",playIcon:"play-button_play-icon_CX5nH"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .library-item_library-item_1DcMO {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n flex-basis: 160px;\n position: relative;\n height: 160px;\n max-width: 160px;\n margin: 0.5rem;\n padding: 1rem 1rem 0 1rem;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n background: white;\n border-width: 2px;\n border-style: solid;\n border-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 0.5rem;\n text-align: center;\n cursor: pointer;\n} [theme="dark"] .library-item_library-item_1DcMO {\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} .library-item_library-item-extension_3xus9 {\n align-self: stretch;\n} .library-item_library-item_1DcMO:hover {\n border-width: 2px;\n border-color: hsla(0, 100%, 65%, 1);\n} .library-item_hidden_1ILc7 {\n display: none;\n} .library-item_disabled_1-aDH {\n opacity: .5;\n cursor: auto;\n} .library-item_disabled_1-aDH:hover {\n border-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} .library-item_library-item-image-container-wrapper_x4EWB {\n height: 100px;\n width: 100%;\n position: relative;\n} .library-item_library-item-image-container_3dqjX {\n position: absolute;\n height: 100px;\n width: 100%;\n} .library-item_library-item-inset-image-container_3PLJ1 {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: -2.5rem;\n align-self: flex-start;\n background-color: hsla(163, 85%, 40%, 1);\n width: 3.5rem;\n height: 3.5rem;\n border-radius: 0.5rem;\n border: 0.25rem solid hsla(0, 100%, 100%, 1);\n} [dir="ltr"] .library-item_library-item-inset-image-container_3PLJ1 {\n margin-left: 1rem;\n} [dir="rtl"] .library-item_library-item-inset-image-container_3PLJ1 {\n margin-right: 1rem;\n} .library-item_library-item-image_2bORn {\n max-width: 100%;\n max-height: 100%;\n} .library-item_library-item-inset-image_17Tmt {\n width: 2.5rem;\n} .library-item_library-item-name_2qMXu {\n width: 80%;\n margin: 0.25rem 0;\n text-align: center;\n\n /*\n For truncating overflowing text gracefully\n Min-width is for a bug: https://css-tricks.com/flexbox-truncated-text\n */\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n} .library-item_featured-item_3V2-t {\n flex-basis: 300px;\n max-width: 300px;\n height: auto;\n overflow: hidden;\n padding: 0;\n} .library-item_featured-image-container_1KIHG {\n position: relative;\n width: 100%;\n} .library-item_featured-image_2gwZ6 {\n width: 100%;\n aspect-ratio: 2;\n} .library-item_featured-text_2KFel {\n font-weight: bold;\n padding: 10px;\n /* height: 140px; */\n width: 300px;\n} [dir="ltr"] .library-item_featured-extension-text_22A1k {\n text-align: left;\n padding-left: 1.25rem;\n} [dir="rtl"] .library-item_featured-extension-text_22A1k {\n text-align: right;\n padding-right: 1.25rem;\n} .library-item_featured-description_MjIJw {\n display: block;\n font-weight: normal;\n line-height: 1.375rem;\n padding-top: .3125rem;\n padding-bottom: .25rem;\n} .library-item_featured-extension-metadata_3D8E8 {\n width: 100%;\n padding: 0 1.25rem 1rem 1.25rem;\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n font-size: 12px;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n opacity: 0.75;\n} [dir="ltr"] .library-item_featured-extension-metadata_3D8E8 {\n text-align: left;\n} [dir="rtl"] .library-item_featured-extension-metadata_3D8E8 {\n text-align: right;\n} .library-item_featured-extension-requirement_2u2IO {\n width: 100%;\n display: flex;\n flex-direction: column;\n} .library-item_featured-extension-collaboration_2dGS9 {\n width: 100%;\n display: flex;\n flex-direction: column;\n} .library-item_featured-extension-metadata-detail_1M9BV {\n height: 100%;\n padding-top: 0.4rem;\n font-weight: bold;\n} .library-item_featured-extension-metadata-detail_1M9BV img {\n margin-right: 0.25rem;\n width: 20px;\n height: 20px;\n} .library-item_extension-links_3wgib {\n width: 300px;\n padding: 0 1.25rem 1rem 1.25rem;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n opacity: 0.75;\n text-align: left;\n} .library-item_extension-links_3wgib a {\n color: inherit !important;\n text-decoration: underline;\n} .library-item_coming-soon-text_30OPh {\n position: absolute;\n background-color: hsla(30, 100%, 55%, 1);\n border-radius: 1rem;\n box-shadow: 0 0 .5rem hsla(0, 0%, 0%, .25);\n padding: .5rem 1rem;\n font-size: .875rem;\n font-weight: bold;\n color: hsla(0, 100%, 100%, 1);\n} [dir="ltr"] .library-item_coming-soon-text_30OPh {\n transform: translate(calc(2 * 0.5rem), calc(2 * 0.5rem));\n} [dir="rtl"] .library-item_coming-soon-text_30OPh {\n transform: translate(calc(-2 * 0.5rem), calc(2 * 0.5rem));\n} .library-item_favorite-container_2M2ay {\n display: none;\n background: none;\n border: none;\n padding: 0;\n margin: 0;\n position: absolute;\n top: 0.5rem;\n left: 0.5rem;\n} .library-item_favorite-icon_1ENdX {\n width: 32px;\n height: 32px;\n} .library-item_favorite-container_2M2ay.library-item_active_2mL0e,\n.library-item_library-item_1DcMO:hover .library-item_favorite-container_2M2ay {\n display: block;\n}\n',""]),t.locals={"library-item":"library-item_library-item_1DcMO",libraryItem:"library-item_library-item_1DcMO","library-item-extension":"library-item_library-item-extension_3xus9",libraryItemExtension:"library-item_library-item-extension_3xus9",hidden:"library-item_hidden_1ILc7",disabled:"library-item_disabled_1-aDH","library-item-image-container-wrapper":"library-item_library-item-image-container-wrapper_x4EWB",libraryItemImageContainerWrapper:"library-item_library-item-image-container-wrapper_x4EWB","library-item-image-container":"library-item_library-item-image-container_3dqjX",libraryItemImageContainer:"library-item_library-item-image-container_3dqjX","library-item-inset-image-container":"library-item_library-item-inset-image-container_3PLJ1",libraryItemInsetImageContainer:"library-item_library-item-inset-image-container_3PLJ1","library-item-image":"library-item_library-item-image_2bORn",libraryItemImage:"library-item_library-item-image_2bORn","library-item-inset-image":"library-item_library-item-inset-image_17Tmt",libraryItemInsetImage:"library-item_library-item-inset-image_17Tmt","library-item-name":"library-item_library-item-name_2qMXu",libraryItemName:"library-item_library-item-name_2qMXu","featured-item":"library-item_featured-item_3V2-t",featuredItem:"library-item_featured-item_3V2-t","featured-image-container":"library-item_featured-image-container_1KIHG",featuredImageContainer:"library-item_featured-image-container_1KIHG","featured-image":"library-item_featured-image_2gwZ6",featuredImage:"library-item_featured-image_2gwZ6","featured-text":"library-item_featured-text_2KFel",featuredText:"library-item_featured-text_2KFel","featured-extension-text":"library-item_featured-extension-text_22A1k",featuredExtensionText:"library-item_featured-extension-text_22A1k","featured-description":"library-item_featured-description_MjIJw",featuredDescription:"library-item_featured-description_MjIJw","featured-extension-metadata":"library-item_featured-extension-metadata_3D8E8",featuredExtensionMetadata:"library-item_featured-extension-metadata_3D8E8","featured-extension-requirement":"library-item_featured-extension-requirement_2u2IO",featuredExtensionRequirement:"library-item_featured-extension-requirement_2u2IO","featured-extension-collaboration":"library-item_featured-extension-collaboration_2dGS9",featuredExtensionCollaboration:"library-item_featured-extension-collaboration_2dGS9","featured-extension-metadata-detail":"library-item_featured-extension-metadata-detail_1M9BV",featuredExtensionMetadataDetail:"library-item_featured-extension-metadata-detail_1M9BV","extension-links":"library-item_extension-links_3wgib",extensionLinks:"library-item_extension-links_3wgib","coming-soon-text":"library-item_coming-soon-text_30OPh",comingSoonText:"library-item_coming-soon-text_30OPh","favorite-container":"library-item_favorite-container_2M2ay",favoriteContainer:"library-item_favorite-container_2M2ay","favorite-icon":"library-item_favorite-icon_1ENdX",favoriteIcon:"library-item_favorite-icon_1ENdX",active:"library-item_active_2mL0e"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .divider_divider_1_Adi {\n border-right: 1px dashed var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n",""]),t.locals={divider:"divider_divider_1_Adi"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n.filter_filter_1JFal {\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-grow: 1;\n\n background: hsla(0, 100%, 100%, 1);\n border-radius: 10rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n height: 2.5rem;\n\n position: relative;\n}\n\n[theme="dark"] .filter_filter_1JFal {\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n}\n\n.filter_filter-icon_3Pfaw {\n position: absolute;\n top: 0;\n\n height: 1rem;\n width: 1rem;\n}\n\n[dir="ltr"] .filter_filter-icon_3Pfaw {\n left: 0;\n margin: 0.75rem 0.75rem 0.75rem 1rem;\n}\n\n[dir="rtl"] .filter_filter-icon_3Pfaw {\n right: 0;\n margin: 0.75rem 1rem 0.75rem 0.75rem;\n transform: scaleX(-1);\n}\n\n.filter_filter_1JFal:focus-within {\n box-shadow: 0 0 0 .25rem hsla(0, 100%, 65%, 0.35);\n}\n\n/*\n Hidden state\n*/\n\n.filter_x-icon-wrapper_1rP2w {\n opacity: 0;\n position: absolute;\n top: 0;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n overflow: hidden; /* Mask the icon animation */\n height: 1.25rem;\n width: 1.25rem;\n margin: 0.625rem;\n\n border-radius: 50%;\n pointer-events: none;\n cursor: default;\n transition: opacity 0.05s linear;\n}\n\n[dir="ltr"] .filter_x-icon-wrapper_1rP2w {\n right: 0;\n}\n\n[dir="rtl"] .filter_x-icon-wrapper_1rP2w {\n left: 0;\n}\n\n/*\n Shown state\n*/\n\n.filter_filter_1JFal.filter_is-active_3PvfA .filter_x-icon-wrapper_1rP2w {\n pointer-events: auto;\n cursor: pointer;\n opacity: 1;\n transition: opacity 0.05s linear;\n}\n\n.filter_filter_1JFal.filter_is-active_3PvfA .filter_x-icon-wrapper_1rP2w:hover {\n transform: scale(1.2, 1.2);\n}\n\n/*\n Hidden state\n*/\n\n.filter_x-icon_zjpOg {\n position: relative;\n margin: 0.25rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n transform: translateX(0.5rem);\n transition: transform 0.085s cubic-bezier(0.78, 1, 1, 1);\n}\n\n/*\n Shown state\n*/\n\n.filter_filter_1JFal.filter_is-active_3PvfA .filter_x-icon-wrapper_1rP2w .filter_x-icon_zjpOg {\n transform: translateX(0);\n}\n\n.filter_filter-input_1iiEt {\n flex-grow: 1;\n height: 2.5rem;\n background-color: transparent;\n -webkit-appearance: none;\n outline: none;\n border: 0;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n font-size: 0.75rem;\n letter-spacing: 0.15px;\n cursor: text;\n}\n\n[dir="ltr"] .filter_filter-input_1iiEt {\n padding: .625rem 2rem .625rem 3rem;\n}\n\n[dir="rtl"] .filter_filter-input_1iiEt {\n padding: .625rem 3rem .625rem 2rem;\n}\n\n.filter_filter-input_1iiEt::-ms-input-placeholder {\n opacity: .5;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n font-size: 0.875rem;\n letter-spacing: 0.15px;\n}\n\n.filter_filter-input_1iiEt::placeholder {\n opacity: .5;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n font-size: 0.875rem;\n letter-spacing: 0.15px;\n}\n\n[dir="ltr"] .filter_filter-input_1iiEt::-ms-input-placeholder {\n padding: 0 0 0 0.25rem;\n}\n\n[dir="ltr"] .filter_filter-input_1iiEt::placeholder {\n padding: 0 0 0 0.25rem;\n}\n\n[dir="rtl"] .filter_filter-input_1iiEt::-ms-input-placeholder {\n padding: 0 0.25rem 0 0;\n}\n\n[dir="rtl"] .filter_filter-input_1iiEt::placeholder {\n padding: 0 0.25rem 0 0;\n}\n',""]),t.locals={filter:"filter_filter_1JFal","filter-icon":"filter_filter-icon_3Pfaw",filterIcon:"filter_filter-icon_3Pfaw","x-icon-wrapper":"filter_x-icon-wrapper_1rP2w",xIconWrapper:"filter_x-icon-wrapper_1rP2w","is-active":"filter_is-active_3PvfA",isActive:"filter_is-active_3PvfA","x-icon":"filter_x-icon_zjpOg",xIcon:"filter_x-icon_zjpOg","filter-input":"filter_filter-input_1iiEt",filterInput:"filter_filter-input_1iiEt"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .tag-button_tag-button_nBLRM {\n padding: .625rem 1rem;\n background: hsla(0, 100%, 65%, 1);\n border-radius: 1.375rem;\n color: hsla(0, 100%, 100%, 1);\n height: 2.5rem;\n} .tag-button_tag-button-icon_26hvC {\n max-width: 1rem;\n max-height: 1rem;\n} .tag-button_active_2stEz {\n background: hsla(30, 100%, 55%, 1);\n}\n",""]),t.locals={"tag-button":"tag-button_tag-button_nBLRM",tagButton:"tag-button_tag-button_nBLRM","tag-button-icon":"tag-button_tag-button-icon_26hvC",tagButtonIcon:"tag-button_tag-button-icon_26hvC",active:"tag-button_active_2stEz"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .spinner_spinner_2Op8D {\n width: 1.25rem;\n height: 1.25rem;\n display: inline-block;\n position: relative;\n border-radius: 50%;\n border-width: .1875rem;\n border-style: solid;\n border-color: hsla(0, 100%, 100%, 0.25);\n box-sizing: content-box;\n} .spinner_spinner_2Op8D::before, .spinner_spinner_2Op8D::after {\n width: 1.25rem;\n height: 1.25rem;\n content: '';\n border-radius: 50%;\n display: block;\n} .spinner_spinner_2Op8D::after {\n position: absolute;\n top: -.1875rem;\n left: -.1875rem;\n border: .1875rem solid transparent;\n border-top-color: hsla(0, 100%, 100%, 1);\n animation: spinner_spin_1ge20 1.5s cubic-bezier(0.4, 0.1, 0.4, 1) infinite;\n} .spinner_small_1RsxO {\n width: .5rem;\n height: .5rem;\n} .spinner_small_1RsxO::before, .spinner_small_1RsxO::after {\n width: .5rem;\n height: .5rem;\n} .spinner_large_M0-Ov {\n width: 2.5rem;\n height: 2.5rem;\n} .spinner_large_M0-Ov::before, .spinner_large_M0-Ov::after {\n width: 2.5rem;\n height: 2.5rem;\n} @keyframes spinner_spin_1ge20 {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n} .spinner_spinner_2Op8D.spinner_success_2bEvy {\n border-color: hsla(10, 85%, 65%, 0.35);\n} .spinner_spinner_2Op8D.spinner_success_2bEvy::after {\n border-top-color: hsla(10, 85%, 65%, 1);\n} .spinner_spinner_2Op8D.spinner_warn_3KZAv {\n border-color: hsla(30, 100%, 55%, 0.25);\n} .spinner_spinner_2Op8D.spinner_warn_3KZAv::after {\n border-top-color: hsla(30, 100%, 55%, 1);\n} .spinner_spinner_2Op8D.spinner_info_2g2-l {\n border-color: hsla(0, 100%, 100%, 0.25);\n} .spinner_spinner_2Op8D.spinner_info_2g2-l::after {\n border-top-color: hsla(0, 100%, 100%, 1);\n} .spinner_spinner_2Op8D.spinner_primary_32PLs {\n border-color: hsla(0, 100%, 65%, 0.35);\n} .spinner_spinner_2Op8D.spinner_primary_32PLs::after {\n border-top-color: hsla(0, 100%, 65%, 1);\n}\n",""]),t.locals={spinner:"spinner_spinner_2Op8D",spin:"spinner_spin_1ge20",small:"spinner_small_1RsxO",large:"spinner_large_M0-Ov",success:"spinner_success_2bEvy",warn:"spinner_warn_3KZAv",info:"spinner_info_2g2-l",primary:"spinner_primary_32PLs"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .separator_separator_2qoYo {\n width: 100%;\n border: none;\n border-top: 2px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n margin: 0.5rem 0;\n}\n",""]),t.locals={separator:"separator_separator_2qoYo"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n.library_library-scroll-grid_1jyXm {\n display: flex;\n justify-content: flex-start;\n align-content: flex-start;\n align-items: flex-start;\n background: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n flex-grow: 1;\n flex-wrap: wrap;\n overflow-y: auto;\n height: auto;\n padding: 0.5rem;\n height: calc(100% - 3.125rem);\n}\n\n.library_library-scroll-grid_1jyXm.library_withFilterBar_26Opm {\n height: calc(100% - 3.125rem - 2.5rem - 2rem);\n}\n\n.library_filter-bar_1W0DW {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n height: calc(2.5rem + 2rem); /* padding */\n background-color: hsla(0, 100%, 65%, 0.35);\n padding: 0 1rem;\n font-size: .875rem;\n}\n\n.library_filter-bar-item_99aoX {\n margin-right: .75rem;\n}\n\n.library_filter_2k-oj {\n flex-grow: 0;\n}\n\n.library_filter-input_6w2X2 {\n width: 11.5rem;\n transition: .2s;\n}\n\n.library_filter-input_6w2X2:focus,\n.library_filter-input_6w2X2:not([value=""]) {\n width: 18.75rem;\n}\n\n.library_divider_2xD3D {\n transform: scaleY(1.39);\n height: 2.5rem;\n}\n\n.library_tag-wrapper_2-QEQ {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n height: 2.5rem;\n overflow: hidden;\n}\n\n.library_spinner-wrapper_1C8Ew {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n',""]),t.locals={"library-scroll-grid":"library_library-scroll-grid_1jyXm",libraryScrollGrid:"library_library-scroll-grid_1jyXm",withFilterBar:"library_withFilterBar_26Opm","filter-bar":"library_filter-bar_1W0DW",filterBar:"library_filter-bar_1W0DW","filter-bar-item":"library_filter-bar-item_99aoX",filterBarItem:"library_filter-bar-item_99aoX",filter:"library_filter_2k-oj","filter-input":"library_filter-input_6w2X2",filterInput:"library_filter-input_6w2X2",divider:"library_divider_2xD3D","tag-wrapper":"library_tag-wrapper_2-QEQ",tagWrapper:"library_tag-wrapper_2-QEQ","spinner-wrapper":"library_spinner-wrapper_1C8Ew",spinnerWrapper:"library_spinner-wrapper_1C8Ew"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .custom-procedures_modal-content_Zjko5 {\n width: 700px;\n margin: 50px auto; /* This modal is taller than most, reduce top margin */\n} .custom-procedures_body_SQBv6 {\n background: hsla(0, 100%, 100%, 1);\n padding: 1.5rem 2.25rem;\n} [theme="dark"] .custom-procedures_body_SQBv6 {\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n background: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n} .custom-procedures_body_SQBv6 input[type="checkbox"],\n.custom-procedures_body_SQBv6 input[type="radio"] {\n margin: 3px;\n} /* Blocks workspace for custom procedure declaration editor */ .custom-procedures_workspace_1d2uW {\n min-height: 200px;\n position: relative;\n} .custom-procedures_workspace_1d2uW .injectionDiv{\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n} .custom-procedures_workspace_1d2uW .blocklySvg {\n background-color: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} /* Row of "card" buttons for modifying custom procedures */ .custom-procedures_options-row_1PqLE {\n display: flex;\n justify-content: space-between;\n} .custom-procedures_option-card_BtHt3 {\n background: white;\n border: 2px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 0.5rem;\n padding: calc(0.5rem * 2);\n text-align: center;\n flex-grow: 1;\n cursor: pointer;\n transition: all 0.2s;\n flex-basis: 100px;\n} [theme="dark"] .custom-procedures_option-card_BtHt3 {\n background: var(--ui-tertiary, hsla(215, 50%, 90%, 1));\n} .custom-procedures_option-card_BtHt3:hover {\n border: 2px solid hsla(0, 100%, 65%, 1);\n box-shadow: 0px 0px 0px 4px hsla(0, 100%, 65%, 0.35);\n} .custom-procedures_option-card_BtHt3 + .custom-procedures_option-card_BtHt3 {\n margin-left: 1rem;\n} .custom-procedures_option-icon_2y7hh {\n max-height: 48px;\n margin-bottom: 0.5rem;\n} .custom-procedures_option-title_3v6va {\n font-weight: bold;\n} /* "Run without screen refresh" row */ .custom-procedures_checkbox-row_rPP8j {\n margin-top: 1rem;\n} /* Confirmation buttons at the bottom of the modal */ .custom-procedures_button-row_2jBu3 {\n margin-top: 1rem;\n font-weight: bolder;\n text-align: right;\n} .custom-procedures_button-row_2jBu3 button {\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 0.25rem;\n padding: 0.75rem 1rem;\n background: white;\n font-weight: bold;\n font-size: 0.85rem;\n} .custom-procedures_button-row_2jBu3 button.custom-procedures_ok-button_2X0Vj {\n background: hsla(0, 100%, 65%, 1);\n border: hsla(0, 100%, 65%, 1);\n color: white;\n} [dir="ltr"] .custom-procedures_button-row_2jBu3 button + button {\n margin-left: 0.5rem;\n} [dir="rtl"] .custom-procedures_button-row_2jBu3 button + button {\n margin-right: 0.5rem;\n} .custom-procedures_cancel-button_wlEX9 {\n color: black;\n}\n',""]),t.locals={"modal-content":"custom-procedures_modal-content_Zjko5",modalContent:"custom-procedures_modal-content_Zjko5",body:"custom-procedures_body_SQBv6",workspace:"custom-procedures_workspace_1d2uW","options-row":"custom-procedures_options-row_1PqLE",optionsRow:"custom-procedures_options-row_1PqLE","option-card":"custom-procedures_option-card_BtHt3",optionCard:"custom-procedures_option-card_BtHt3","option-icon":"custom-procedures_option-icon_2y7hh",optionIcon:"custom-procedures_option-icon_2y7hh","option-title":"custom-procedures_option-title_3v6va",optionTitle:"custom-procedures_option-title_3v6va","checkbox-row":"custom-procedures_checkbox-row_rPP8j",checkboxRow:"custom-procedures_checkbox-row_rPP8j","button-row":"custom-procedures_button-row_2jBu3",buttonRow:"custom-procedures_button-row_2jBu3","ok-button":"custom-procedures_ok-button_2X0Vj",okButton:"custom-procedures_ok-button_2X0Vj","cancel-button":"custom-procedures_cancel-button_wlEX9",cancelButton:"custom-procedures_cancel-button_wlEX9"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .spinner_container_2gp3A {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n} .spinner_spinner_3_DJ6 {\n width: 64px;\n height: 64px;\n border-radius: 50%;\n border: 6px solid;\n border-color: hsla(0, 100%, 65%, 1) transparent hsla(0, 100%, 65%, 1) transparent;\n animation: spinner_spinner_3_DJ6 1.2s linear infinite;\n} [theme="dark"] .spinner_spinner_3_DJ6 {\n border-color: #fff transparent #fff transparent;\n} @keyframes spinner_spinner_3_DJ6 {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n',""]),t.locals={container:"spinner_container_2gp3A",spinner:"spinner_spinner_3_DJ6"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ /* wrapper to allow for touch slop if we decide to add it */ .delete-button_delete-button_2Nzko {\n display: flex;\n align-items: center;\n justify-content: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: pointer;\n transition: all 0.15s ease-out;\n} .delete-button_delete-button-visible_kym6v {\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden; /* Mask the icon animation */\n width: 1.75rem;\n height: 1.75rem;\n box-shadow: 0px 0px 0px 2px hsla(0, 100%, 65%, 0.35);\n background-color: hsla(0, 100%, 65%, 1);\n color: hsla(0, 100%, 100%, 1);\n border-radius: 50%;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: pointer;\n transition: all 0.15s ease-out;\n} .delete-button_delete-icon_3b8wH {\n position: relative;\n margin: 0.25rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n transform-origin: 50%;\n}\n',""]),t.locals={"delete-button":"delete-button_delete-button_2Nzko",deleteButton:"delete-button_delete-button_2Nzko","delete-button-visible":"delete-button_delete-button-visible_kym6v",deleteButtonVisible:"delete-button_delete-button-visible_kym6v","delete-icon":"delete-button_delete-icon_3b8wH",deleteIcon:"delete-button_delete-icon_3b8wH"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n/* @todo: refactor this class name, and component: `sprite-selector` to `sprite` */\n\n.sprite-selector-item_sprite-selector-item_kQm-i {\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n position: relative;\n\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-size: 0.8rem;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n border-width: 2px;\n border-style: solid;\n border-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 0.5rem;\n\n text-align: center;\n cursor: pointer;\n\n -webkit-user-select: none;\n\n -moz-user-select: none;\n\n -ms-user-select: none;\n\n user-select: none;\n}\n\n.sprite-selector-item_sprite-selector-item_kQm-i.sprite-selector-item_is-selected_24tQj {\n box-shadow: 0px 0px 0px 4px hsla(0, 100%, 65%, 0.35);\n border: 2px solid hsla(0, 100%, 65%, 1);\n background: hsla(0, 100%, 100%, 1);\n}\n\n[theme="dark"] .sprite-selector-item_sprite-selector-item_kQm-i.sprite-selector-item_is-selected_24tQj {\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n}\n\n.sprite-selector-item_sprite-selector-item_kQm-i:hover {\n border: 2px solid hsla(0, 100%, 65%, 1);\n background: hsla(0, 100%, 100%, 1);\n}\n\n[theme="dark"] .sprite-selector-item_sprite-selector-item_kQm-i:hover {\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n}\n\n.sprite-selector-item_sprite-selector-item_kQm-i:hover .sprite-selector-item_sprite-image_2QWuK, .sprite-selector-item_is-selected_24tQj .sprite-selector-item_sprite-image_2QWuK {\n filter: drop-shadow(0px 0px 2px var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15)));\n}\n\n/* Outer/Inner chicanery is to prevent layouts when sprite image changes */\n\n.sprite-selector-item_sprite-image-outer_Xs0wN {\n position: relative;\n width: 100%;\n height: 100%;\n transform: translateZ(0);\n}\n\n.sprite-selector-item_sprite-image-inner_3oSwi {\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.sprite-selector-item_sprite-image_2QWuK {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n pointer-events: none;\n max-width: 32px;\n max-height: 32px;\n}\n\n.sprite-selector-item_sprite-info_-I0i_ {\n padding: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n\n font-size: 0.625rem;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.sprite-selector-item_sprite-name_1PXjh, .sprite-selector-item_sprite-details_2UVpA {\n /*\n For truncating overflowing text gracefully\n Min-width is for a bug: https://css-tricks.com/flexbox-truncated-text\n */\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n\n.sprite-selector-item_sprite-details_2UVpA {\n margin-top: 0.125rem;\n font-size: 0.5rem;\n}\n\n.sprite-selector-item_is-selected_24tQj .sprite-selector-item_sprite-info_-I0i_ {\n background: hsla(0, 100%, 65%, 1);\n color: hsla(0, 100%, 100%, 1);\n}\n\n.sprite-selector-item_delete-button_1rkFW {\n position: absolute;\n top: -.625rem;\n z-index: auto;\n}\n\n[dir="ltr"] .sprite-selector-item_delete-button_1rkFW {\n right: -.625rem;\n}\n\n[dir="rtl"] .sprite-selector-item_delete-button_1rkFW {\n left: -.625rem;\n}\n\n.sprite-selector-item_number_AnXUk {\n position: absolute;\n top: 0.15rem;\n font-size: 0.625rem;\n font-weight: bold;\n z-index: 2;\n}\n\n[dir="ltr"] .sprite-selector-item_number_AnXUk {\n left: 0.15rem;\n}\n\n[dir="rtl"] .sprite-selector-item_number_AnXUk {\n right: 0.15rem;\n}\n',""]),t.locals={"sprite-selector-item":"sprite-selector-item_sprite-selector-item_kQm-i",spriteSelectorItem:"sprite-selector-item_sprite-selector-item_kQm-i","is-selected":"sprite-selector-item_is-selected_24tQj",isSelected:"sprite-selector-item_is-selected_24tQj","sprite-image":"sprite-selector-item_sprite-image_2QWuK",spriteImage:"sprite-selector-item_sprite-image_2QWuK","sprite-image-outer":"sprite-selector-item_sprite-image-outer_Xs0wN",spriteImageOuter:"sprite-selector-item_sprite-image-outer_Xs0wN","sprite-image-inner":"sprite-selector-item_sprite-image-inner_3oSwi",spriteImageInner:"sprite-selector-item_sprite-image-inner_3oSwi","sprite-info":"sprite-selector-item_sprite-info_-I0i_",spriteInfo:"sprite-selector-item_sprite-info_-I0i_","sprite-name":"sprite-selector-item_sprite-name_1PXjh",spriteName:"sprite-selector-item_sprite-name_1PXjh","sprite-details":"sprite-selector-item_sprite-details_2UVpA",spriteDetails:"sprite-selector-item_sprite-details_2UVpA","delete-button":"sprite-selector-item_delete-button_1rkFW",deleteButton:"sprite-selector-item_delete-button_1rkFW",number:"sprite-selector-item_number_AnXUk"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ /*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/ /* Toolbox z-index: 40; set in scratch-blocks */ /* tooltips should go over add buttons if they overlap */ /* monitors go over add buttons */ /* "ask" block text input goes above monitors */ /* menu-bar should go over monitors, alerts and tutorials */ /* tw: show below menu bar normally */ /* Block drag z-index: 1000; default 50 is overriden in blocks.css */ /* so it is draggable into other panes */ /* in most interfaces, the context menu is always on top */ .context-menu_context-menu_2SJM- {\n min-width: 130px;\n padding: 5px 0; /* The white strip at the top and bottom of the menu */\n margin: 2px 0 0; /* To keep the menu below the cursor comfortably */\n font-size: 0.85rem;\n text-align: left;\n background-color: hsla(0, 100%, 100%, 1);\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: calc(0.5rem / 2);\n box-shadow: 0px 0px 5px 1px hsla(0, 0%, 0%, 0.15);\n pointer-events: none;\n transition: opacity 0.2s ease;\n z-index: 10000;\n} [theme="dark"] .context-menu_context-menu_2SJM- {\n background-color: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} .context-menu_menu-item_3cioN {\n padding: 8px 12px;\n white-space: nowrap;\n cursor: pointer;\n transition: 0.1s ease;\n} .context-menu_menu-item_3cioN:hover {\n background: hsla(0, 100%, 65%, 1);\n color: white;\n} .context-menu_menu-item-bordered_29CJG {\n border-top: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} [theme="dark"] .context-menu_menu-item-bordered_29CJG {\n border-color: var(--ui-tertiary, hsla(215, 50%, 90%, 1));\n} .context-menu_menu-item-danger_1tJg0:hover {\n background: hsla(30, 100%, 55%, 1);\n}\n',""]),t.locals={"context-menu":"context-menu_context-menu_2SJM-",contextMenu:"context-menu_context-menu_2SJM-","menu-item":"context-menu_menu-item_3cioN",menuItem:"context-menu_menu-item_3cioN","menu-item-bordered":"context-menu_menu-item-bordered_29CJG",menuItemBordered:"context-menu_menu-item-bordered_29CJG","menu-item-danger":"context-menu_menu-item-danger_1tJg0",menuItemDanger:"context-menu_menu-item-danger_1tJg0"}},,,,,,,,,,,,function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ /*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/ /* Toolbox z-index: 40; set in scratch-blocks */ /* tooltips should go over add buttons if they overlap */ /* monitors go over add buttons */ /* "ask" block text input goes above monitors */ /* menu-bar should go over monitors, alerts and tutorials */ /* tw: show below menu bar normally */ /* Block drag z-index: 1000; default 50 is overriden in blocks.css */ /* so it is draggable into other panes */ /* in most interfaces, the context menu is always on top */ .action-menu_menu-container_3a6da {\n display: flex;\n flex-direction: column-reverse;\n transition: 0.2s;\n position: relative;\n pointer-events: auto;\n} .action-menu_button_1qbot {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n background: hsla(0, 100%, 65%, 1);\n outline: none;\n border: none;\n transition: background-color 0.2s;\n} button::-moz-focus-inner {\n border: 0;\n} .action-menu_button_1qbot:hover {\n background: hsla(10, 85%, 65%, 1);\n} .action-menu_button_1qbot:active {\n padding: inherit;\n} .action-menu_button_1qbot.action-menu_coming-soon_2URvV:hover {\n background: hsla(30, 100%, 55%, 1);\n} .action-menu_main-button_3ccfy {\n border-radius: 100%;\n width: 2.75rem;\n height: 2.75rem;\n box-shadow: 0 0 0 4px hsla(0, 100%, 65%, 0.35);\n z-index: 46;\n transition: transform, box-shadow 0.5s;\n} .action-menu_main-button_3ccfy:hover {\n transform: scale(1.1);\n box-shadow: 0 0 0 6px hsla(0, 100%, 65%, 0.35);\n} .action-menu_main-icon_1ktMc {\n width: calc(2.75rem - 1rem);\n height: calc(2.75rem - 1rem);\n} [dir="rtl"] .action-menu_main-icon_1ktMc {\n transform: scaleX(-1);\n} .action-menu_more-buttons-outer_3J9yZ {\n /*\n Need to use two divs to set different overflow x/y\n which is needed to get animation to look right while\n allowing the tooltips to be visible.\n */\n overflow-y: hidden;\n\n background: hsla(0, 60%, 50%, 1);\n border-top-left-radius: 2.25rem;\n border-top-right-radius: 2.25rem;\n width: 2.25rem;\n margin-left: calc((2.75rem - 2.25rem) / 2);\n margin-right: calc((2.75rem - 2.25rem) / 2);\n\n position: absolute;\n bottom: calc(2.75rem);\n\n margin-bottom: calc(2.75rem / -2);\n padding-bottom: calc(2.75rem / 2);\n} .action-menu_more-buttons_3Bjkq {\n max-height: 0;\n transition: max-height 1s;\n overflow-x: visible;\n display: flex;\n flex-direction: column;\n z-index: 10; /* @todo justify */\n} .action-menu_file-input_2nOL7 {\n display: none;\n} .action-menu_expanded_JcMKp .action-menu_more-buttons_3Bjkq {\n max-height: 1000px; /* Arbitrary, needs to be a value in order for animation to run */\n} .action-menu_force-hidden_3SRnx .action-menu_more-buttons_3Bjkq {\n display: none; /* This property does not animate */\n} .action-menu_more-buttons_3Bjkq:first-child { /* Round off top button */\n border-top-right-radius: 2.25rem;\n border-top-left-radius: 2.25rem;\n} .action-menu_more-button_1fMGZ {\n width: 2.25rem;\n height: 2.25rem;\n background: hsla(0, 60%, 50%, 1);\n} .action-menu_more-icon_TJUQ7 {\n width: calc(2.25rem - 1rem);\n height: calc(2.25rem - 1rem);\n} .action-menu_coming-soon_2URvV .action-menu_more-icon_TJUQ7 {\n opacity: 0.5;\n} /*\n @todo needs to be refactored with coming soon tooltip overrides.\n The "!important"s are for the same reason as with coming soon, the library\n is not very easy to style.\n*/ .action-menu_tooltip_3Bkh5 {\n background-color: hsla(10, 85%, 65%, 1) !important;\n opacity: 1 !important;\n border: 1px solid hsla(0, 0%, 0%, .1) !important;\n box-shadow: 0 0 .5rem hsla(0, 0%, 0%, .25) !important;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important;\n} .action-menu_tooltip_3Bkh5:after {\n background-color: hsla(10, 85%, 65%, 1);\n} .action-menu_coming-soon-tooltip_3jthM {\n background-color: hsla(30, 100%, 55%, 1) !important;\n} .action-menu_coming-soon-tooltip_3jthM:after {\n background-color: hsla(30, 100%, 55%, 1) !important;\n} .action-menu_tooltip_3Bkh5 {\n border: 1px solid hsla(0, 0%, 0%, .1) !important;\n border-radius: calc(0.5rem / 2) !important;\n box-shadow: 0 0 .5rem hsla(0, 0%, 0%, .25) !important;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important;\n z-index: 47 !important;\n} .action-menu_tooltip_3Bkh5:after {\n content: "";\n border-top: 1px solid hsla(0, 0%, 0%, .1) !important;\n border-left: 0 !important;\n border-bottom: 0 !important;\n border-right: 1px solid hsla(0, 0%, 0%, .1) !important;\n border-radius: 0.125rem;\n height: 0.5rem !important;\n width: 0.5rem !important;\n} .action-menu_tooltip_3Bkh5.place-left:after {\n margin-top: -0.25rem !important;\n right: -0.25rem !important;\n transform: rotate(45deg) !important;\n} .action-menu_tooltip_3Bkh5.place-right:after {\n margin-top: -0.25rem !important;\n left: -0.25rem !important;\n transform: rotate(-135deg) !important;\n} .action-menu_tooltip_3Bkh5.place-top:after {\n margin-right: -0.25rem !important;\n bottom: -0.25rem !important;\n transform: rotate(135deg) !important;\n} .action-menu_tooltip_3Bkh5.place-bottom:after {\n margin-left: -0.25rem !important;\n top: -0.25rem !important;\n transform: rotate(-45deg) !important;\n}\n',""]),t.locals={"menu-container":"action-menu_menu-container_3a6da",menuContainer:"action-menu_menu-container_3a6da",button:"action-menu_button_1qbot","coming-soon":"action-menu_coming-soon_2URvV",comingSoon:"action-menu_coming-soon_2URvV","main-button":"action-menu_main-button_3ccfy",mainButton:"action-menu_main-button_3ccfy","main-icon":"action-menu_main-icon_1ktMc",mainIcon:"action-menu_main-icon_1ktMc","more-buttons-outer":"action-menu_more-buttons-outer_3J9yZ",moreButtonsOuter:"action-menu_more-buttons-outer_3J9yZ","more-buttons":"action-menu_more-buttons_3Bjkq",moreButtons:"action-menu_more-buttons_3Bjkq","file-input":"action-menu_file-input_2nOL7",fileInput:"action-menu_file-input_2nOL7",expanded:"action-menu_expanded_JcMKp","force-hidden":"action-menu_force-hidden_3SRnx",forceHidden:"action-menu_force-hidden_3SRnx","more-button":"action-menu_more-button_1fMGZ",moreButton:"action-menu_more-button_1fMGZ","more-icon":"action-menu_more-icon_TJUQ7",moreIcon:"action-menu_more-icon_TJUQ7",tooltip:"action-menu_tooltip_3Bkh5","coming-soon-tooltip":"action-menu_coming-soon-tooltip_3jthM",comingSoonTooltip:"action-menu_coming-soon-tooltip_3jthM"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .selector_wrapper_8_BHs {\n width: 150px;\n min-width: 150px; /* fixes width being ignored in the sound editor sometimes */\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n background: var(--ui-tertiary, hsla(215, 50%, 90%, 1));\n} .selector_new-buttons_2qHDd {\n position: absolute;\n bottom: 0;\n width: 100%;\n\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-around;\n padding: 0.75rem 0;\n color: hsla(0, 100%, 65%, 1);\n text-align: center;\n background: none;\n pointer-events: none;\n} .selector_new-buttons_2qHDd:before {\n content: "";\n position: absolute;\n bottom: 0;\n left: 0;\n right:0;\n background: linear-gradient(rgba(232,237,241, 0),rgba(232,237,241, 1));\n height: 100px;\n width: 100%;\n pointer-events: none;\n} [theme="dark"] .selector_new-buttons_2qHDd:before {\n background: linear-gradient(rgba(94, 96, 97, 0),rgb(59, 59, 59));\n} .selector_new-buttons_2qHDd > button + button {\n margin-top: 0.75rem;\n} .selector_list-area_1Xbj_ {\n /* Must have some height (recalculated by flex-grow) in order to scroll */\n height: 0;\n flex-grow: 1;\n overflow-y: auto;\n overflow-x: hidden;\n display: flex;\n flex-direction: column;\n} .selector_list-area_1Xbj_:after {\n /* Make sure there is room to scroll beyond the last tile */\n content: \'\';\n display: block;\n height: 70px;\n width: 100%;\n flex-shrink: 0;\n order: 99999999;\n} .selector_list-item_3N_u7 {\n width: 5rem;\n height: 5rem;\n margin: 0.5rem auto;\n} @media only screen and (max-width: 1249px) {\n .selector_wrapper_8_BHs {\n width: 80px;\n min-width: 80px;\n }\n\n .selector_list-item_3N_u7 {\n width: 4rem;\n }\n} .selector_list-item_3N_u7.selector_placeholder_2pqWG {\n background: white;\n filter: opacity(15%) brightness(0%);\n}\n',""]),t.locals={wrapper:"selector_wrapper_8_BHs","new-buttons":"selector_new-buttons_2qHDd",newButtons:"selector_new-buttons_2qHDd","list-area":"selector_list-area_1Xbj_",listArea:"selector_list-area_1Xbj_","list-item":"selector_list-item_3N_u7",listItem:"selector_list-item_3N_u7",placeholder:"selector_placeholder_2pqWG"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n.asset-panel_wrapper_366X0 {\n display: flex;\n flex-grow: 1;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n background: white;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-size: 0.85rem;\n}\n\n[theme="dark"] .asset-panel_wrapper_366X0 {\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n}\n\n[dir="ltr"] .asset-panel_wrapper_366X0 {\n border-top-right-radius: 0.5rem;\n border-bottom-right-radius: 0.5rem;\n}\n\n[dir="rtl"] .asset-panel_wrapper_366X0 {\n border-top-left-radius: 0.5rem;\n border-bottom-left-radius: 0.5rem;\n}\n\n.asset-panel_detail-area_2KQhH {\n display: flex;\n flex-grow: 1;\n flex-shrink: 1;\n overflow: visible;\n}\n\n[dir="ltr"] .asset-panel_detail-area_2KQhH {\n border-left: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n\n[dir="rtl"] .asset-panel_detail-area_2KQhH {\n border-right: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n',""]),t.locals={wrapper:"asset-panel_wrapper_366X0","detail-area":"asset-panel_detail-area_2KQhH",detailArea:"asset-panel_detail-area_2KQhH"}},,function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n.label_input-group_2vTky {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n}\n\n.label_input-group-column_22FuU {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n.label_input-group-column_22FuU span {\n margin-bottom: .25rem;\n}\n\n.label_input-label_3KjCa, .label_input-label-secondary_3QDNV {\n font-size: 0.625rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n\n white-space: nowrap;\n}\n\n[dir="ltr"] .label_input-label_3KjCa, [dir="ltr"] .label_input-label-secondary_3QDNV {\n margin-right: .5rem;\n}\n\n[dir="rtl"] .label_input-label_3KjCa, [dir="rtl"] .label_input-label-secondary_3QDNV {\n margin-left: .5rem;\n}\n\n.label_input-label_3KjCa {\n font-weight: bold;\n}\n',""]),t.locals={"input-group":"label_input-group_2vTky",inputGroup:"label_input-group_2vTky","input-group-column":"label_input-group-column_22FuU",inputGroupColumn:"label_input-group-column_22FuU","input-label":"label_input-label_3KjCa",inputLabel:"label_input-label_3KjCa","input-label-secondary":"label_input-label-secondary_3QDNV",inputLabelSecondary:"label_input-label-secondary_3QDNV"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n.input_input-form_l9eYg {\n height: 2rem;\n padding: 0 0.75rem;\n\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-size: 0.625rem;\n font-weight: bold;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n\n border-width: 1px;\n border-style: solid;\n border-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 2rem;\n\n outline: none;\n cursor: text;\n transition: 0.25s ease-out; /* @todo: standardize with var */\n box-shadow: none;\n\n /*\n For truncating overflowing text gracefully\n Min-width is for a bug: https://css-tricks.com/flexbox-truncated-text\n @todo: move this out into a mixin or a helper component\n */\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n\n[theme="dark"] .input_input-form_l9eYg {\n background-color: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n}\n\n.input_input-form_l9eYg:hover {\n border-color: hsla(0, 100%, 65%, 1);\n}\n\n[theme="dark"] .input_input-form_l9eYg:hover {\n border-color: #333;\n}\n\n.input_input-form_l9eYg:focus {\n border-color: hsla(0, 100%, 65%, 1);\n box-shadow: 0 0 0 0.25rem hsla(0, 100%, 65%, 0.35);\n}\n\n[theme="dark"] .input_input-form_l9eYg:focus {\n border-color: #333;\n}\n\n.input_input-small_2qj1C {\n width: 3rem;\n padding: 0 0.5rem;\n text-overflow: clip;\n text-align: center;\n}\n',""]),t.locals={"input-form":"input_input-form_l9eYg",inputForm:"input_input-form_l9eYg","input-small":"input_input-small_2qj1C",inputSmall:"input_input-small_2qj1C"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .dial_container_3hox- {\n padding: 1rem;\n display: flex;\n justify-content: center;\n align-items: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n} .dial_dial-container_ktOnA {\n position: relative;\n} .dial_dial-face_3NuSA, .dial_dial-handle_1tfZT, .dial_gauge_3g5NZ {\n position: absolute;\n top: 0;\n left: 0;\n overflow: visible;\n} .dial_dial-face_3NuSA {\n width: 100%;\n} .dial_dial-handle_1tfZT {\n cursor: pointer;\n width: 40px;\n height: 40px;\n /* Use margin to make positioning via top/left easier */\n margin-left: calc(40px / -2);\n margin-top: calc(40px / -2);\n} .dial_gauge-path_1WoJ6 {\n fill: hsla(0, 100%, 65%, 0.35);\n stroke: hsla(0, 100%, 65%, 1);\n stroke-width: 1px;\n}\n",""]),t.locals={container:"dial_container_3hox-","dial-container":"dial_dial-container_ktOnA",dialContainer:"dial_dial-container_ktOnA","dial-face":"dial_dial-face_3NuSA",dialFace:"dial_dial-face_3NuSA","dial-handle":"dial_dial-handle_1tfZT",dialHandle:"dial_dial-handle_1tfZT",gauge:"dial_gauge_3g5NZ","gauge-path":"dial_gauge-path_1WoJ6",gaugePath:"dial_gauge-path_1WoJ6"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* Copied from scratch-paint color-picker.css. */ .Popover-body {\n background: white;\n border: 1px solid #ddd;\n padding: 4px;\n border-radius: 4px;\n padding: 4px;\n box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, .3);\n} .Popover-tipShape {\n fill: white;\n stroke: #ddd;\n} .direction-picker_button-row_1DF8U {\n display: flex;\n flex-direction: row;\n justify-content: center;\n\n} .direction-picker_icon-button_1y9Rd {\n margin: 0.25rem;\n border: none;\n background: none;\n outline: none;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n} .direction-picker_icon-button_1y9Rd:active > img {\n width: 20px;\n height: 20px;\n transform: scale(1.15);\n} .direction-picker_icon-button_1y9Rd > img {\n transition: transform 0.1s;\n filter: grayscale(100%);\n} .direction-picker_icon-button_1y9Rd.direction-picker_active_10_kJ > img {\n filter: none;\n}\n",""]),t.locals={"button-row":"direction-picker_button-row_1DF8U",buttonRow:"direction-picker_button-row_1DF8U","icon-button":"direction-picker_icon-button_1y9Rd",iconButton:"direction-picker_icon-button_1y9Rd",active:"direction-picker_active_10_kJ"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n.sprite-info_sprite-info_3EyZh {\n padding: 0.75rem;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n background-color: white;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n border-top-left-radius: 0.5rem;\n border-top-right-radius: 0.5rem;\n border-bottom: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n\n[theme="dark"] .sprite-info_sprite-info_3EyZh {\n background-color: var(--ui-primary, hsla(215, 100%, 95%, 1));\n}\n\n.sprite-info_row_1om5V {\n display: flex;\n justify-content: space-between;\n}\n\n.sprite-info_row-primary_10JrS {\n margin-bottom: 0.5rem;\n}\n\n.sprite-info_label_258mm { opacity: 0.8; }\n\n.sprite-info_group_14-B_ {\n display: inline-flex;\n flex-direction: row; /* makes columns, for each label/form group */\n align-items: center;\n}\n\n.sprite-info_column_EFIdF {\n display: inline-flex;\n flex-direction: column; /* put label above input */\n align-items: flex-start;\n}\n\n.sprite-info_column_EFIdF span {\n margin-bottom: .25rem;\n}\n\n.sprite-info_icon-wrapper_3Wbqq {\n display: inline-block;\n width: calc(2rem + 2px);\n height: calc(2rem + 2px);\n padding: 0.5rem;\n outline: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.sprite-info_icon_1iZ_9 {\n width: 100%;\n height: 100%;\n}\n\n/* @todo: refactor radio divs to input */\n\n.sprite-info_radio-wrapper_1OHDS {\n white-space: nowrap; /* make sure visibilty buttons don\'t wrap */\n}\n\n.sprite-info_radio_v-fgn {\n filter: saturate(0);\n cursor: pointer;\n}\n\n.sprite-info_radio_v-fgn.sprite-info_is-active_ewF6e {\n filter: none;\n}\n\n.sprite-info_radio_v-fgn.sprite-info_is-disabled_1_MCi {\n cursor: default;\n}\n\n.sprite-info_radio-first_3xgJB {\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n\n[dir="ltr"] .sprite-info_radio-first_3xgJB {\n border-top-left-radius: calc(0.5rem / 2);\n border-bottom-left-radius: calc(0.5rem / 2);\n}\n\n[dir="rtl"] .sprite-info_radio-first_3xgJB {\n border-top-right-radius: calc(0.5rem / 2);\n border-bottom-right-radius: calc(0.5rem / 2);\n}\n\n.sprite-info_radio-first_3xgJB:focus {\n border-color: hsla(0, 100%, 65%, 1);\n box-shadow: inset 0 0 0 -2px var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n\n.sprite-info_radio-last_3Ps65 {\n border-bottom: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-top: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n\n[dir="ltr"] .sprite-info_radio-last_3Ps65 {\n border-right: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-left: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-top-right-radius: calc(0.5rem / 2);\n border-bottom-right-radius: calc(0.5rem / 2);\n}\n\n[dir="rtl"] .sprite-info_radio-last_3Ps65 {\n border-left: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-right: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-top-left-radius: calc(0.5rem / 2);\n border-bottom-left-radius: calc(0.5rem / 2);\n}\n\n.sprite-info_radio-last_3Ps65:focus {\n border-color: hsla(0, 100%, 65%, 1);\n box-shadow: inset 0 0 0 -2px var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n\n.sprite-info_icon_1iZ_9 {\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n\n.sprite-info_rotation-select_17OlD {\n width: 100%;\n height: 1.85rem;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n outline: none;\n}\n\n.sprite-info_rotation-select_17OlD:focus {\n border-color: hsla(0, 100%, 65%, 1);\n box-shadow: inset 0 0 0 1px var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15)));\n}\n\n.sprite-info_larger-input_1UEs0 input {\n width: 4rem;\n}\n\n.sprite-info_sprite-input_17wjb {\n width: 8rem;\n}\n',""]),t.locals={"sprite-info":"sprite-info_sprite-info_3EyZh",spriteInfo:"sprite-info_sprite-info_3EyZh",row:"sprite-info_row_1om5V","row-primary":"sprite-info_row-primary_10JrS",rowPrimary:"sprite-info_row-primary_10JrS",label:"sprite-info_label_258mm",group:"sprite-info_group_14-B_",column:"sprite-info_column_EFIdF","icon-wrapper":"sprite-info_icon-wrapper_3Wbqq",iconWrapper:"sprite-info_icon-wrapper_3Wbqq",icon:"sprite-info_icon_1iZ_9","radio-wrapper":"sprite-info_radio-wrapper_1OHDS",radioWrapper:"sprite-info_radio-wrapper_1OHDS",radio:"sprite-info_radio_v-fgn","is-active":"sprite-info_is-active_ewF6e",isActive:"sprite-info_is-active_ewF6e","is-disabled":"sprite-info_is-disabled_1_MCi",isDisabled:"sprite-info_is-disabled_1_MCi","radio-first":"sprite-info_radio-first_3xgJB",radioFirst:"sprite-info_radio-first_3xgJB","radio-last":"sprite-info_radio-last_3Ps65",radioLast:"sprite-info_radio-last_3Ps65","rotation-select":"sprite-info_rotation-select_17OlD",rotationSelect:"sprite-info_rotation-select_17OlD","larger-input":"sprite-info_larger-input_1UEs0",largerInput:"sprite-info_larger-input_1UEs0","sprite-input":"sprite-info_sprite-input_17wjb",spriteInput:"sprite-info_sprite-input_17wjb"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ /*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/ /* Toolbox z-index: 40; set in scratch-blocks */ /* tooltips should go over add buttons if they overlap */ /* monitors go over add buttons */ /* "ask" block text input goes above monitors */ /* menu-bar should go over monitors, alerts and tutorials */ /* tw: show below menu bar normally */ /* Block drag z-index: 1000; default 50 is overriden in blocks.css */ /* so it is draggable into other panes */ /* in most interfaces, the context menu is always on top */ .sprite-selector_sprite-selector_2KgCX {\n flex-grow: 1;\n position: relative;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n margin-right: calc(0.5rem / 2);\n background-color: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n border-top-right-radius: 0.5rem;\n border-top-left-radius: 0.5rem;\n border-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-width: 1px;\n border-style: solid;\n border-bottom: 0;\n} .sprite-selector_sprite-wrapper_1C5Mq {\n /*\n Our goal is to fit sprites evenly in a row without leftover space.\n Flexbox\'s `space between` property gets us close, but doesn\'t flow\n well when the # of items per row > 1 and less than the max per row.\n\n Solving by explicitly calc\'ing the width of each sprite. Setting\n `border-box` simplifies things, because content, padding and\n border-width all are included in the width, leaving us only to subtract\n the left + right margins.\n\n @todo: make room for the scrollbar\n */\n box-sizing: border-box;\n width: calc((100% / 5 ) - 0.5rem);\n max-width: 6rem;\n min-width: 4rem;\n min-height: 4rem; /* @todo: calc height same as width */\n margin: calc(0.5rem / 2);\n} .sprite-selector_sprite_21WnR {\n height: 100%;\n} .sprite-selector_scroll-wrapper_3NNnc {\n /*\n Sets the sprite-selector items as a scrollable pane\n\n @todo: Safari: pane doesn\'t stretch to fill height;\n @todo: Adding `position: relative` still doesn\'t fix Safari scrolling pane, and\n also introduces a new bug in Chrome when vertically resizing window down,\n then back up, introduces white space in the outside the page container.\n */\n height: calc(100% - 6rem);\n overflow-y: auto;\n} .sprite-selector_scroll-wrapper-dragging_2QZJG {\n background-color: hsla(0, 100%, 77%, 1);\n} .sprite-selector_items-wrapper_4bcOj {\n display: flex;\n flex-wrap: wrap;\n flex-direction: row;\n\n padding-top: calc(0.5rem / 2);\n padding-left: calc(0.5rem / 2);\n padding-right: calc(0.5rem / 2);\n padding-bottom: 0.5rem;\n\n overflow: hidden;\n} .sprite-selector_add-button_1XCwG {\n position: absolute;\n bottom: 0.75rem;\n} [dir="ltr"] .sprite-selector_add-button_1XCwG {\n right: 1rem;\n} [dir="rtl"] .sprite-selector_add-button_1XCwG {\n left: 1rem;\n} .sprite-selector_raised_1fkrL {\n background-color: hsla(0, 100%, 77%, 1);\n transition: all 0.25s ease;\n} .sprite-selector_raised_1fkrL:hover {\n background-color: hsla(0, 100%, 77%, 1);\n transform: scale(1.05);\n} .sprite-selector_raised_1fkrL:hover {\n animation-name: sprite-selector_wiggle__tLSA;\n animation-duration: 500ms;\n animation-iteration-count: 1;\n animation-timing-function: ease-in-out;\n background-color: hsla(0, 100%, 77%, 1);\n} @keyframes sprite-selector_wiggle__tLSA {\n 0% {transform: rotate(3deg) scale(1.05);}\n 25% {transform: rotate(-3deg) scale(1.05);}\n 50% {transform: rotate(5deg) scale(1.05);}\n 75% {transform: rotate(-2deg) scale(1.05);}\n 100% {transform: rotate(0deg) scale(1.05);}\n} .sprite-selector_receivedBlocks_24JkN {\n animation: sprite-selector_glowing_3IS0u 250ms;\n} @keyframes sprite-selector_glowing_3IS0u {\n 10% { box-shadow: 0 0 10px #7fff1e; }\n 90% { box-shadow: 0 0 10px #7fff1e; }\n 100% { box-shadow: none; }\n} .sprite-selector_placeholder_2v7G4 > .sprite-selector_sprite_21WnR {\n background: black;\n filter: opacity(15%) brightness(0%);\n}\n',""]),t.locals={"sprite-selector":"sprite-selector_sprite-selector_2KgCX",spriteSelector:"sprite-selector_sprite-selector_2KgCX","sprite-wrapper":"sprite-selector_sprite-wrapper_1C5Mq",spriteWrapper:"sprite-selector_sprite-wrapper_1C5Mq",sprite:"sprite-selector_sprite_21WnR","scroll-wrapper":"sprite-selector_scroll-wrapper_3NNnc",scrollWrapper:"sprite-selector_scroll-wrapper_3NNnc","scroll-wrapper-dragging":"sprite-selector_scroll-wrapper-dragging_2QZJG",scrollWrapperDragging:"sprite-selector_scroll-wrapper-dragging_2QZJG","items-wrapper":"sprite-selector_items-wrapper_4bcOj",itemsWrapper:"sprite-selector_items-wrapper_4bcOj","add-button":"sprite-selector_add-button_1XCwG",addButton:"sprite-selector_add-button_1XCwG",raised:"sprite-selector_raised_1fkrL",wiggle:"sprite-selector_wiggle__tLSA",receivedBlocks:"sprite-selector_receivedBlocks_24JkN",glowing:"sprite-selector_glowing_3IS0u",placeholder:"sprite-selector_placeholder_2v7G4"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n.stage-selector_stage-selector_3oWOr {\n background-clip: padding-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n position: relative; /* For the add backdrop button */\n flex-grow: 1;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n background-color: hsla(0, 100%, 100%, 1);\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n border-top-left-radius: 0.5rem;\n border-top-right-radius: 0.5rem;\n border-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-width: 1px;\n border-style: solid;\n border-bottom: 0;\n cursor: pointer;\n transition: all 0.25s ease;\n}\n\n[theme="dark"] .stage-selector_stage-selector_3oWOr {\n background-color: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n}\n\n.stage-selector_stage-selector_3oWOr.stage-selector_is-selected_2x2r_ {\n border-top-left-radius: .625rem;\n border-top-right-radius: .625rem;\n border-color: hsla(0, 100%, 65%, 1);\n box-shadow: 0px 0px 0px 4px hsla(0, 100%, 65%, 0.35);\n}\n\n.stage-selector_stage-selector_3oWOr:hover {\n border-color: hsla(0, 100%, 65%, 1);\n}\n\n.stage-selector_header_2GVr1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: calc(2.75rem - 2px);\n background-color: white;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n border-top-left-radius: 0.5rem;\n border-top-right-radius: 0.5rem;\n border-bottom: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n width: 100%;\n transition: background-color 0.25s ease;\n}\n\n[theme="dark"] .stage-selector_header_2GVr1 {\n background-color: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n}\n\n.stage-selector_header-title_33xCt {\n font-size: 0.625rem;\n font-weight: bold;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n\n /* @todo: make this a mixin for all UI text labels */\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n transition: color 0.25s ease;\n}\n\n.stage-selector_stage-selector_3oWOr.stage-selector_is-selected_2x2r_ .stage-selector_header_2GVr1 {\n background-color: hsla(0, 100%, 65%, 1);\n}\n\n.stage-selector_stage-selector_3oWOr.stage-selector_is-selected_2x2r_ .stage-selector_header-title_33xCt {\n color: hsla(0, 100%, 100%, 1);\n}\n\n.stage-selector_count_2QK7D {\n padding: 0.3rem 0.75rem;\n font-size: 0.625rem;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.stage-selector_label_1MCfr {\n margin: 0.75rem 0 0.25rem;\n font-size: 0.6rem;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n text-align: center;\n}\n\n.stage-selector_costume-canvas_2L_6h {\n display: block;\n margin-top: .25rem;\n width: 100%;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: .25rem;\n box-shadow: inset 0 0 4px hsla(0, 0%, 0%, 0.15);\n max-width: 64px;\n max-height: 48px;\n}\n\n.stage-selector_add-button_1sKuU {\n position: absolute;\n bottom: 0.75rem;\n}\n\n.stage-selector_stage-selector_3oWOr.stage-selector_raised_9i1gL, .stage-selector_stage-selector_3oWOr.stage-selector_raised_9i1gL .stage-selector_header_2GVr1 {\n background-color: hsla(0, 100%, 77%, 1);\n transition: all 0.25s ease;\n}\n\n.stage-selector_raised_9i1gL:hover {\n transform: scale(1.05);\n}\n\n.stage-selector_receivedBlocks_2zr7v {\n animation: stage-selector_glowing_2YPqi 250ms;\n}\n\n@keyframes stage-selector_glowing_2YPqi {\n 10% { box-shadow: 0 0 10px #7fff1e; }\n 90% { box-shadow: 0 0 10px #7fff1e; }\n 100% { box-shadow: none; }\n}\n',""]),t.locals={"stage-selector":"stage-selector_stage-selector_3oWOr",stageSelector:"stage-selector_stage-selector_3oWOr","is-selected":"stage-selector_is-selected_2x2r_",isSelected:"stage-selector_is-selected_2x2r_",header:"stage-selector_header_2GVr1","header-title":"stage-selector_header-title_33xCt",headerTitle:"stage-selector_header-title_33xCt",count:"stage-selector_count_2QK7D",label:"stage-selector_label_1MCfr","costume-canvas":"stage-selector_costume-canvas_2L_6h",costumeCanvas:"stage-selector_costume-canvas_2L_6h","add-button":"stage-selector_add-button_1sKuU",addButton:"stage-selector_add-button_1sKuU",raised:"stage-selector_raised_9i1gL",receivedBlocks:"stage-selector_receivedBlocks_2zr7v",glowing:"stage-selector_glowing_2YPqi"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n.target-pane_target-pane_3S5E6 {\n /* Makes columns for the sprite library selector + and the stage selector */\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n}\n\n.target-pane_stage-selector-wrapper_qekSW {\n display: flex;\n flex-basis: 72px;\n flex-shrink: 0;\n}\n\n[dir="ltr"] .target-pane_stage-selector-wrapper_qekSW {\n margin-left: calc(0.5rem / 2);\n}\n\n[dir="rtl"] .target-pane_stage-selector-wrapper_qekSW {\n margin-right: calc(0.5rem / 2);\n}\n',""]),t.locals={"target-pane":"target-pane_target-pane_3S5E6",targetPane:"target-pane_target-pane_3S5E6","stage-selector-wrapper":"target-pane_stage-selector-wrapper_qekSW",stageSelectorWrapper:"target-pane_stage-selector-wrapper_qekSW"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .meter_green_oUPv2 {\n fill: rgb(171, 220, 170);\n stroke: rgb(174, 211, 168);\n} .meter_yellow_3uz-j {\n fill: rgb(251, 219, 130);\n stroke: rgb(239, 212, 134);\n} .meter_red_1aMUm {\n fill: rgb(251, 194, 142);\n stroke: rgb(235, 189, 142);\n} .meter_mask-container_11m_n {\n position: relative;\n} .meter_mask_B-cd7 {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n transform-origin: top;\n will-change: transform;\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n opacity: 0.75;\n}\n",""]),t.locals={green:"meter_green_oUPv2",yellow:"meter_yellow_3uz-j",red:"meter_red_1aMUm","mask-container":"meter_mask-container_11m_n",maskContainer:"meter_mask-container_11m_n",mask:"meter_mask_B-cd7"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .waveform_container_2K9Om {\n width: 100%;\n} .waveform_waveform-path_TskyB {\n /*\n This color is lighter than sound-primary, but\n cannot use alpha because of overlapping elements.\n */\n fill: hsl(300, 54%, 72%);\n stroke: hsla(300, 48%, 50%, 1);\n} .waveform_baseline_2J5dw {\n stroke: hsla(300, 48%, 50%, 1);\n}\n",""]),t.locals={container:"waveform_container_2K9Om","waveform-path":"waveform_waveform-path_TskyB",waveformPath:"waveform_waveform-path_TskyB",baseline:"waveform_baseline_2J5dw"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .record-modal_modal-content_2N7lD {\n width: 600px;\n} .record-modal_body_2VO4l {\n background: hsla(0, 100%, 100%, 1);\n padding: 1.5rem 2.25rem;\n} [theme="dark"] .record-modal_body_2VO4l {\n background: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n} .record-modal_visualization-container_1joZn {\n display: flex;\n justify-content: space-around;\n} .record-modal_meter-container_3OqCJ, .record-modal_waveform-container__ay3Q {\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 5px;\n padding: 3px;\n /* Force these to be on their own render layer because they update often */\n transform: translateZ(0);\n} .record-modal_meter-container_3OqCJ {\n margin-right: 5px;\n height: 180px;\n} .record-modal_waveform-container__ay3Q {\n display: flex;\n justify-content: space-around;\n align-items: center;\n width: 100%;\n height: 180px;\n position: relative;\n} .record-modal_help-text_Jevsk {\n margin: 10px auto 0;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n color: rgb(167, 170, 181);\n font-size: 0.95rem;\n font-weight: 500;\n} .record-modal_playing-text_1tknI {\n color: hsla(0, 100%, 65%, 1);\n} .record-modal_recording-text_2LS7_ {\n color: hsla(20, 100%, 55%, 1);\n} .record-modal_main-button-row_37Zjz {\n display: flex;\n justify-content: space-around;\n margin-top: 15px;\n} .record-modal_main-button-row_37Zjz button {\n padding: 0.5rem 0.75rem;\n border-radius: 0.25rem;\n background: transparent;\n border: none;\n} .record-modal_main-button-row_37Zjz button:disabled {\n opacity: 0.25;\n} .record-modal_main-button-row_37Zjz button:active, .record-modal_main-button-row_37Zjz button:focus {\n outline: none;\n} .record-modal_button-row_1hdGe {\n font-weight: bolder;\n text-align: right;\n display: flex;\n justify-content: space-between;\n} .record-modal_button-row_1hdGe button {\n padding: 0.75rem 1rem;\n border-radius: 0.25rem;\n background: white;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n font-weight: 600;\n font-size: 0.85rem;\n color: hsla(0, 100%, 65%, 1);\n} .record-modal_button-row_1hdGe button.record-modal_ok-button_3pudV {\n background: hsla(0, 100%, 65%, 1);\n border: hsla(0, 100%, 65%, 1);\n color: white;\n} .record-modal_button-row_1hdGe button + button {\n margin-left: 0.5rem;\n} .record-modal_main-button_36gPw {\n text-align: center;\n} .record-modal_record-button_3mcC8 {\n overflow: visible;\n} .record-modal_record-button-circle_kXioI {\n fill: hsla(20, 100%, 55%, 1);\n stroke: hsla(20, 100%, 45%, 1);\n} .record-modal_record-button-circle-outline_1ycFu {\n fill: hsla(20, 100%, 55%, 1);\n opacity: 0.2;\n transition: 0.1s;\n} [dir="rtl"] .record-modal_rerecord-button_jgsi_ img {\n transform: scaleX(-1);\n}\n',""]),t.locals={"modal-content":"record-modal_modal-content_2N7lD",modalContent:"record-modal_modal-content_2N7lD",body:"record-modal_body_2VO4l","visualization-container":"record-modal_visualization-container_1joZn",visualizationContainer:"record-modal_visualization-container_1joZn","meter-container":"record-modal_meter-container_3OqCJ",meterContainer:"record-modal_meter-container_3OqCJ","waveform-container":"record-modal_waveform-container__ay3Q",waveformContainer:"record-modal_waveform-container__ay3Q","help-text":"record-modal_help-text_Jevsk",helpText:"record-modal_help-text_Jevsk","playing-text":"record-modal_playing-text_1tknI",playingText:"record-modal_playing-text_1tknI","recording-text":"record-modal_recording-text_2LS7_",recordingText:"record-modal_recording-text_2LS7_","main-button-row":"record-modal_main-button-row_37Zjz",mainButtonRow:"record-modal_main-button-row_37Zjz","button-row":"record-modal_button-row_1hdGe",buttonRow:"record-modal_button-row_1hdGe","ok-button":"record-modal_ok-button_3pudV",okButton:"record-modal_ok-button_3pudV","main-button":"record-modal_main-button_36gPw",mainButton:"record-modal_main-button_36gPw","record-button":"record-modal_record-button_3mcC8",recordButton:"record-modal_record-button_3mcC8","record-button-circle":"record-modal_record-button-circle_kXioI",recordButtonCircle:"record-modal_record-button-circle_kXioI","record-button-circle-outline":"record-modal_record-button-circle-outline_1ycFu",recordButtonCircleOutline:"record-modal_record-button-circle-outline_1ycFu","rerecord-button":"record-modal_rerecord-button_jgsi_",rerecordButton:"record-modal_rerecord-button_jgsi_"}},,function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .audio-trimmer_absolute_1x_Jq {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n /* Force the browser to paint separately to avoid composite cost with waveform */\n transform: translateZ(0);\n} .audio-trimmer_selector_DDQ2- {\n cursor: pointer;\n} .audio-trimmer_trim-background_2VYXk {\n cursor: pointer;\n touch-action: none;\n} .audio-trimmer_trim-background-mask_mmZgf {\n border: 1px solid hsla(20, 100%, 45%, 1);\n opacity: 0.5;\n\n background: repeating-linear-gradient(\n 45deg,\n hsla(20, 100%, 55%, 1),\n hsla(20, 100%, 55%, 1) 10px,\n hsla(20, 100%, 45%, 1) 10px,\n hsla(20, 100%, 45%, 1) calc(2 * 10px)\n );\n} .audio-trimmer_selection-background_3LBuB {\n background: hsla(0, 100%, 65%, 1);\n opacity: 0.5;\n} .audio-trimmer_start-trim-background_26IJ6 .audio-trimmer_trim-background-mask_mmZgf {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n} .audio-trimmer_end-trim-background_1QrZm .audio-trimmer_trim-background-mask_mmZgf {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n} .audio-trimmer_trim-line_2cpoE {\n position: absolute;\n top: 0;\n width: 0px;\n height: 100%;\n border: 1px solid hsla(20, 100%, 45%, 1);\n} .audio-trimmer_selector_DDQ2- .audio-trimmer_trim-line_2cpoE {\n border: 1px solid hsla(0, 60%, 50%, 1);\n} .audio-trimmer_playhead-container_3l7Ve {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n overflow: hidden;\n} .audio-trimmer_playhead_3A0k9 {\n /*\n Even though playhead is just a line, it is 100% width (the width of the waveform)\n so that we can use transform: translateX() using percentages.\n */\n width: 100%;\n height: 100%;\n border-left: 1px solid hsla(0, 100%, 65%, 1);\n border-top: none;\n border-bottom: none;\n border-right: none;\n} .audio-trimmer_right-handle_jMGnD {\n transform: scaleX(-1);\n} .audio-trimmer_selector_DDQ2- .audio-trimmer_left-handle_1Ure2 {\n left: -1px\n} .audio-trimmer_selector_DDQ2- .audio-trimmer_right-handle_jMGnD {\n right: -1px\n} .audio-trimmer_trimmer_3T33n .audio-trimmer_left-handle_1Ure2 {\n right: -1px\n} .audio-trimmer_trimmer_3T33n .audio-trimmer_right-handle_jMGnD {\n left: -1px\n} .audio-trimmer_trim-handle_1Obhp {\n position: absolute;\n width: 30px;\n height: 30px;\n right: 0;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n} .audio-trimmer_trimmer_3T33n .audio-trimmer_trim-handle_1Obhp {\n filter: hue-rotate(150deg);\n} .audio-trimmer_trim-handle_1Obhp img {\n position: absolute;\n width: 30px;\n height: 30px;\n left: calc(3px * 1.5);\n\n /* Make sure image dragging isn't triggered */\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n user-drag: none;\n -webkit-user-drag: none; /* Autoprefixer doesn't seem to work for this */\n\n transition: 0.2s;\n} .audio-trimmer_top-trim-handle_1oF2r {\n top: calc(-30px + 3px);\n} .audio-trimmer_bottom-trim-handle_2FNda {\n bottom: calc(-30px + 3px);\n} .audio-trimmer_top-trim-handle_1oF2r img {\n transform: scaleY(-1);\n}\n",""]),t.locals={absolute:"audio-trimmer_absolute_1x_Jq",selector:"audio-trimmer_selector_DDQ2-","trim-background":"audio-trimmer_trim-background_2VYXk",trimBackground:"audio-trimmer_trim-background_2VYXk","trim-background-mask":"audio-trimmer_trim-background-mask_mmZgf",trimBackgroundMask:"audio-trimmer_trim-background-mask_mmZgf","selection-background":"audio-trimmer_selection-background_3LBuB",selectionBackground:"audio-trimmer_selection-background_3LBuB","start-trim-background":"audio-trimmer_start-trim-background_26IJ6",startTrimBackground:"audio-trimmer_start-trim-background_26IJ6","end-trim-background":"audio-trimmer_end-trim-background_1QrZm",endTrimBackground:"audio-trimmer_end-trim-background_1QrZm","trim-line":"audio-trimmer_trim-line_2cpoE",trimLine:"audio-trimmer_trim-line_2cpoE","playhead-container":"audio-trimmer_playhead-container_3l7Ve",playheadContainer:"audio-trimmer_playhead-container_3l7Ve",playhead:"audio-trimmer_playhead_3A0k9","right-handle":"audio-trimmer_right-handle_jMGnD",rightHandle:"audio-trimmer_right-handle_jMGnD","left-handle":"audio-trimmer_left-handle_1Ure2",leftHandle:"audio-trimmer_left-handle_1Ure2",trimmer:"audio-trimmer_trimmer_3T33n","trim-handle":"audio-trimmer_trim-handle_1Obhp",trimHandle:"audio-trimmer_trim-handle_1Obhp","top-trim-handle":"audio-trimmer_top-trim-handle_1oF2r",topTrimHandle:"audio-trimmer_top-trim-handle_1oF2r","bottom-trim-handle":"audio-trimmer_bottom-trim-handle_2FNda",bottomTrimHandle:"audio-trimmer_bottom-trim-handle_2FNda"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .icon-button_container_278u5 {\n display: flex;\n flex-direction: column;\n align-items: center;\n cursor: pointer;\n font-size: 0.75rem;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n color: hsla(0, 100%, 65%, 1);\n border-radius: 0.5rem;\n} .icon-button_container_278u5 + .icon-button_container_278u5 {\n margin-top: 1.25rem;\n} .icon-button_title_36ChS {\n margin-top: 0.5rem;\n text-align: center;\n} .icon-button_disabled_2HD_J {\n opacity: 0.5;\n pointer-events: none;\n} .icon-button_container_278u5:active {\n background-color: hsla(0, 100%, 65%, 0.15);\n}\n',""]),t.locals={container:"icon-button_container_278u5",title:"icon-button_title_36ChS",disabled:"icon-button_disabled_2HD_J"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .sound-editor_editor-container_iUSW- {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n padding: calc(2 * 0.5rem);\n} .sound-editor_row_3iFzH {\n display: flex;\n flex-direction: row;\n align-items: center;\n} [dir="rtl"] .sound-editor_row-reverse_1qAAx {\n flex-direction: row-reverse;\n} .sound-editor_row_3iFzH + .sound-editor_row_3iFzH {\n margin-top: calc(2 * 0.5rem);\n} .sound-editor_input-group_2hWiH {\n display: flex;\n flex-direction: row;\n} [dir="ltr"] .sound-editor_input-group_2hWiH + .sound-editor_input-group_2hWiH {\n margin-left: calc(2 * 0.5rem);\n} [dir="rtl"] .sound-editor_input-group_2hWiH + .sound-editor_input-group_2hWiH {\n margin-right: calc(2 * 0.5rem);\n} [dir="ltr"] .sound-editor_input-group_2hWiH {\n padding-right: calc(2 * 0.5rem);\n border-right: 1px dashed var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} [dir="rtl"] .sound-editor_input-group_2hWiH {\n padding-left: calc(2 * 0.5rem);\n border-left: 1px dashed var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} [dir="rtl"] .sound-editor_row-reverse_1qAAx > .sound-editor_input-group_2hWiH {\n padding-left: 0;\n padding-right: calc(2 * 0.5rem);\n border-left: none;\n border-right: 1px dashed var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} .sound-editor_name-input_2Msmq {\n width: 100%;\n} .sound-editor_waveform-container_1x_b1 {\n display: flex;\n justify-content: space-around;\n align-items: center;\n width: 100%;\n\n position: relative;\n\n background: hsla(300, 53%, 60%, 0.15);\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 5px;\n\n margin-top: 20px;\n margin-bottom: 20px;\n} .sound-editor_button_1_6Li {\n height: 2rem;\n padding: 0.35rem;\n outline: none;\n background: white;\n border-radius: 0.25rem;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n cursor: pointer;\n font-size: 0.85rem;\n transition: 0.2s;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n margin: 0px;\n} [theme="dark"] .sound-editor_button_1_6Li {\n background-color: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} .sound-editor_button_1_6Li > img {\n flex-grow: 1;\n max-width: 100%;\n max-height: 100%;\n min-width: 1.25rem;\n} .sound-editor_round-button-outer_2hM-8 {\n display: flex;\n align-items: center;\n height: 100%;\n} .sound-editor_round-button_3NLcW {\n height: 3rem;\n width: 3rem;\n outline: none;\n background: hsla(0, 100%, 65%, 1);\n border-radius: 100%;\n border: 4px solid hsla(0, 100%, 100%, 0.75);\n cursor: pointer;\n padding: 0.75rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n} [theme="dark"] .sound-editor_round-button_3NLcW {\n border-color: transparent;\n} .sound-editor_round-button_3NLcW > img {\n flex-grow: 1;\n max-width: 100%;\n max-height: 100%;\n /*min-width: 1.5rem;*/\n} [dir="rtl"] .sound-editor_undo-icon_So0sO, [dir="rtl"] .sound-editor_redo-icon_XGcr5 {\n transform: scaleX(-1);\n} .sound-editor_trim-button_lSENI {\n display: flex;\n align-items: center;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n font-size: 0.625rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n} [dir="ltr"] .sound-editor_trim-button_lSENI {\n margin-left: 1rem;\n} [dir="rtl"] .sound-editor_trim-button_lSENI {\n margin-right: 1rem;\n} .sound-editor_trim-button_lSENI > img {\n width: 1.25rem;\n} .sound-editor_effects_ywFdO {\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n} .sound-editor_effect-button_2zuzT {\n flex-basis: 60px;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n font-size: 0.625rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n padding: 0.25rem 0;\n} .sound-editor_effect-button_2zuzT + .sound-editor_effect-button_2zuzT {\n margin: 0;\n} .sound-editor_effect-button_2zuzT img {\n width: 1.25rem;\n height: 1.25rem;\n margin-bottom: -0.375rem;\n} .sound-editor_tool-button_2iNn9 {\n flex-basis: 60px;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n font-size: 0.625rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n padding: 0.25rem 0;\n} .sound-editor_tool-button_2iNn9 + .sound-editor_tool-button_2iNn9 {\n margin: 0;\n} .sound-editor_tool-button_2iNn9 img {\n width: 4rem;\n height: 1.5rem;\n margin-bottom: -0.375rem;\n} [dir="rtl"] .sound-editor_flip-in-rtl_3eOfH img {\n transform: scaleX(-1);\n} [dir="ltr"] .sound-editor_button-group_SFPoV {\n margin-left: 1rem;\n} [dir="rtl"] .sound-editor_button-group_SFPoV {\n margin-right: 1rem;\n} .sound-editor_button-group_SFPoV {\n display: flex;\n} .sound-editor_button-group_SFPoV .sound-editor_button_1_6Li {\n border-radius: 0;\n} [dir="ltr"] .sound-editor_button-group_SFPoV .sound-editor_button_1_6Li {\n border-left: none;\n} [dir="rtl"] .sound-editor_button-group_SFPoV .sound-editor_button_1_6Li {\n border-right: none;\n} [dir="ltr"] .sound-editor_button-group_SFPoV .sound-editor_button_1_6Li:last-of-type {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n} [dir="ltr"] .sound-editor_button-group_SFPoV .sound-editor_button_1_6Li:first-of-type {\n border-left: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n} [dir="rtl"] .sound-editor_button-group_SFPoV .sound-editor_button_1_6Li:last-of-type {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n} [dir="rtl"] .sound-editor_button-group_SFPoV .sound-editor_button_1_6Li:first-of-type {\n border-right: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n} .sound-editor_button_1_6Li:disabled > img {\n opacity: 0.25;\n} .sound-editor_info-row_33dW3 {\n display: flex;\n justify-content: space-between;\n margin-top: calc(2 * 0.5rem);\n} .sound-editor_duration_Iq75P {\n font-weight: bold;\n} .sound-editor_advanced-info_IEJgw {\n\n} .sound-editor_alert_DhPBO {\n margin-top: calc(2 * 0.5rem);\n border-radius: 5px;\n padding: 0.5rem;\n display: flex;\n align-items: center;\n border-width: 1px;\n border-style: solid;\n} .sound-editor_stereo_1cklI {\n background-color: rgba(145, 145, 255, 0.3);\n border-color: rgb(145, 145, 255)\n} .sound-editor_too-large_2e10L {\n background-color: rgba(255, 119, 0, 0.3);\n border-color: rgb(255, 119, 0);\n}\n',""]),t.locals={"editor-container":"sound-editor_editor-container_iUSW-",editorContainer:"sound-editor_editor-container_iUSW-",row:"sound-editor_row_3iFzH","row-reverse":"sound-editor_row-reverse_1qAAx",rowReverse:"sound-editor_row-reverse_1qAAx","input-group":"sound-editor_input-group_2hWiH",inputGroup:"sound-editor_input-group_2hWiH","name-input":"sound-editor_name-input_2Msmq",nameInput:"sound-editor_name-input_2Msmq","waveform-container":"sound-editor_waveform-container_1x_b1",waveformContainer:"sound-editor_waveform-container_1x_b1",button:"sound-editor_button_1_6Li","round-button-outer":"sound-editor_round-button-outer_2hM-8",roundButtonOuter:"sound-editor_round-button-outer_2hM-8","round-button":"sound-editor_round-button_3NLcW",roundButton:"sound-editor_round-button_3NLcW","undo-icon":"sound-editor_undo-icon_So0sO",undoIcon:"sound-editor_undo-icon_So0sO","redo-icon":"sound-editor_redo-icon_XGcr5",redoIcon:"sound-editor_redo-icon_XGcr5","trim-button":"sound-editor_trim-button_lSENI",trimButton:"sound-editor_trim-button_lSENI",effects:"sound-editor_effects_ywFdO","effect-button":"sound-editor_effect-button_2zuzT",effectButton:"sound-editor_effect-button_2zuzT","tool-button":"sound-editor_tool-button_2iNn9",toolButton:"sound-editor_tool-button_2iNn9","flip-in-rtl":"sound-editor_flip-in-rtl_3eOfH",flipInRtl:"sound-editor_flip-in-rtl_3eOfH","button-group":"sound-editor_button-group_SFPoV",buttonGroup:"sound-editor_button-group_SFPoV","info-row":"sound-editor_info-row_33dW3",infoRow:"sound-editor_info-row_33dW3",duration:"sound-editor_duration_Iq75P","advanced-info":"sound-editor_advanced-info_IEJgw",advancedInfo:"sound-editor_advanced-info_IEJgw",alert:"sound-editor_alert_DhPBO",stereo:"sound-editor_stereo_1cklI","too-large":"sound-editor_too-large_2e10L",tooLarge:"sound-editor_too-large_2e10L"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".sound-editor-not-supported_container_2WslL {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n width: 100%;\n height: 100%;\n font-size: 1.5em;\n}\n",""]),t.locals={container:"sound-editor-not-supported_container_2WslL"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .green-flag_green-flag_1kiAo {\n width: 2rem;\n height: 2rem;\n padding: 0.375rem;\n border-radius: 0.25rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n user-drag: none;\n cursor: pointer;\n} .green-flag_green-flag_1kiAo:hover {\n background-color: hsla(0, 100%, 65%, 0.15);\n} .green-flag_green-flag_1kiAo.green-flag_is-active_2oExT {\n background-color: hsla(0, 100%, 65%, 0.35);\n}\n",""]),t.locals={"green-flag":"green-flag_green-flag_1kiAo",greenFlag:"green-flag_green-flag_1kiAo","is-active":"green-flag_is-active_2oExT",isActive:"green-flag_is-active_2oExT"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .stop-all_stop-all_1Y8P9 {\n width: 2rem;\n height: 2rem;\n padding: 0.375rem;\n border-radius: 0.25rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: pointer;\n} .stop-all_stop-all_1Y8P9:hover {\n background-color: hsla(0, 100%, 65%, 0.15);\n} .stop-all_stop-all_1Y8P9 {\n opacity: 0.5;\n} .stop-all_stop-all_1Y8P9.stop-all_is-active_3nog0 {\n opacity: 1;\n}\n",""]),t.locals={"stop-all":"stop-all_stop-all_1Y8P9",stopAll:"stop-all_stop-all_1Y8P9","is-active":"stop-all_is-active_3nog0",isActive:"stop-all_is-active_3nog0"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .turbo-mode_turbo-container_2ZNcq {\n display: flex;\n align-items: center;\n padding: 0.25rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n} .turbo-mode_turbo-icon_fjr8U {\n margin: 0.25rem;\n} .turbo-mode_turbo-label_-1oMs {\n font-size: 0.625rem;\n font-weight: bold;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n color: hsla(38, 100%, 55%, 1);\n white-space: nowrap;\n}\n',""]),t.locals={"turbo-container":"turbo-mode_turbo-container_2ZNcq",turboContainer:"turbo-mode_turbo-container_2ZNcq","turbo-icon":"turbo-mode_turbo-icon_fjr8U",turboIcon:"turbo-mode_turbo-icon_fjr8U","turbo-label":"turbo-mode_turbo-label_-1oMs",turboLabel:"turbo-mode_turbo-label_-1oMs"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .framerate-indicator_framerate-container_NtFdv {\n display: flex;\n align-items: center;\n padding: 0.25rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n} .framerate-indicator_framerate-label_2VeIK {\n font-size: 0.625rem;\n font-weight: bold;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n color: hsla(38, 100%, 55%, 1);\n white-space: nowrap;\n}\n',""]),t.locals={"framerate-container":"framerate-indicator_framerate-container_NtFdv",framerateContainer:"framerate-indicator_framerate-container_NtFdv","framerate-label":"framerate-indicator_framerate-label_2VeIK",framerateLabel:"framerate-indicator_framerate-label_2VeIK"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".controls_controls-container_2xinB {\n display: flex;\n}\n",""]),t.locals={"controls-container":"controls_controls-container_2xinB",controlsContainer:"controls_controls-container_2xinB"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n/*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/\n\n/* Toolbox z-index: 40; set in scratch-blocks */\n\n/* tooltips should go over add buttons if they overlap */\n\n/* monitors go over add buttons */\n\n/* "ask" block text input goes above monitors */\n\n/* menu-bar should go over monitors, alerts and tutorials */\n\n/* tw: show below menu bar normally */\n\n/* Block drag z-index: 1000; default 50 is overriden in blocks.css */\n\n/* so it is draggable into other panes */\n\n/* in most interfaces, the context menu is always on top */\n\n.stage-header_stage-header-wrapper_1F4gT {\n position: relative;\n}\n\n.stage-header_stage-header-wrapper-overlay_5vfJa {\n position: fixed;\n background-color: rgb(232, 237, 241);\n top: 0;\n left: 0;\n right: 0;\n z-index: 500;\n}\n\n/* tw: support dark mode */\n\n[theme="dark"] .stage-header_stage-header-wrapper-overlay_5vfJa {\n background-color: #111;\n}\n\n/* tw: do not show color in header when embedded */\n\n.stage-header_embedded_nhDjw {\n background-color: transparent;\n}\n\n.stage-header_stage-menu-wrapper_15JJt {\n display: flex;\n margin: auto;\n justify-content: space-between;\n flex-shrink: 0;\n align-items: center;\n height: 2.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.stage-header_embed-scratch-logo_2K5GA img {\n height: 1.6rem;\n vertical-align: middle;\n opacity: .6;\n}\n\n.stage-header_stage-size-row_14N65 {\n display: flex;\n}\n\n.stage-header_stage-size-toggle-group_17LtK {\n display: flex;\n}\n\n[dir="ltr"] .stage-header_stage-size-toggle-group_17LtK {\n margin-right: .2rem;\n}\n\n[dir="rtl"] .stage-header_stage-size-toggle-group_17LtK {\n margin-left: .2rem;\n}\n\n.stage-header_stage-button_hkl9B {\n display: block;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: calc(0.5rem / 2);\n width: calc(2rem + 2px);\n height: calc(2rem + 2px);\n background: hsla(0, 100%, 100%, 1);\n padding: 0.375rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: pointer;\n}\n\n[theme="dark"] .stage-header_stage-button_hkl9B {\n background: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n}\n\n.stage-header_stage-button-icon_3zzFK {\n width: 100%;\n height: 100%;\n}\n\n[dir="rtl"] .stage-header_stage-button-icon_3zzFK {\n transform: scaleX(-1);\n}\n\n[dir="ltr"] .stage-header_stage-button-first_y_CLF {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n[dir="ltr"] .stage-header_stage-button-last_eeKZ4 {\n border-left: none;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n[dir="rtl"] .stage-header_stage-button-first_y_CLF {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n[dir="rtl"] .stage-header_stage-button-last_eeKZ4 {\n border-right: none;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.stage-header_stage-button-toggled-off_AJ8yG {\n filter: saturate(0);\n}\n\n[theme="dark"] .stage-header_stage-button-toggled-off_AJ8yG img,\n\n[theme="dark"] .stage-header_stage-button_hkl9B:not(.stage-header_stage-button-first_y_CLF):not(.stage-header_stage-button-last_eeKZ4) img {\n filter: brightness(0) invert(1);\n opacity: 0.8;\n}\n\n.stage-header_embed-buttons_2Q7nj {\n display: flex;\n}\n\n[dir="ltr"] .stage-header_embed-buttons_2Q7nj > *:not(:last-child) {\n margin-right: .2rem;\n}\n\n[dir="rtl"] .stage-header_embed-buttons_2Q7nj > *:not(:last-child) {\n margin-left: .2rem;\n}\n',""]),t.locals={"stage-header-wrapper":"stage-header_stage-header-wrapper_1F4gT",stageHeaderWrapper:"stage-header_stage-header-wrapper_1F4gT","stage-header-wrapper-overlay":"stage-header_stage-header-wrapper-overlay_5vfJa",stageHeaderWrapperOverlay:"stage-header_stage-header-wrapper-overlay_5vfJa",embedded:"stage-header_embedded_nhDjw","stage-menu-wrapper":"stage-header_stage-menu-wrapper_15JJt",stageMenuWrapper:"stage-header_stage-menu-wrapper_15JJt","embed-scratch-logo":"stage-header_embed-scratch-logo_2K5GA",embedScratchLogo:"stage-header_embed-scratch-logo_2K5GA","stage-size-row":"stage-header_stage-size-row_14N65",stageSizeRow:"stage-header_stage-size-row_14N65","stage-size-toggle-group":"stage-header_stage-size-toggle-group_17LtK",stageSizeToggleGroup:"stage-header_stage-size-toggle-group_17LtK","stage-button":"stage-header_stage-button_hkl9B",stageButton:"stage-header_stage-button_hkl9B","stage-button-icon":"stage-header_stage-button-icon_3zzFK",stageButtonIcon:"stage-header_stage-button-icon_3zzFK","stage-button-first":"stage-header_stage-button-first_y_CLF",stageButtonFirst:"stage-header_stage-button-first_y_CLF","stage-button-last":"stage-header_stage-button-last_eeKZ4",stageButtonLast:"stage-header_stage-button-last_eeKZ4","stage-button-toggled-off":"stage-header_stage-button-toggled-off_AJ8yG",stageButtonToggledOff:"stage-header_stage-button-toggled-off_AJ8yG","embed-buttons":"stage-header_embed-buttons_2Q7nj",embedButtons:"stage-header_embed-buttons_2Q7nj"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .loupe_color-picker_1OaU- {\n position: absolute;\n top: 0;\n left: 0;\n border-radius: 100%;\n border: 4px solid hsla(0, 0%, 0%, 0.15);\n}\n",""]),t.locals={"color-picker":"loupe_color-picker_1OaU-",colorPicker:"loupe_color-picker_1OaU-"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n/*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/\n\n/* Toolbox z-index: 40; set in scratch-blocks */\n\n/* tooltips should go over add buttons if they overlap */\n\n/* monitors go over add buttons */\n\n/* "ask" block text input goes above monitors */\n\n/* menu-bar should go over monitors, alerts and tutorials */\n\n/* tw: show below menu bar normally */\n\n/* Block drag z-index: 1000; default 50 is overriden in blocks.css */\n\n/* so it is draggable into other panes */\n\n/* in most interfaces, the context menu is always on top */\n\n.monitor_monitor-container_2J9gl {\n position: absolute;\n background: hsla(215, 100%, 95%, 1); /* tw: do not look different in dark mode */\n z-index: 48;\n border: 1px solid hsla(0, 0%, 0%, 0.15);\n border-radius: calc(0.5rem / 2);\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-size: 0.75rem;\n transition: box-shadow 0.2s;\n pointer-events: all;\n overflow: hidden;\n color: #575e75; /* tw: explicitly set color to match Scratch */\n}\n\n.monitor_monitor_11Vhm:hover {\n cursor: pointer;\n}\n\n.monitor_dragging_2ZN-P {\n z-index: 1010;\n box-shadow: 3px 3px 5px #888888;\n}\n\n.monitor_default-monitor_2vCcZ {\n display: flex;\n flex-direction: column;\n padding: 3px;\n}\n\n.monitor_label_ci1ok {\n font-weight: bold;\n text-align: center;\n margin: 0 5px;\n}\n\n.monitor_value_3Yexa {\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: 40px;\n text-align: center;\n color: white;\n margin: 0 5px;\n border-radius: calc(0.5rem / 2);\n padding: 0 2px;\n white-space: pre-wrap;\n transform: translateZ(0); /* Fixes flickering in Safari */\n}\n\n.monitor_large-value_P-rAm {\n min-height: 1.4rem;\n min-width: 3rem;\n padding: 0.1rem 0.25rem;\n text-align: center;\n color: white;\n font-size: 1rem;\n white-space: pre-wrap;\n transform: translateZ(0); /* Fixes flickering in Safari */\n}\n\n.monitor_row_2y_kM {\n display: flex;\n flex-direction: row;\n}\n\n.monitor_slider_1CHwk {\n width: 100%;\n transform: translateZ(0); /* Fixes flickering in Safari */\n}\n\n.monitor_list-monitor_1FdIj {\n display: flex;\n flex-direction: column;\n}\n\n.monitor_list-header_-cp0o {\n background: hsla(0, 100%, 100%, 1);\n border-bottom: 1px solid hsla(0, 0%, 0%, 0.15);\n text-align: center;\n padding: 3px;\n font-size: 0.75rem;\n font-weight: bold;\n color: hsla(225, 15%, 40%, 1); /* tw: do not look different in dark mode */\n width: 100%;\n}\n\n.monitor_list-body_2OFZ6 {\n background: hsla(215, 100%, 95%, 1); /* tw: do not look different in dark mode */\n width: 100%;\n display: flex;\n flex-direction: column;\n overflow-x: hidden;\n flex-grow: 1;\n}\n\n.monitor_list-row_okCNn {\n display: flex;\n flex-direction: row;\n justify-content: space-around;\n align-items: center;\n padding: 2px;\n flex-shrink: 0;\n transform: translateZ(0); /* Keep sharp when scaled */\n}\n\n.monitor_list-index_7tKdl {\n font-weight: bold;\n color: hsla(225, 15%, 40%, 1); /* tw: do not look different in dark mode */\n margin: 0 3px;\n}\n\n.monitor_list-value_1zGfI {\n min-width: 40px;\n text-align: left;\n color: white;\n margin: 0 3px;\n border-radius: calc(0.5rem / 2);\n border: 1px solid hsla(0, 0%, 0%, 0.15);\n flex-grow: 1;\n height: 22px;\n}\n\n.monitor_list-footer_2HyG8 {\n background: hsla(0, 100%, 100%, 1);\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 3px;\n font-size: 0.75rem;\n font-weight: bold;\n border-top: 1px solid hsla(0, 0%, 0%, 0.15);\n color: hsla(225, 15%, 40%, 1); /* tw: do not look different in dark mode */\n}\n\n.monitor_list-empty_1UKsB {\n text-align: center;\n width: 100%;\n padding: 5px;\n}\n\n.monitor_input-wrapper_2yExa {\n position: relative;\n overflow: hidden;\n display: flex;\n align-items: center;\n background: rgba(0, 0, 0, 0.1);\n}\n\n.monitor_value-inner_3E9Ou {\n padding: 3px 5px;\n min-height: 22px;\n overflow: hidden; /* Don\'t let long values escape container */\n text-overflow: ellipsis;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text; /* Allow selecting list values for 2.0 compatibility, only relevant in player */\n white-space: pre;\n}\n\n.monitor_list-input_3kw5o {\n padding: 3px 5px;\n border: 0;\n background: none;\n color: hsla(0, 100%, 100%, 1);\n outline: none;\n font-size: 0.75rem;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n /* Workaround for Firefox */\n width: 0;\n flex: 1 1 auto;\n}\n\n.monitor_remove-button_AhlwG {\n padding: 0;\n padding-right: 5px;\n cursor: pointer;\n color: hsla(0, 100%, 100%, 1);\n}\n\n.monitor_add-button_2lmvI {\n cursor: pointer;\n margin-right: 3px;\n}\n\n.monitor_resize-handle_3WWBV {\n cursor: nwse-resize;\n margin-left: 3px;\n}\n\n.monitor_footer-length_2_QAb {\n text-align: center;\n}\n',""]),t.locals={"monitor-container":"monitor_monitor-container_2J9gl",monitorContainer:"monitor_monitor-container_2J9gl",monitor:"monitor_monitor_11Vhm",dragging:"monitor_dragging_2ZN-P","default-monitor":"monitor_default-monitor_2vCcZ",defaultMonitor:"monitor_default-monitor_2vCcZ",label:"monitor_label_ci1ok",value:"monitor_value_3Yexa","large-value":"monitor_large-value_P-rAm",largeValue:"monitor_large-value_P-rAm",row:"monitor_row_2y_kM",slider:"monitor_slider_1CHwk","list-monitor":"monitor_list-monitor_1FdIj",listMonitor:"monitor_list-monitor_1FdIj","list-header":"monitor_list-header_-cp0o",listHeader:"monitor_list-header_-cp0o","list-body":"monitor_list-body_2OFZ6",listBody:"monitor_list-body_2OFZ6","list-row":"monitor_list-row_okCNn",listRow:"monitor_list-row_okCNn","list-index":"monitor_list-index_7tKdl",listIndex:"monitor_list-index_7tKdl","list-value":"monitor_list-value_1zGfI",listValue:"monitor_list-value_1zGfI","list-footer":"monitor_list-footer_2HyG8",listFooter:"monitor_list-footer_2HyG8","list-empty":"monitor_list-empty_1UKsB",listEmpty:"monitor_list-empty_1UKsB","input-wrapper":"monitor_input-wrapper_2yExa",inputWrapper:"monitor_input-wrapper_2yExa","value-inner":"monitor_value-inner_3E9Ou",valueInner:"monitor_value-inner_3E9Ou","list-input":"monitor_list-input_3kw5o",listInput:"monitor_list-input_3kw5o","remove-button":"monitor_remove-button_AhlwG",removeButton:"monitor_remove-button_AhlwG","add-button":"monitor_add-button_2lmvI",addButton:"monitor_add-button_2lmvI","resize-handle":"monitor_resize-handle_3WWBV",resizeHandle:"monitor_resize-handle_3WWBV","footer-length":"monitor_footer-length_2_QAb",footerLength:"monitor_footer-length_2_QAb"}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .slider-prompt_modal-content_2vVm4 {\n width: 360px;\n} .slider-prompt_body_2ZkXL {\n background: hsla(0, 100%, 100%, 1);\n padding: 1.5rem 2.25rem;\n} [theme="dark"] .slider-prompt_body_2ZkXL {\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} .slider-prompt_label_cYsiu {\n font-weight: 500;\n margin: 0 0 0.75rem;\n} .slider-prompt_min-input_1IxXX, .slider-prompt_max-input_1Nwbv {\n margin-bottom: 1.5rem;\n width: 100%;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 5px;\n padding: 0 1rem;\n height: 3rem;\n color: hsla(225, 15%, 40%, 0.75);\n font-size: .875rem;\n} [theme="dark"] .slider-prompt_min-input_1IxXX, [theme="dark"] .slider-prompt_max-input_1Nwbv {\n background: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n color: white;\n} .slider-prompt_button-row_32aCX {\n font-weight: bolder;\n text-align: right;\n} .slider-prompt_button-row_32aCX button {\n padding: 0.75rem 1rem;\n border-radius: 0.25rem;\n background: white;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n font-weight: 600;\n font-size: 0.85rem;\n} .slider-prompt_button-row_32aCX button.slider-prompt_ok-button_vLj7c {\n background: hsla(0, 100%, 65%, 1);\n border: hsla(0, 100%, 65%, 1);\n color: white;\n} [dir="ltr"] .slider-prompt_button-row_32aCX button + button {\n margin-left: 0.5rem;\n} [dir="rtl"] .slider-prompt_button-row_32aCX button + button {\n margin-right: 0.5rem;\n} .slider-prompt_cancel-button_RuYHK {\n color: black;\n}\n',""]),t.locals={"modal-content":"slider-prompt_modal-content_2vVm4",modalContent:"slider-prompt_modal-content_2vVm4",body:"slider-prompt_body_2ZkXL",label:"slider-prompt_label_cYsiu","min-input":"slider-prompt_min-input_1IxXX",minInput:"slider-prompt_min-input_1IxXX","max-input":"slider-prompt_max-input_1Nwbv",maxInput:"slider-prompt_max-input_1Nwbv","button-row":"slider-prompt_button-row_32aCX",buttonRow:"slider-prompt_button-row_32aCX","ok-button":"slider-prompt_ok-button_vLj7c",okButton:"slider-prompt_ok-button_vLj7c","cancel-button":"slider-prompt_cancel-button_RuYHK",cancelButton:"slider-prompt_cancel-button_RuYHK"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".monitor-list_monitor-list_20k-y {\n /* Width/height are set by the component, margin: auto centers in fullscreen */\n margin: auto;\n pointer-events: none;\n overflow: hidden;\n}\n\n.monitor-list_monitor-list-scaler_143tA {\n /* Scaling for monitors should happen from the top left */\n transform-origin: left top;\n}\n\n::-ms-clear { display: none; }\n",""]),t.locals={"monitor-list":"monitor-list_monitor-list_20k-y",monitorList:"monitor-list_monitor-list_20k-y","monitor-list-scaler":"monitor-list_monitor-list-scaler_143tA",monitorListScaler:"monitor-list_monitor-list-scaler_143tA"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n.question_question-container_OuJwy {\n margin: 0.5rem;\n border: 1px solid hsla(0, 0%, 0%, 0.15);\n border-radius: 0.5rem;\n border-width: 2px;\n padding: 1rem;\n background: white;\n}\n\n.question_question-label_1tRo2 {\n font-size: 0.75rem;\n font-weight: bold;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n color: hsla(225, 15%, 40%, 1);\n padding-bottom: 0.5rem;\n}\n\n.question_question-input_1oAB7 {\n display: flex; /* Keeps the input from going outside this container */\n position: relative;\n}\n\n/* tw: input should not look different in dark mode */\n\n[theme="dark"] .question_question-input_1oAB7 input {\n color: hsla(225, 15%, 40%, 1);\n background: hsla(215, 75%, 95%, 1);\n border-color: hsla(215, 50%, 90%, 1);\n}\n\n[theme="dark"] .question_question-input_1oAB7 input:hover,\n[theme="dark"] .question_question-input_1oAB7 input:focus {\n border-color: hsla(0, 100%, 65%, 1);\n}\n\n.question_question-submit-button_3nYah {\n position: absolute;\n top: calc(0.5rem / 2);\n\n width: calc(2rem - 0.5rem);\n height: calc(2rem - 0.5rem);\n\n border: none;\n border-radius: 100%;\n\n color: white;\n background: hsla(0, 100%, 65%, 1);\n}\n\n[dir="ltr"] .question_question-submit-button_3nYah {\n right: calc(0.5rem / 2);\n}\n\n[dir="rtl"] .question_question-submit-button_3nYah {\n left: calc(0.5rem / 2);\n}\n\n/* Input overrides: width, font-weight, focus outline and padding */\n\n.question_question-input_1oAB7 > input {\n width: 100%;\n font-weight: normal;\n}\n\n[dir="ltr"] .question_question-input_1oAB7 > input {\n padding: 0 2rem 0 .75rem; /* To make room for the submit button */\n}\n\n[dir="rtl"] .question_question-input_1oAB7 > input {\n padding: 0 .75rem 0 2rem; /* To make room for the submit button */\n}\n\n.question_question-input_1oAB7 > input:focus {\n box-shadow: 0px 0px 0px 3px hsla(0, 100%, 65%, 0.35);\n}\n\n.question_question-submit-button-icon_upm57 {\n width: calc(2rem - 0.5rem);\n height: calc(2rem - 0.5rem);\n position: relative;\n right: -7px;\n left: -7px;\n}\n',""]),t.locals={"question-container":"question_question-container_OuJwy",questionContainer:"question_question-container_OuJwy","question-label":"question_question-label_1tRo2",questionLabel:"question_question-label_1tRo2","question-input":"question_question-input_1oAB7",questionInput:"question_question-input_1oAB7","question-submit-button":"question_question-submit-button_3nYah",questionSubmitButton:"question_question-submit-button_3nYah","question-submit-button-icon":"question_question-submit-button-icon_upm57",questionSubmitButtonIcon:"question_question-submit-button-icon_upm57"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"@keyframes mic-indicator_popIn_2A2Un {\n from {transform: scale(0.5)}\n to {transform: scale(1)}\n}\n\n.mic-indicator_mic-img_Su3yZ {\n margin: 10px;\n transform-origin: center;\n animation: mic-indicator_popIn_2A2Un 0.1s ease-in-out;\n}\n",""]),t.locals={"mic-img":"mic-indicator_mic-img_Su3yZ",micImg:"mic-indicator_mic-img_Su3yZ",popIn:"mic-indicator_popIn_2A2Un"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n/*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/\n\n/* Toolbox z-index: 40; set in scratch-blocks */\n\n/* tooltips should go over add buttons if they overlap */\n\n/* monitors go over add buttons */\n\n/* "ask" block text input goes above monitors */\n\n/* menu-bar should go over monitors, alerts and tutorials */\n\n/* tw: show below menu bar normally */\n\n/* Block drag z-index: 1000; default 50 is overriden in blocks.css */\n\n/* so it is draggable into other panes */\n\n/* in most interfaces, the context menu is always on top */\n\n.stage_stage_1fD7k {\n /*\n Fixes a few extra pixels of margin/padding, that adds on to the bottom\n of the element, which messes up the chrome padding consistency\n */\n display: block;\n\n border-radius: 0.5rem;\n border: 0.0625rem solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n overflow: hidden;\n\n /* @todo: This is for overriding the value being set somewhere. Where is it being set? */\n background-color: transparent;\n\n /* Allow custom touch handling to prevent scrolling on Edge */\n touch-action: none;\n\n /* Make sure border is not included in size calculation */\n box-sizing: content-box !important;\n\n /* enforce overflow + reset position of absolutely-positioned children */\n position: relative;\n\n /* anything in the stage such as monitor scrollbars should always use light theme */\n color-scheme: light;\n}\n\n.stage_stage_1fD7k.stage_full-screen_ZO7xi {\n /* tw: remove fullscreen border */\n}\n\n.stage_with-color-picker_1lNd5 {\n cursor: none;\n z-index: 2010;\n}\n\n.stage_color-picker-background_2wCVq {\n position: fixed;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.55);\n display: block;\n z-index: 2000;\n top: 0;\n left: 0;\n}\n\n.stage_stage-wrapper_eRRuk {\n position: relative;\n}\n\n/* we want stage overlays to all be positioned in the same spot as the stage, but can\'t put them inside the border\nbecause we want their overflow to be visible, and the bordered element must have overflow: hidden set so that the\nstage doesn\'t "spill" out from under its rounded corners. instead, shift these over by the border width. */\n\n.stage_stage-overlays_eE14L {\n position: absolute;\n top: 0.0625rem;\n left: 0.0625rem;\n\n /* the overlay itself should not capture pointer events; only its child elements can do that */\n pointer-events: none;\n}\n\n.stage_stage-overlays_eE14L.stage_full-screen_ZO7xi {\n top: 0.1875rem;\n left: 0.1875rem;\n}\n\n.stage_monitor-wrapper_2w6m8,\n.stage_frame-wrapper_1JaS_,\n.stage_green-flag-overlay-wrapper_2hUi_ {\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n\n.stage_custom-overlays_ONYEZ {\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.stage_dragging-sprite_pxcJj {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1020;\n filter: drop-shadow(5px 5px 5px hsla(0, 0%, 0%, 0.15));\n}\n\n.stage_stage-bottom-wrapper_KIBfo {\n position: absolute;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n top: 0;\n left: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.stage_mic-indicator_3AvN8 {\n transform-origin: bottom right;\n z-index: 45;\n pointer-events: none;\n align-self: flex-end;\n}\n\n.stage_question-wrapper_3ukB4 {\n z-index: 49;\n pointer-events: auto;\n}\n\n.stage_frame_OVq5G {\n background: hsla(0, 100%, 65%, 0.35);\n border: 2px solid hsla(0, 100%, 65%, 1);\n border-radius: 0.5rem;\n animation-name: stage_flash_iuAnU;\n animation-duration: 0.75s;\n animation-fill-mode: forwards; /* Leave at 0 opacity after animation */\n}\n\n.stage_green-flag-overlay-wrapper_2hUi_ {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n background: rgba(0,0,0,0.25);\n border-radius: 0.5rem;\n pointer-events: all;\n cursor: pointer;\n}\n\n.stage_green-flag-overlay_gNXnv {\n padding: 1rem;\n border-radius: 100%;\n background: rgba(255,255,255,0.75);\n border: 3px solid hsla(0, 100%, 100%, 1);\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: border-box;\n width: 5rem;\n height: 5rem;\n}\n\n.stage_green-flag-overlay_gNXnv > img {\n width: 100%;\n object-fit: contain;\n}\n\n@keyframes stage_flash_iuAnU {\n 0% { opacity: 1; }\n 100% { opacity: 0; }\n}\n',""]),t.locals={stage:"stage_stage_1fD7k","full-screen":"stage_full-screen_ZO7xi",fullScreen:"stage_full-screen_ZO7xi","with-color-picker":"stage_with-color-picker_1lNd5",withColorPicker:"stage_with-color-picker_1lNd5","color-picker-background":"stage_color-picker-background_2wCVq",colorPickerBackground:"stage_color-picker-background_2wCVq","stage-wrapper":"stage_stage-wrapper_eRRuk",stageWrapper:"stage_stage-wrapper_eRRuk","stage-overlays":"stage_stage-overlays_eE14L",stageOverlays:"stage_stage-overlays_eE14L","monitor-wrapper":"stage_monitor-wrapper_2w6m8",monitorWrapper:"stage_monitor-wrapper_2w6m8","frame-wrapper":"stage_frame-wrapper_1JaS_",frameWrapper:"stage_frame-wrapper_1JaS_","green-flag-overlay-wrapper":"stage_green-flag-overlay-wrapper_2hUi_",greenFlagOverlayWrapper:"stage_green-flag-overlay-wrapper_2hUi_","custom-overlays":"stage_custom-overlays_ONYEZ",customOverlays:"stage_custom-overlays_ONYEZ","dragging-sprite":"stage_dragging-sprite_pxcJj",draggingSprite:"stage_dragging-sprite_pxcJj","stage-bottom-wrapper":"stage_stage-bottom-wrapper_KIBfo",stageBottomWrapper:"stage_stage-bottom-wrapper_KIBfo","mic-indicator":"stage_mic-indicator_3AvN8",micIndicator:"stage_mic-indicator_3AvN8","question-wrapper":"stage_question-wrapper_3ukB4",questionWrapper:"stage_question-wrapper_3ukB4",frame:"stage_frame_OVq5G",flash:"stage_flash_iuAnU","green-flag-overlay":"stage_green-flag-overlay_gNXnv",greenFlagOverlay:"stage_green-flag-overlay_gNXnv"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/ /* Toolbox z-index: 40; set in scratch-blocks */ /* tooltips should go over add buttons if they overlap */ /* monitors go over add buttons */ /* "ask" block text input goes above monitors */ /* menu-bar should go over monitors, alerts and tutorials */ /* tw: show below menu bar normally */ /* Block drag z-index: 1000; default 50 is overriden in blocks.css */ /* so it is draggable into other panes */ /* in most interfaces, the context menu is always on top */ .loader_background_2DPrW {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 490;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: hsla(0, 100%, 65%, 1);\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n text-align: center;\n color: white;\n} [theme="dark"] .loader_background_2DPrW {\n background-color: #333;\n} .loader_fullscreen_29EhP {\n /* Break out of the layout using position: fixed to cover the whole screen */\n position: fixed;\n /* Use the fullscreen stage z-index to allow covering full-screen mode */\n z-index: 500;\n} .loader_block-animation_12MqO {\n width: 125px;\n height: 150px;\n margin: 50px auto 0px;\n} .loader_block-animation_12MqO img {\n display: block;\n position: relative;\n height: 30%;\n margin-top: -4px;\n} .loader_top-block_3P7pK {\n animation: loader_top-slide-in_8ngR8 1.5s ease infinite;\n} .loader_middle-block_CKcTg {\n animation: loader_middle-slide-in_In2DU 1.5s ease infinite;\n} .loader_bottom-block_1-3rO {\n animation: loader_bottom-slide-in_2DZ1B 1.5s ease infinite;\n} [dir="rtl"] .loader_top-block_3P7pK {\n animation: loader_top-slide-in-rtl_1vHi4 1.5s ease infinite;\n} [dir="rtl"] .loader_middle-block_CKcTg {\n animation: loader_middle-slide-in-rtl_21ALw 1.5s ease infinite;\n} [dir="rtl"] .loader_bottom-block_1-3rO {\n animation: loader_bottom-slide-in-rtl_3kdB0 1.5s ease infinite;\n} @keyframes loader_top-slide-in_8ngR8 {\n 0% {\n transform: translateY(50px);\n opacity: 0;\n }\n\n 33% {\n transform: translateY(0px);\n opacity: 1;\n }\n} @keyframes loader_middle-slide-in_In2DU {\n 0% {\n transform: translateY(50px);\n opacity: 0;\n }\n\n 33% {\n transform: translateY(50px);\n opacity: 0;\n }\n\n 66% {\n transform: translateY(0px);\n opacity: 1;\n }\n} @keyframes loader_bottom-slide-in_2DZ1B {\n 0% {\n transform: translateY(50px);\n opacity: 0;\n }\n\n 66% {\n transform: translateY(50px);\n opacity: 0;\n }\n\n 100% {\n transform: translateY(0px);\n opacity: 1;\n }\n} @keyframes loader_top-slide-in-rtl_1vHi4 {\n 0% {\n transform: translateY(50px) scaleX(-1);\n opacity: 0;\n }\n\n 33% {\n transform: translateY(0px) scaleX(-1);\n opacity: 1;\n }\n 100% {\n transform: translateY(0px) scaleX(-1);\n opacity: 1;\n }\n} @keyframes loader_middle-slide-in-rtl_21ALw {\n 0% {\n transform: translateY(50px) scaleX(-1);\n opacity: 0;\n }\n\n 33% {\n transform: translateY(50px) scaleX(-1);\n opacity: 0;\n }\n\n 66% {\n transform: translateY(0px) scaleX(-1);\n opacity: 1;\n }\n 100% {\n transform: translateY(0px) scaleX(-1);\n opacity: 1;\n }\n} @keyframes loader_bottom-slide-in-rtl_3kdB0 {\n 0% {\n transform: translateY(50px) scaleX(-1);\n opacity: 0;\n }\n\n 66% {\n transform: translateY(50px) scaleX(-1);\n opacity: 0;\n }\n\n 100% {\n transform: translateY(0px) scaleX(-1);\n opacity: 1;\n }\n} .loader_title_1tlje {\n font-size: 2rem;\n font-weight: bold;\n margin: 0.75rem 0;\n} .loader_message-container-outer_3oT0S {\n height: 30px;\n overflow: hidden;\n} .loader_message-container-inner_1L7LX {\n transition: transform 0.5s;\n} .loader_message_3yQvj {\n height: 20px;\n margin: 5px 0;\n} .loader_tw-progress-outer_2BGnX {\n position: relative;\n width: 250px;\n height: 5px;\n border: 1px solid white;\n margin: auto;\n} .loader_tw-progress-inner_3hE3h {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 0;\n background-color: white;\n}\n',""]),t.locals={background:"loader_background_2DPrW",fullscreen:"loader_fullscreen_29EhP","block-animation":"loader_block-animation_12MqO",blockAnimation:"loader_block-animation_12MqO","top-block":"loader_top-block_3P7pK",topBlock:"loader_top-block_3P7pK","top-slide-in":"loader_top-slide-in_8ngR8",topSlideIn:"loader_top-slide-in_8ngR8","middle-block":"loader_middle-block_CKcTg",middleBlock:"loader_middle-block_CKcTg","middle-slide-in":"loader_middle-slide-in_In2DU",middleSlideIn:"loader_middle-slide-in_In2DU","bottom-block":"loader_bottom-block_1-3rO",bottomBlock:"loader_bottom-block_1-3rO","bottom-slide-in":"loader_bottom-slide-in_2DZ1B",bottomSlideIn:"loader_bottom-slide-in_2DZ1B","top-slide-in-rtl":"loader_top-slide-in-rtl_1vHi4",topSlideInRtl:"loader_top-slide-in-rtl_1vHi4","middle-slide-in-rtl":"loader_middle-slide-in-rtl_21ALw",middleSlideInRtl:"loader_middle-slide-in-rtl_21ALw","bottom-slide-in-rtl":"loader_bottom-slide-in-rtl_3kdB0",bottomSlideInRtl:"loader_bottom-slide-in-rtl_3kdB0",title:"loader_title_1tlje","message-container-outer":"loader_message-container-outer_3oT0S",messageContainerOuter:"loader_message-container-outer_3oT0S","message-container-inner":"loader_message-container-inner_1L7LX",messageContainerInner:"loader_message-container-inner_1L7LX",message:"loader_message_3yQvj","tw-progress-outer":"loader_tw-progress-outer_2BGnX",twProgressOuter:"loader_tw-progress-outer_2BGnX","tw-progress-inner":"loader_tw-progress-inner_3hE3h",twProgressInner:"loader_tw-progress-inner_3hE3h"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n/*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/\n\n/* Toolbox z-index: 40; set in scratch-blocks */\n\n/* tooltips should go over add buttons if they overlap */\n\n/* monitors go over add buttons */\n\n/* "ask" block text input goes above monitors */\n\n/* menu-bar should go over monitors, alerts and tutorials */\n\n/* tw: show below menu bar normally */\n\n/* Block drag z-index: 1000; default 50 is overriden in blocks.css */\n\n/* so it is draggable into other panes */\n\n/* in most interfaces, the context menu is always on top */\n\n/* tw: this changes the loading screen to be contained to the stage */\n\n.stage-wrapper_stage-wrapper_2bejr {\n position: relative;\n}\n\n.stage-wrapper_stage-wrapper_2bejr * {\n box-sizing: border-box;\n}\n\n.stage-wrapper_stage-canvas-wrapper_3ewmd {\n /* Hides negative space between edge of rounded corners + container, when selected */\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.stage-wrapper_stage-wrapper_2bejr.stage-wrapper_full-screen_2hjMb {\n position: fixed;\n top: 2.75rem;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 500;\n background-color: hsla(0, 100%, 100%, 1);\n /* spacing between stage and control bar (on the top), or between\n stage and window edges (on left/right/bottom) */\n padding: 0.1875rem;\n\n /* this centers the stage */\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n/* tw: support dark mode */\n\n[theme="dark"] .stage-wrapper_stage-wrapper_2bejr.stage-wrapper_full-screen_2hjMb {\n background-color: #111;\n}\n\n/* tw: do not show color in embeds */\n\n.stage-wrapper_stage-wrapper_2bejr.stage-wrapper_embedded_10ZS6 {\n background-color: transparent;\n}\n',""]),t.locals={"stage-wrapper":"stage-wrapper_stage-wrapper_2bejr",stageWrapper:"stage-wrapper_stage-wrapper_2bejr","stage-canvas-wrapper":"stage-wrapper_stage-canvas-wrapper_3ewmd",stageCanvasWrapper:"stage-wrapper_stage-canvas-wrapper_3ewmd","full-screen":"stage-wrapper_full-screen_2hjMb",fullScreen:"stage-wrapper_full-screen_2hjMb",embedded:"stage-wrapper_embedded_10ZS6"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .community-button_community-button_2Lo_g {\n box-shadow: 0 0 0 1px var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} .community-button_community-button-icon_1IFvv {\n height: 1.25rem;\n}\n",""]),t.locals={"community-button":"community-button_community-button_2Lo_g",communityButton:"community-button_community-button_2Lo_g","community-button-icon":"community-button_community-button-icon_1IFvv",communityButtonIcon:"community-button_community-button-icon_1IFvv"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .share-button_share-button_Nxxf0 {\n background: hsla(30, 100%, 55%, 1);\n} .share-button_share-button-is-shared_1tjKq {\n background: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n cursor: default;\n}\n",""]),t.locals={"share-button":"share-button_share-button_Nxxf0",shareButton:"share-button_share-button_Nxxf0","share-button-is-shared":"share-button_share-button-is-shared_1tjKq",shareButtonIsShared:"share-button_share-button-is-shared_1tjKq"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/*\n * NOTE: the copious use of `important` is needed to overwrite\n * the default tooltip styling, and is required by the 3rd party\n * library being used, `react-tooltip`\n */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/\n\n/* Toolbox z-index: 40; set in scratch-blocks */\n\n/* tooltips should go over add buttons if they overlap */\n\n/* monitors go over add buttons */\n\n/* "ask" block text input goes above monitors */\n\n/* menu-bar should go over monitors, alerts and tutorials */\n\n/* tw: show below menu bar normally */\n\n/* Block drag z-index: 1000; default 50 is overriden in blocks.css */\n\n/* so it is draggable into other panes */\n\n/* in most interfaces, the context menu is always on top */\n\n.coming-soon_coming-soon_3x7RD {\n background-color: hsla(30, 100%, 55%, 1) !important;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15)) !important;\n border-radius: calc(0.5rem / 2) !important;\n box-shadow: 0 0 .5rem hsla(0, 0%, 0%, 0.15) !important;\n padding: .75rem 1rem !important;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important;\n font-size: 1rem !important;\n line-height: 1.25rem !important;\n z-index: 47 !important;\n}\n\n.coming-soon_coming-soon_3x7RD:after {\n content: "";\n border-top: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15)) !important;\n border-left: 0 !important;\n border-bottom: 0 !important;\n border-right: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15)) !important;\n border-radius: calc(0.5rem / 2);\n background-color: hsla(30, 100%, 55%, 1) !important;\n height: 1rem !important;\n width: 1rem !important;\n}\n\n.coming-soon_show_1Kszm,\n.coming-soon_show_1Kszm:before,\n.coming-soon_show_1Kszm:after {\n opacity: 1 !important;\n}\n\n.coming-soon_left_O4X9A:after {\n margin-top: -.5rem !important;\n right: -.5rem !important;\n transform: rotate(45deg) !important;\n}\n\n.coming-soon_right_1PkI6:after {\n margin-top: -.5rem !important;\n left: -.5rem !important;\n transform: rotate(-135deg) !important;\n}\n\n.coming-soon_top_13j8p:after {\n margin-right: -.5rem !important;\n bottom: -.5rem !important;\n transform: rotate(135deg) !important;\n}\n\n.coming-soon_bottom_2raz4:after {\n margin-left: -.5rem !important;\n top: -.5rem !important;\n transform: rotate(-45deg) !important;\n}\n\n.coming-soon_coming-soon-image_255bz {\n width: 1.25rem;\n height: 1.25rem;\n vertical-align: middle;\n}\n\n[dir="ltr"] .coming-soon_coming-soon-image_255bz {\n margin-left: .125rem;\n}\n\n[dir="rtl"] .coming-soon_coming-soon-image_255bz {\n margin-right: .125rem;\n}\n',""]),t.locals={"coming-soon":"coming-soon_coming-soon_3x7RD",comingSoon:"coming-soon_coming-soon_3x7RD",show:"coming-soon_show_1Kszm",left:"coming-soon_left_O4X9A",right:"coming-soon_right_1PkI6",top:"coming-soon_top_13j8p",bottom:"coming-soon_bottom_2raz4","coming-soon-image":"coming-soon_coming-soon-image_255bz",comingSoonImage:"coming-soon_coming-soon-image_255bz"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ /* Position the language select over the language icon, and make it transparent */ .language-selector_language-select_8Vfnm {\n position: absolute;\n width: 3rem;\n height: 3rem;\n opacity: 0;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-size: .875rem;\n color: hsla(225, 15%, 40%, 1);\n background: hsla(0, 100%, 100%, 1);\n} [theme="dark"] .language-selector_language-select_8Vfnm {\n color: hsla(0, 100%, 100%, 1);\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} [dir="ltr"] .language-selector_language-select_8Vfnm {\n right: 0;\n} [dir="rtl"] .language-selector_language-select_8Vfnm {\n left: 0;\n} .language-selector_language-select_8Vfnm option {\n opacity: 1;\n} .language-selector_language-select_8Vfnm:focus {\n border: 1px solid white;\n}\n',""]),t.locals={"language-select":"language-selector_language-select_8Vfnm",languageSelect:"language-selector_language-select_8Vfnm"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .menu_menu_3k7QT {\n position: absolute;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 0 0 8px 8px;\n background-color: hsla(0, 100%, 65%, 1);\n padding: 0;\n margin: 0;\n min-width: 186px;\n /* tw: no max width */\n /* max-width: 260px; */\n overflow: visible;\n color: hsla(0, 100%, 100%, 1);\n box-shadow: 0 8px 8px 0 hsla(0, 0%, 0%, 0.15);\n} [theme="dark"] .menu_menu_3k7QT {\n background-color: #333;\n} .menu_menu_3k7QT.menu_left_dujsV {\n right: 0;\n} .menu_menu_3k7QT.menu_right_3PQ4S {\n left: 0;\n} .menu_menu-item_3EwYA {\n display: block;\n line-height: 34px;\n white-space: nowrap;\n padding: 0 10px;\n font-size: .75rem;\n margin: 0;\n font-weight: bold;\n} .menu_menu-item_3EwYA.menu_active_ebXO6,\n.menu_menu-item_3EwYA:hover {\n background-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} .menu_menu-item_3EwYA.menu_hoverable_3u9dt {\n cursor: pointer;\n} .menu_menu-section_2U-v6 {\n border-top: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n',""]),t.locals={menu:"menu_menu_3k7QT",left:"menu_left_dujsV",right:"menu_right_3PQ4S","menu-item":"menu_menu-item_3EwYA",menuItem:"menu_menu-item_3EwYA",active:"menu_active_ebXO6",hoverable:"menu_hoverable_3u9dt","menu-section":"menu_menu-section_2U-v6",menuSection:"menu_menu-section_2U-v6"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ /*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/ /* Toolbox z-index: 40; set in scratch-blocks */ /* tooltips should go over add buttons if they overlap */ /* monitors go over add buttons */ /* "ask" block text input goes above monitors */ /* menu-bar should go over monitors, alerts and tutorials */ /* tw: show below menu bar normally */ /* Block drag z-index: 1000; default 50 is overriden in blocks.css */ /* so it is draggable into other panes */ /* in most interfaces, the context menu is always on top */ /*\nIf project-title-input.jsx is part of a menu bar say menu-bar.jsx, it can have additional css classes that\ncan set a width for example or what it should do in a flex box (eg. grow).\n*/ .project-title-input_title-field_en5Gd {\n border: 1px dashed var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: calc(0.5rem / 2);\n -webkit-border-radius: calc(0.5rem / 2);\n -moz-border-radius: calc(0.5rem / 2);\n background-color: hsla(0, 100%, 100%, 0.25);\n background-clip: padding-box;\n -webkit-background-clip: padding-box;\n height: auto;\n padding: .5rem;\n} .project-title-input_title-field_en5Gd {\n color: hsla(0, 100%, 100%, 1);\n font-weight: bold;\n font-size: .8rem;\n} .project-title-input_title-field_en5Gd::-ms-input-placeholder {\n color: hsla(0, 100%, 100%, 1);\n font-weight: normal;\n font-size: .8rem;\n font-style: italic;\n} .project-title-input_title-field_en5Gd::placeholder {\n color: hsla(0, 100%, 100%, 1);\n font-weight: normal;\n font-size: .8rem;\n font-style: italic;\n} .project-title-input_title-field_en5Gd:hover {\n background-color: hsla(0, 100%, 100%, 0.5);\n} [theme="dark"] .project-title-input_title-field_en5Gd:hover {\n background-color: rgba(0, 0, 0, 0.5);\n} .project-title-input_title-field_en5Gd:focus {\n outline:none;\n border: 1px solid hsla(0, 100%, 100%, 0);\n box-shadow: 0 0 0 calc(0.5rem * .5) hsla(0, 100%, 100%, 0.25);\n background-color: hsla(0, 100%, 100%, 1);\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n} [theme="dark"] .project-title-input_title-field_en5Gd:focus {\n background-color: rgba(0, 0, 0, 0.3);\n}\n',""]),t.locals={"title-field":"project-title-input_title-field_en5Gd",titleField:"project-title-input_title-field_en5Gd"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .user-avatar_user-thumbnail_jSYS1 {\n width: 2rem;\n height: 2rem;\n border-radius: calc(0.5rem / 2);\n vertical-align: middle;\n box-shadow: 0 0 0 1px var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n",""]),t.locals={"user-thumbnail":"user-avatar_user-thumbnail_jSYS1",userThumbnail:"user-avatar_user-thumbnail_jSYS1"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .author-info_author-info_2Pliw {\n color: hsla(0, 100%, 100%, 1);\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n cursor: default;\n} .author-info_avatar_31Mo8 {\n margin-right: .5625rem;\n} .author-info_project-title_h7Gcj {\n max-width: 12rem;\n display: block;\n overflow: hidden;\n font-size: 0.875rem;\n font-weight: bold;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0;\n padding: 0;\n} .author-info_username-line_18E8B {\n max-width: 12rem;\n font-size: 0.75rem;\n display: block;\n overflow: hidden;\n font-weight: normal;\n text-overflow: ellipsis;\n white-space: nowrap;\n} .author-info_username_2Ov2- {\n font-weight: bold;\n} .author-info_link_3EUX3 {\n text-decoration: none;\n color: hsla(0, 100%, 100%, 1) !important;\n} .author-info_link_3EUX3:hover {\n text-decoration: underline;\n} .author-info_link_3EUX3 .author-info_author-info_2Pliw {\n cursor: pointer;\n}\n',""]),t.locals={"author-info":"author-info_author-info_2Pliw",authorInfo:"author-info_author-info_2Pliw",avatar:"author-info_avatar_31Mo8","project-title":"author-info_project-title_h7Gcj",projectTitle:"author-info_project-title_h7Gcj","username-line":"author-info_username-line_18E8B",usernameLine:"author-info_username-line_18E8B",username:"author-info_username_2Ov2-",link:"author-info_link_3EUX3"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .inline-message_inline-message_2feS3 {\n color: hsla(0, 100%, 100%, 1);\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n font-size: .8125rem;\n} .inline-message_success_1jfE0 {\n color: hsla(0, 100%, 100%, 0.75);\n} .inline-message_info_E7dNO {\n color: hsla(0, 100%, 100%, 1);\n} .inline-message_warn_3DS5G {\n color: hsla(30, 100%, 70%, 1);\n} .inline-message_spinner_1vybW {\n margin-right: 0.5rem;\n}\n',""]),t.locals={"inline-message":"inline-message_inline-message_2feS3",inlineMessage:"inline-message_inline-message_2feS3",success:"inline-message_success_1jfE0",info:"inline-message_info_E7dNO",warn:"inline-message_warn_3DS5G",spinner:"inline-message_spinner_1vybW"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'.save-status_save-now_2shdk {\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n cursor: pointer;\n}\n',""]),t.locals={"save-now":"save-status_save-now_2shdk",saveNow:"save-status_save-now_2shdk"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ /*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/ /* Toolbox z-index: 40; set in scratch-blocks */ /* tooltips should go over add buttons if they overlap */ /* monitors go over add buttons */ /* "ask" block text input goes above monitors */ /* menu-bar should go over monitors, alerts and tutorials */ /* tw: show below menu bar normally */ /* Block drag z-index: 1000; default 50 is overriden in blocks.css */ /* so it is draggable into other panes */ /* in most interfaces, the context menu is always on top */ .menu-bar_menu-bar_JcuHF {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n flex-wrap: nowrap;\n\n /*\n For most things, we shouldn\'t explicitly set height, and let the\n content push the element to whatever fits. Using a fixed height\n instead, will help us subtract the value we assign from the body,\n adding up to a perfect 100%. This means we don\'t need to set\n overflow: hidden, which makes it hard to debug. border-box\n simplifies by all of this by removing padding from the equation.\n */\n box-sizing: border-box;\n height: 3rem;\n\n /*\n @todo: This adds ~20px in Chrome, when scrolling to the right,\n but fixes [FFx + Safari] [resize window down + scroll to the right] bug.\n width: 100%;\n */\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-size: 0.75rem;\n font-weight: bold;\n background-color: hsla(0, 100%, 65%, 1);\n color: hsla(0, 100%, 100%, 1);\n} [theme="dark"] .menu-bar_menu-bar_JcuHF {\n background-color: #333;\n} .menu-bar_main-menu_3wjWH {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n flex-wrap: nowrap;\n align-items: center;\n flex-grow: 1;\n} .menu-bar_scratch-logo_2uReV {\n height: 1.6rem;\n vertical-align: middle;\n} .menu-bar_scratch-logo_2uReV.menu-bar_clickable_1g3uo {\n cursor: pointer;\n} .menu-bar_language-icon_2DZV7 {\n height: 1.5rem;\n vertical-align: middle;\n} .menu-bar_language-caret_16tau {\n margin: 0 .125rem;\n} .menu-bar_language-menu_2JEDx {\n box-sizing: border-box;\n display: inline-flex;\n width: 3rem;\n} .menu-bar_menu-bar-item_oLDa- {\n display: flex;\n padding: 0 0.25rem;\n text-decoration: none;\n color: hsla(0, 100%, 100%, 1);\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n align-self: center;\n position: relative;\n align-items: center;\n white-space: nowrap;\n height: 3rem;\n} .menu-bar_menu-bar-item_oLDa-.menu-bar_hoverable_c6WFB {\n cursor: pointer;\n} .menu-bar_menu-bar-item_oLDa-.menu-bar_active_2Lfqh,\n.menu-bar_menu-bar-item_oLDa-.menu-bar_hoverable_c6WFB:hover {\n background-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} .menu-bar_menu-bar-item_oLDa-.menu-bar_growable_1sHWN {\n max-width: 12rem;\n flex: 1;\n} .menu-bar_title-field-growable_3qr4G {\n flex-grow: 1;\n width: 2rem;\n} .menu-bar_file-group_1_CHX {\n display: flex;\n flex-direction: row;\n align-items: center;\n} .menu-bar_file-group_1_CHX .menu-bar_menu-bar-item_oLDa- {\n padding: 0 0.75rem;\n} .menu-bar_menu-bar-item_oLDa-.menu-bar_language-menu_2JEDx {\n padding: 0 0.5rem;\n} .menu-bar_menu-bar-menu_239MD {\n margin-top: 3rem;\n z-index: 491;\n} .menu-bar_feedback-link_1BnAR {\n color: hsla(0, 100%, 65%, 1) !important;\n text-decoration: none;\n} [theme="dark"] .menu-bar_feedback-link_1BnAR {\n color: #333 !important;\n} .menu-bar_feedback-button_2rEcj {\n background-color: hsla(0, 100%, 100%, 1);\n height: 34px;\n} .menu-bar_divider_2VFCm {\n margin: 0 .5rem;\n height: 34px;\n} .menu-bar_author-info_22Nub {\n margin-left: .25rem;\n margin-right: .6875rem;\n} .menu-bar_menu-bar-button_3IDN0 {\n height: 2rem;\n} .menu-bar_remix-button_2LQQc {\n background-color: hsla(163, 85%, 40%, 1)\n} .menu-bar_remix-button-icon_2E93U {\n height: 1.25rem;\n} .menu-bar_coming-soon_3yU1L >:not(.menu-bar_coming-soon-tooltip_20GhI) {\n opacity: 0.5;\n} .menu-bar_account-info-group_MeJZP {\n display: flex;\n flex-direction: row;\n align-items: center;\n} .menu-bar_account-info-group_MeJZP .menu-bar_menu-bar-item_oLDa- {\n padding: 0 0.75rem;\n} .menu-bar_mystuff-icon_3DtcD {\n margin: 0 .25rem;\n height: 1rem;\n} .menu-bar_help-icon_3Xtrt {\n margin-right: 0.35rem;\n} .menu-bar_account-nav-menu_3uu9p, .menu-bar_mystuff-button_16jPf {\n padding: 0 .25rem;\n display: flex;\n flex-direction: row;\n align-items: center;\n} .menu-bar_profile-icon_2bJkI {\n margin: 0 .25rem;\n width: 2rem;\n border-radius: calc(0.5rem / 2);\n} .menu-bar_dropdown-caret-icon_FkdUe {\n width: 0.5rem;\n height: 0.5rem;\n} [dir="ltr"] .menu-bar_dropdown-caret-icon_FkdUe {\n margin-left: .5rem;\n} [dir="rtl"] .menu-bar_dropdown-caret-icon_FkdUe {\n margin-right: .5rem;\n} .menu-bar_disabled_3x5sy {\n opacity: 0.5;\n} .menu-bar_mystuff_3RiSb > a {\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 45%;\n padding-right: 10px;\n padding-left: 10px;\n width: 30px;\n overflow: hidden;\n text-indent: 50px;\n white-space: nowrap;\n} .menu-bar_mystuff_3RiSb > a:hover {\n background-size: 50%;\n} .menu-bar_mystuff_3RiSb > a {\n /* background-image: url("/images/mystuff.png"); */\n} .menu-bar_about-icon_dZI7K {\n height: 1.25rem;\n margin: 0.5rem;\n vertical-align: middle;\n} /* tw: styles to override styles */ .menu-bar_menu-item-link_20T0- {\n color: hsla(0, 100%, 100%, 1) !important;\n text-decoration: none;\n}\n',""]),t.locals={"menu-bar":"menu-bar_menu-bar_JcuHF",menuBar:"menu-bar_menu-bar_JcuHF","main-menu":"menu-bar_main-menu_3wjWH",mainMenu:"menu-bar_main-menu_3wjWH","scratch-logo":"menu-bar_scratch-logo_2uReV",scratchLogo:"menu-bar_scratch-logo_2uReV",clickable:"menu-bar_clickable_1g3uo","language-icon":"menu-bar_language-icon_2DZV7",languageIcon:"menu-bar_language-icon_2DZV7","language-caret":"menu-bar_language-caret_16tau",languageCaret:"menu-bar_language-caret_16tau","language-menu":"menu-bar_language-menu_2JEDx",languageMenu:"menu-bar_language-menu_2JEDx","menu-bar-item":"menu-bar_menu-bar-item_oLDa-",menuBarItem:"menu-bar_menu-bar-item_oLDa-",hoverable:"menu-bar_hoverable_c6WFB",active:"menu-bar_active_2Lfqh",growable:"menu-bar_growable_1sHWN","title-field-growable":"menu-bar_title-field-growable_3qr4G",titleFieldGrowable:"menu-bar_title-field-growable_3qr4G","file-group":"menu-bar_file-group_1_CHX",fileGroup:"menu-bar_file-group_1_CHX","menu-bar-menu":"menu-bar_menu-bar-menu_239MD",menuBarMenu:"menu-bar_menu-bar-menu_239MD","feedback-link":"menu-bar_feedback-link_1BnAR",feedbackLink:"menu-bar_feedback-link_1BnAR","feedback-button":"menu-bar_feedback-button_2rEcj",feedbackButton:"menu-bar_feedback-button_2rEcj",divider:"menu-bar_divider_2VFCm","author-info":"menu-bar_author-info_22Nub",authorInfo:"menu-bar_author-info_22Nub","menu-bar-button":"menu-bar_menu-bar-button_3IDN0",menuBarButton:"menu-bar_menu-bar-button_3IDN0","remix-button":"menu-bar_remix-button_2LQQc",remixButton:"menu-bar_remix-button_2LQQc","remix-button-icon":"menu-bar_remix-button-icon_2E93U",remixButtonIcon:"menu-bar_remix-button-icon_2E93U","coming-soon":"menu-bar_coming-soon_3yU1L",comingSoon:"menu-bar_coming-soon_3yU1L","coming-soon-tooltip":"menu-bar_coming-soon-tooltip_20GhI",comingSoonTooltip:"menu-bar_coming-soon-tooltip_20GhI","account-info-group":"menu-bar_account-info-group_MeJZP",accountInfoGroup:"menu-bar_account-info-group_MeJZP","mystuff-icon":"menu-bar_mystuff-icon_3DtcD",mystuffIcon:"menu-bar_mystuff-icon_3DtcD","help-icon":"menu-bar_help-icon_3Xtrt",helpIcon:"menu-bar_help-icon_3Xtrt","account-nav-menu":"menu-bar_account-nav-menu_3uu9p",accountNavMenu:"menu-bar_account-nav-menu_3uu9p","mystuff-button":"menu-bar_mystuff-button_16jPf",mystuffButton:"menu-bar_mystuff-button_16jPf","profile-icon":"menu-bar_profile-icon_2bJkI",profileIcon:"menu-bar_profile-icon_2bJkI","dropdown-caret-icon":"menu-bar_dropdown-caret-icon_FkdUe",dropdownCaretIcon:"menu-bar_dropdown-caret-icon_FkdUe",disabled:"menu-bar_disabled_3x5sy",mystuff:"menu-bar_mystuff_3RiSb","about-icon":"menu-bar_about-icon_dZI7K",aboutIcon:"menu-bar_about-icon_dZI7K","menu-item-link":"menu-bar_menu-item-link_20T0-",menuItemLink:"menu-bar_menu-item-link_20T0-"}},function(e,t,n){e.exports=n.p+"static/assets/e764d9d9a7a12892e0845b11cd4202df.png"},function(e,t,n){e.exports=n.p+"static/assets/52797b48d511ecdd8e938684cee7638e.png"},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* this class must contain "see-inside-button" somewhere for the s3 dev tools to be able to reinject itself */ /* https://github.com/griffpatch/Scratch3-Dev-Tools/blob/0.2.4/inject3.js#L1804-L1807 */ .tw-see-inside_see-inside-button_3ecsR {\n box-shadow: 0 0 0 1px var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} .tw-see-inside_see-inside-button-icon_1fQvM {\n height: 1.25rem;\n}\n',""]),t.locals={"see-inside-button":"tw-see-inside_see-inside-button_3ecsR",seeInsideButton:"tw-see-inside_see-inside-button_3ecsR","see-inside-button-icon":"tw-see-inside_see-inside-button-icon_1fQvM",seeInsideButtonIcon:"tw-see-inside_see-inside-button-icon_1fQvM"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"\n.watermark_sprite-image_3ywoR {\n margin: auto;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n max-width: 48px;\n max-height: 48px;\n opacity: 0.35;\n}\n",""]),t.locals={"sprite-image":"watermark_sprite-image_3ywoR",spriteImage:"watermark_sprite-image_3ywoR"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n.backpack_backpack-container_2_wGr {\n flex-shrink: 1;\n position: relative;\n}\n\n.backpack_backpack-header_6ltCS {\n margin-top: 0.5rem;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n background: hsla(0, 100%, 100%, 1);\n padding: 0.25rem;\n text-align: center;\n font-size: 0.85rem;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n transition: 0.2s;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n[theme="dark"] .backpack_backpack-header_6ltCS {\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n}\n\n[dir="ltr"] .backpack_backpack-header_6ltCS {\n border-top-right-radius: 0.5rem;\n}\n\n[dir="rtl"] .backpack_backpack-header_6ltCS {\n border-top-left-radius: 0.5rem;\n}\n\n.backpack_backpack-list_MOp5X {\n position: relative;\n display: flex;\n flex-direction: row;\n align-items: center;\n border-right: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n min-height: 5.5rem;\n}\n\n/* Absolute position the inner list to allow scrolling inside flex sized container */\n\n.backpack_backpack-list-inner_10a2A {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n overflow-x: auto;\n}\n\n.backpack_drag-over_3bBKD:after {\n content: \'\';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 0.75;\n background-color: hsla(0, 100%, 77%, 1);\n transition: all 0.25s ease;\n}\n\n.backpack_status-message_3kt5s {\n width: 100%;\n text-align: center;\n font-size: 0.85rem;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n}\n\n.backpack_error-message_2JoTP {\n font-family: monospace;\n}\n\n.backpack_backpack-item_hwqzQ {\n width: 4rem;\n height: 4.5rem;\n margin: 0 0.25rem;\n flex-shrink: 0;\n\n /* Need to hide overflow because of background setting below */\n overflow: hidden;\n}\n\n.backpack_backpack-item_hwqzQ > div {\n /* Need to set the background to get blend-mode below to work */\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n}\n\n.backpack_backpack-item_hwqzQ img {\n mix-blend-mode: multiply; /* Make white transparent for thumnbnails */\n}\n\n[theme="dark"] .backpack_backpack-item_hwqzQ img {\n mix-blend-mode: normal;\n}\n\n.backpack_more_j3LFZ {\n background: hsla(0, 100%, 65%, 1);\n color: hsla(0, 100%, 100%, 1);\n border: none;\n outline: none;\n font-weight: bold;\n border-radius: 0.5rem;\n font-size: 0.85rem;\n padding: 0.5rem;\n margin: 0.5rem;\n cursor: pointer;\n}\n',""]),t.locals={"backpack-container":"backpack_backpack-container_2_wGr",backpackContainer:"backpack_backpack-container_2_wGr","backpack-header":"backpack_backpack-header_6ltCS",backpackHeader:"backpack_backpack-header_6ltCS","backpack-list":"backpack_backpack-list_MOp5X",backpackList:"backpack_backpack-list_MOp5X","backpack-list-inner":"backpack_backpack-list-inner_10a2A",backpackListInner:"backpack_backpack-list-inner_10a2A","drag-over":"backpack_drag-over_3bBKD",dragOver:"backpack_drag-over_3bBKD","status-message":"backpack_status-message_3kt5s",statusMessage:"backpack_status-message_3kt5s","error-message":"backpack_error-message_2JoTP",errorMessage:"backpack_error-message_2JoTP","backpack-item":"backpack_backpack-item_hwqzQ",backpackItem:"backpack_backpack-item_hwqzQ",more:"backpack_more_j3LFZ"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ body {\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n} h2 {\n font-size: 1.5rem;\n font-weight: bold;\n} p {\n font-size: 1rem;\n line-height: 1.5em;\n} /*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/ /* Toolbox z-index: 40; set in scratch-blocks */ /* tooltips should go over add buttons if they overlap */ /* monitors go over add buttons */ /* "ask" block text input goes above monitors */ /* menu-bar should go over monitors, alerts and tutorials */ /* tw: show below menu bar normally */ /* Block drag z-index: 1000; default 50 is overriden in blocks.css */ /* so it is draggable into other panes */ /* in most interfaces, the context menu is always on top */ .browser-modal_modal-overlay_3TDyF {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 510;\n background-color: var(--ui-modal-overlay, hsla(0, 100%, 65%, 0.9));\n} .browser-modal_modal-content_3iHow {\n margin: 100px auto;\n outline: none;\n border: .25rem solid hsla(0, 100%, 100%, 0.25);\n padding: 0;\n border-radius: 0.5rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n width: 500px;\n\n color: hsla(225, 15%, 40%, 1);\n overflow: hidden;\n} .browser-modal_illustration_1qhRy {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100px;\n background-color: hsla(38, 100%, 55%, 1);\n} [dir="rtl"] .browser-modal_illustration_1qhRy {\n transform: scaleX(-1);\n} .browser-modal_illustration_1qhRy img {\n height: 80%;\n width: auto;\n} .browser-modal_body_1pvBQ {\n background: hsla(0, 100%, 100%, 1);\n padding: 1.5rem 2.25rem;\n text-align: center;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n} [theme="dark"] .browser-modal_body_1pvBQ {\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} .browser-modal_body_1pvBQ a {\n color: hsla(0, 100%, 65%, 1) !important;\n}\n',""]),t.locals={"modal-overlay":"browser-modal_modal-overlay_3TDyF",modalOverlay:"browser-modal_modal-overlay_3TDyF","modal-content":"browser-modal_modal-content_3iHow",modalContent:"browser-modal_modal-content_3iHow",illustration:"browser-modal_illustration_1qhRy",body:"browser-modal_body_1pvBQ"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n/*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/\n\n/* Toolbox z-index: 40; set in scratch-blocks */\n\n/* tooltips should go over add buttons if they overlap */\n\n/* monitors go over add buttons */\n\n/* "ask" block text input goes above monitors */\n\n/* menu-bar should go over monitors, alerts and tutorials */\n\n/* tw: show below menu bar normally */\n\n/* Block drag z-index: 1000; default 50 is overriden in blocks.css */\n\n/* so it is draggable into other panes */\n\n/* in most interfaces, the context menu is always on top */\n\n.card_card-container-overlay_gnjBL {\n position: fixed;\n pointer-events: none;\n z-index: 480;\n}\n\n.card_card-container_3_Sbc {\n position:absolute;\n pointer-events: auto;\n z-index: 480;\n margin: 0.5rem 2rem;\n min-width: 468px;\n}\n\n.card_left-card_1KpEh, .card_right-card_3IrbD {\n height: 90%;\n position: absolute;\n top: 5%;\n background: hsla(0, 100%, 100%, 1);\n border: 1px solid var(--ui-tertiary, hsla(215, 50%, 90%, 1));\n width: .75rem;\n z-index: 10;\n opacity: 0.9;\n overflow: hidden;\n}\n\n.card_left-card_1KpEh {\n left: -.75rem;\n border-right: 0;\n border-top-left-radius: 0.75rem;\n border-bottom-left-radius: 0.75rem;\n}\n\n.card_right-card_3IrbD {\n right: -.75rem;\n border-left: 0;\n border-top-right-radius: 0.75rem;\n border-bottom-right-radius: 0.75rem;\n}\n\n.card_left-card_1KpEh::after, .card_right-card_3IrbD::after {\n content: "";\n position: absolute;\n top: 0;\n left: 0;\n height: 2.5rem;\n width: 100%;\n background: hsla(10, 85%, 65%, 1);\n}\n\n.card_left-button_2IXDY, .card_right-button_3Py4m {\n position: absolute;\n top: 50%;\n margin-top: -15px;\n z-index: 20;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: pointer;\n background: hsla(10, 85%, 65%, 1);\n box-shadow: 0 0 0 4px hsla(10, 85%, 65%, 0.35);\n height: 44px;\n width: 44px;\n border-radius: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n transition: all 0.25s ease;\n}\n\n.card_left-button_2IXDY:hover, .card_right-button_3Py4m:hover {\n box-shadow: 0 0 0 6px hsla(10, 85%, 65%, 0.35);\n transform: scale(1.125);\n}\n\n.card_left-button_2IXDY img, .card_right-button_3Py4m img{\n width: 1.75rem;\n}\n\n.card_left-button_2IXDY {\n left: -27px;\n}\n\n.card_right-button_3Py4m {\n right: -27px;\n}\n\n.card_card_3GG7C {\n border: 1px solid var(--ui-tertiary, hsla(215, 50%, 90%, 1));\n border-radius: 0.75rem;\n display: flex;\n flex-direction: column;\n cursor: move;\n z-index: 20;\n overflow: hidden;\n box-shadow: 0px 5px 25px 5px hsla(0, 0%, 0%, 0.15);\n align-items: center;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n}\n\n.card_header-buttons_3Yq16 {\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n background: hsla(10, 85%, 65%, 1);\n border-bottom: 1px solid hsla(10, 85%, 40%, 1);\n font-size: 0.625rem;\n font-weight: bold;\n}\n\n.card_header-buttons-hidden_3y5Bd {\n border-bottom: 0px;\n}\n\n.card_header-buttons-right_2bzRm {\n display: flex;\n flex-direction: row;\n}\n\n.card_header-buttons_3Yq16 img {\n margin-bottom: 2px;\n}\n\n.card_shrink-expand-button_vbegz {\n cursor: pointer;\n color: white;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 0.75rem;\n}\n\n.card_shrink-expand-button_vbegz:hover, .card_all-button_15rrQ:hover {\n background-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n\n.card_remove-button_1F8SI, .card_all-button_15rrQ {\n cursor: pointer;\n color: white;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 0.75rem;\n}\n\n.card_remove-button_1F8SI:hover, .card_all-button_15rrQ:hover {\n background-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n\n.card_step-title_13--3 {\n font-size: 0.9rem;\n margin: 0.9rem;\n text-align: center;\n font-weight: bold;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n}\n\n.card_step-body_2bFkf {\n width: 100%;\n background: hsla(0, 100%, 100%, 1);\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n position: relative;\n text-align: center;\n\n /* Min height prevents layout changing when images change */\n min-height: 256px;\n}\n\n.card_step-video_3qH9J {\n height: 256px;\n}\n\n.card_step-image_2_jUv {\n max-width: 450px;\n max-height: 200px;\n object-fit: contain;\n background: #F9F9F9;\n border: 1px solid #ddd;\n border-radius: 0.5rem;\n overflow: hidden;\n margin: 0 0.5rem 0.5rem;\n}\n\n.card_decks_1oD6G {\n display: flex;\n flex-direction: row;\n justify-content: space-around;\n padding: 0 1rem 0.5rem;\n}\n\n.card_deck_2NtVa {\n display: flex;\n flex-direction: column;\n margin: 0 8px 8px;\n cursor: pointer;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 0.25rem;\n overflow: hidden;\n}\n\n.card_deck-image_1V3q9 {\n width: 200px;\n height: 100px;\n object-fit: cover;\n}\n\n.card_deck-name_1SJhM {\n color: hsla(0, 100%, 65%, 1);\n font-weight: bold;\n font-size: 0.85rem;\n margin: .625rem 0px;\n text-align: center;\n font-weight: bold;\n text-align: center;\n max-width: 200px;\n}\n\n.card_help-icon_1iyk7 {\n height: 1.25rem;\n}\n\n.card_close-icon_1FYf5 {\n height: 1.25rem;\n margin: .125rem 0; /* To offset the .25rem difference in icon size */\n}\n\n[dir="ltr"] .card_help-icon_1iyk7 {\n margin-right: 0.25rem;\n}\n\n[dir="rtl"] .card_help-icon_1iyk7 {\n margin-left: 0.25rem;\n}\n\n[dir="ltr"] .card_close-icon_1FYf5 {\n margin-left: 0.25rem;\n}\n\n[dir="rtl"] .card_close-icon_1FYf5 {\n margin-right: 0.25rem;\n}\n\n.card_see-all_1_E8D {\n display: flex;\n flex-direction: row;\n justify-content: center;\n width: 100%;\n padding: 0.5rem;\n}\n\n.card_see-all-button_3o4U8 {\n cursor: pointer;\n padding: 0.5rem 1rem;\n background-color: hsla(0, 100%, 65%, 1);\n color: white;\n font-weight: bold;\n border-radius: 0.25rem;\n display: flex;\n align-items: center;\n color: hsla(0, 100%, 100%, 1);\n font-size: .75rem;\n font-weight: bold;\n line-height: 1rem;\n text-align: center;\n}\n\n[dir="ltr"] .card_see-all-button_3o4U8 img {\n margin-left: 0.5rem;\n}\n\n[dir="rtl"] .card_see-all-button_3o4U8 img {\n margin-right: 0.5rem;\n}\n\n.card_steps-list_22Q1P {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n}\n\n.card_active-step-pip_I0bxo, .card_inactiveStepPip_2lVp2 {\n width: 0.5rem;\n height: 0.5rem;\n margin: 0 0.25rem;\n border-radius: 100%;\n background: hsla(0, 100%, 100%, 0.25);\n}\n\n.card_active-step-pip_I0bxo {\n background: hsla(0, 100%, 100%, 1);\n box-shadow: 0px 0px 0px 2px hsla(0, 0%, 0%, 0.15);\n}\n\n.card_hidden_Jk77J {\n display: none;\n}\n',""]),t.locals={"card-container-overlay":"card_card-container-overlay_gnjBL",cardContainerOverlay:"card_card-container-overlay_gnjBL","card-container":"card_card-container_3_Sbc",cardContainer:"card_card-container_3_Sbc","left-card":"card_left-card_1KpEh",leftCard:"card_left-card_1KpEh","right-card":"card_right-card_3IrbD",rightCard:"card_right-card_3IrbD","left-button":"card_left-button_2IXDY",leftButton:"card_left-button_2IXDY","right-button":"card_right-button_3Py4m",rightButton:"card_right-button_3Py4m",card:"card_card_3GG7C","header-buttons":"card_header-buttons_3Yq16",headerButtons:"card_header-buttons_3Yq16","header-buttons-hidden":"card_header-buttons-hidden_3y5Bd",headerButtonsHidden:"card_header-buttons-hidden_3y5Bd","header-buttons-right":"card_header-buttons-right_2bzRm",headerButtonsRight:"card_header-buttons-right_2bzRm","shrink-expand-button":"card_shrink-expand-button_vbegz",shrinkExpandButton:"card_shrink-expand-button_vbegz","all-button":"card_all-button_15rrQ",allButton:"card_all-button_15rrQ","remove-button":"card_remove-button_1F8SI",removeButton:"card_remove-button_1F8SI","step-title":"card_step-title_13--3",stepTitle:"card_step-title_13--3","step-body":"card_step-body_2bFkf",stepBody:"card_step-body_2bFkf","step-video":"card_step-video_3qH9J",stepVideo:"card_step-video_3qH9J","step-image":"card_step-image_2_jUv",stepImage:"card_step-image_2_jUv",decks:"card_decks_1oD6G",deck:"card_deck_2NtVa","deck-image":"card_deck-image_1V3q9",deckImage:"card_deck-image_1V3q9","deck-name":"card_deck-name_1SJhM",deckName:"card_deck-name_1SJhM","help-icon":"card_help-icon_1iyk7",helpIcon:"card_help-icon_1iyk7","close-icon":"card_close-icon_1FYf5",closeIcon:"card_close-icon_1FYf5","see-all":"card_see-all_1_E8D",seeAll:"card_see-all_1_E8D","see-all-button":"card_see-all-button_3o4U8",seeAllButton:"card_see-all-button_3o4U8","steps-list":"card_steps-list_22Q1P",stepsList:"card_steps-list_22Q1P","active-step-pip":"card_active-step-pip_I0bxo",activeStepPip:"card_active-step-pip_I0bxo",inactiveStepPip:"card_inactiveStepPip_2lVp2",hidden:"card_hidden_Jk77J"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n/*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/\n\n/* Toolbox z-index: 40; set in scratch-blocks */\n\n/* tooltips should go over add buttons if they overlap */\n\n/* monitors go over add buttons */\n\n/* "ask" block text input goes above monitors */\n\n/* menu-bar should go over monitors, alerts and tutorials */\n\n/* tw: show below menu bar normally */\n\n/* Block drag z-index: 1000; default 50 is overriden in blocks.css */\n\n/* so it is draggable into other panes */\n\n/* in most interfaces, the context menu is always on top */\n\n.alert_alert_2Ou-m {\n width: 100%;\n display: flex;\n flex-direction: row;\n overflow: hidden;\n justify-content: flex-start;\n border-radius: 0.5rem;\n padding-top: .875rem;\n padding-bottom: .875rem;\n padding-left: 1rem;\n padding-right: 1rem;\n margin-bottom: 7px;\n min-height: 1.5rem;\n pointer-events: all;\n}\n\n.alert_alert_2Ou-m.alert_warn_2441l {\n background: #FFF0DF;\n border: 1px solid #FF8C1A;\n box-shadow: 0px 0px 0px 2px rgba(255, 140, 26, 0.25);\n}\n\n.alert_alert_2Ou-m.alert_success_1TbgT {\n /* tw: hardcode these colors because we change extensions-* colors to be something that looks weird here */\n background: hsla(163, 57%, 85%, 1);\n border: 1px solid hsla(163, 85%, 30%, 1);\n box-shadow: 0px 0px 0px 2px hsla(163, 57%, 85%, 1);\n}\n\n.alert_alert-spinner_2JcbE {\n self-align: center;\n}\n\n.alert_icon-section_2DC1x {\n min-width: 1.25rem;\n min-height: 1.25rem;\n display: flex;\n padding-right: 1rem;\n}\n\n.alert_alert-icon_3-jQB {\n vertical-align: middle;\n}\n\n.alert_alert-message_3dEDJ {\n color: #555;\n font-weight: bold;\n font-size: .8125rem;\n line-height: .875rem;\n display: flex;\n align-items: center;\n padding-right: .5rem;\n}\n\n.alert_alert-buttons_CZbh6 {\n display: flex;\n flex-direction: row;\n}\n\n.alert_alert-close-button_2ci8S {\n outline-style:none;\n}\n\n.alert_alert-close-button-container_2m64w {\n outline-style: none;\n width: 30px;\n height: 30px;\n align-self: center;\n}\n\n.alert_alert-connection-button_ETbfk {\n min-height: 2rem;\n width: 6.5rem;\n padding: 0.55rem 0.9rem;\n border-radius: 0.35rem;\n background: #FF8C1A;\n color: white;\n font-weight: 700;\n font-size: 0.77rem;\n border: none;\n cursor: pointer;\n display: flex;\n justify-content: center;\n align-items: center;\n align-self: stretch;\n outline-style:none;\n}\n\n[dir="ltr"] .alert_alert-connection-button_ETbfk {\n margin-right: 13px;\n}\n\n[dir="rtl"] .alert_alert-connection-button_ETbfk {\n margin-left: 13px;\n}\n\n/* prevent last button in list from too much margin to edge of alert */\n\n.alert_alert-buttons_CZbh6 > :last-child {\n margin-left: 0;\n margin-right: 0;\n}\n',""]),t.locals={alert:"alert_alert_2Ou-m",warn:"alert_warn_2441l",success:"alert_success_1TbgT","alert-spinner":"alert_alert-spinner_2JcbE",alertSpinner:"alert_alert-spinner_2JcbE","icon-section":"alert_icon-section_2DC1x",iconSection:"alert_icon-section_2DC1x","alert-icon":"alert_alert-icon_3-jQB",alertIcon:"alert_alert-icon_3-jQB","alert-message":"alert_alert-message_3dEDJ",alertMessage:"alert_alert-message_3dEDJ","alert-buttons":"alert_alert-buttons_CZbh6",alertButtons:"alert_alert-buttons_CZbh6","alert-close-button":"alert_alert-close-button_2ci8S",alertCloseButton:"alert_alert-close-button_2ci8S","alert-close-button-container":"alert_alert-close-button-container_2m64w",alertCloseButtonContainer:"alert_alert-close-button-container_2m64w","alert-connection-button":"alert_alert-connection-button_ETbfk",alertConnectionButton:"alert_alert-connection-button_ETbfk"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".alerts_alerts-inner-container_1KTuF {\n min-width: 200px;\n max-width: 548px;\n}\n",""]),t.locals={"alerts-inner-container":"alerts_alerts-inner-container_1KTuF",alertsInnerContainer:"alerts_alerts-inner-container_1KTuF"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n/*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/\n\n/* Toolbox z-index: 40; set in scratch-blocks */\n\n/* tooltips should go over add buttons if they overlap */\n\n/* monitors go over add buttons */\n\n/* "ask" block text input goes above monitors */\n\n/* menu-bar should go over monitors, alerts and tutorials */\n\n/* tw: show below menu bar normally */\n\n/* Block drag z-index: 1000; default 50 is overriden in blocks.css */\n\n/* so it is draggable into other panes */\n\n/* in most interfaces, the context menu is always on top */\n\n.drag-layer_drag-layer_3Xec- {\n position: fixed;\n pointer-events: none;\n z-index: 1000;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n direction: ltr;\n}\n\n.drag-layer_image-wrapper_2iRP3 {\n /* Absolute allows wrapper to snuggly fit image */\n position: absolute;\n}\n\n.drag-layer_image_1inbS {\n max-width: 80px;\n max-height: 80px;\n min-width: 50px;\n min-height: 50px;\n\n /* Center the dragging image on the given position */\n margin-left: -50%;\n margin-top: -50%;\n\n padding: 0.25rem;\n border: 2px solid hsla(0, 100%, 65%, 1);\n background: hsla(0, 100%, 100%, 1);\n border-radius: 0.5rem;\n\n /* Use the same drop shadow as stage dragging */\n box-shadow: 5px 5px 5px hsla(0, 0%, 0%, 0.15);\n}\n',""]),t.locals={"drag-layer":"drag-layer_drag-layer_3Xec-",dragLayer:"drag-layer_drag-layer_3Xec-","image-wrapper":"drag-layer_image-wrapper_2iRP3",imageWrapper:"drag-layer_image-wrapper_2iRP3",image:"drag-layer_image_1inbS"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ .connection-modal_modal-content_2Xr41 {\n width: 480px;\n} .connection-modal_header_3Sf5c {\n background-color: hsla(163, 85%, 40%, 1);\n} .connection-modal_body_3YO9j {\n background: hsla(0, 100%, 100%, 1);\n} .connection-modal_label_2ci_1 {\n font-weight: 500;\n margin: 0 0 0.75rem;\n} .connection-modal_centered-row_LqTYH {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n} .connection-modal_peripheral-tile-pane_2pquH {\n overflow-y: auto;\n width: 100%;\n height: 100%;\n} .connection-modal_peripheral-tile_3IZvY {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n\n background-color: hsla(0, 100%, 100%, 1);\n border-radius: 0.25rem;\n padding: 10px;\n width: 100%;\n height: 55px;\n margin-bottom: 0.5rem;\n} .connection-modal_peripheral-tile-name_3-1ov {\n display: flex;\n align-items: center;\n} [dir="ltr"] .connection-modal_peripheral-tile-image_2HAYt {\n margin-right: 0.5rem;\n} [dir="rtl"] .connection-modal_peripheral-tile-image_2HAYt {\n margin-left: 0.5rem;\n} .connection-modal_peripheral-tile-name-wrapper_LIgB5 {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n} .connection-modal_peripheral-tile-name-label_Mhn3z {\n font-weight: bold;\n font-size: 0.625rem;\n} .connection-modal_peripheral-tile-name-text_3Gqj9 {\n font-size: 0.875rem;\n} .connection-modal_peripheral-tile_3IZvY button {\n padding: 0.6rem 0.75rem;\n border: none;\n border-radius: 0.25rem;\n font-weight: 600;\n font-size: 0.85rem;\n background: hsla(0, 100%, 65%, 1);\n border: hsla(0, 100%, 65%, 1);\n color: white;\n cursor: pointer;\n} .connection-modal_signal-strength-meter_17QSz {\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n width: 22px;\n height: 16px;\n} [dir="ltr"] .connection-modal_signal-strength-meter_17QSz {\n margin-right: 1rem;\n} [dir="rtl"] .connection-modal_signal-strength-meter_17QSz {\n margin-left: 1rem;\n} .connection-modal_signal-bar_3KRPL {\n width: 4px;\n border-radius: 4px;\n background-color: #DBDBDB;\n} .connection-modal_signal-bar_3KRPL:nth-of-type(1) { height: 25%; } .connection-modal_signal-bar_3KRPL:nth-of-type(2) { height: 50%; } .connection-modal_signal-bar_3KRPL:nth-of-type(3) { height: 75%; } .connection-modal_signal-bar_3KRPL:nth-of-type(4) { height: 100%; } .connection-modal_green-bar_2DtgQ {\n background-color: hsla(163, 85%, 40%, 1);\n} .connection-modal_radar-small_2Zlc3 {\n width: 40px;\n height: 40px;\n} [dir="ltr"] .connection-modal_radar-small_2Zlc3 {\n margin-right: 0.5rem;\n} [dir="rtl"] .connection-modal_radar-small_2Zlc3 {\n margin-left: 0.5rem;\n} .connection-modal_radar-big_1ZqZR {\n width: 120px;\n height: 120px;\n} .connection-modal_radar-spin_XTY3A {\n animation: connection-modal_spin_2AmoW 4s linear infinite;\n} [dir="ltr"] .connection-modal_radar_1q6t4 {\n margin-right: .5rem;\n} [dir="rtl"] .connection-modal_radar_1q6t4 {\n margin-left: .5rem;\n} @keyframes connection-modal_spin_2AmoW {\n 100% {\n transform: rotate(360deg);\n }\n} .connection-modal_peripheral-activity_1iEPn {\n position: relative;\n} .connection-modal_peripheral-activity-icon_2yzrQ {\n /* width: 80px;\n height: 80px; */\n} .connection-modal_connection-tip-icon_1OYH1 {\n position: absolute;\n} .connection-modal_bluetooth-connecting-icon_2WC-p {\n position: absolute;\n top: -5px;\n right: -15px;\n left: -15px;\n padding: 5px 5px;\n background-color: hsla(0, 100%, 65%, 1);\n border-radius: 100%;\n box-shadow: 0px 0px 0px 4px hsla(0, 100%, 65%, 0.35);\n /* animation: pulse-blue-ring 1s infinite ease-in-out alternate; */\n animation: connection-modal_wiggle_3PIQs 0.5s infinite ease-in-out alternate;\n\n} @keyframes connection-modal_pulse-blue-ring_Bst8a {\n 100% {\n box-shadow: 0px 0px 0px 8px hsla(0, 100%, 65%, 0.15);\n }\n} .connection-modal_bluetooth-connected-icon_2z3Cp {\n position: absolute;\n top: -5px;\n right: -15px;\n left: -15px;\n padding: 5px 5px;\n background-color: hsla(163, 85%, 40%, 1);\n border-radius: 100%;\n box-shadow: 0px 0px 0px 4px hsla(163, 85%, 40%, 0.25);\n} @keyframes connection-modal_wiggle_3PIQs {\n 0% {transform: rotate(3deg) scale(1.05);}\n 25% {transform: rotate(-3deg) scale(1.05);}\n 50% {transform: rotate(5deg) scale(1.05);}\n 75% {transform: rotate(-2deg) scale(1.05);}\n 100% {transform: rotate(0deg) scale(1.05);}\n} .connection-modal_bluetooth-centered-icon_2sUnm {\n position: absolute;\n padding: 5px 5px;\n background-color: hsla(0, 100%, 65%, 1);\n border-radius: 100%;\n box-shadow: 0px 0px 0px 2px hsla(0, 100%, 65%, 0.35);\n} .connection-modal_peripheral-tile-widgets_2czb9 {\n display: flex;\n align-items: center;\n} .connection-modal_activityArea_2nx-Z {\n height: 165px;\n background-color: hsla(0, 100%, 65%, 0.15);\n display: flex;\n justify-content: center;\n align-items: center;\n padding: .5rem;\n} .connection-modal_scratch-link-help_1v8tL {\n display: flex;\n flex-direction: column;\n justify-content: space-around;\n height: 100%;\n padding-top: .5rem;\n padding-bottom: .5rem;\n} .connection-modal_scratch-link-help-step_bWMuI {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n} [dir="ltr"] .connection-modal_scratch-link-help-step_bWMuI {\n margin-left: 2.5rem;\n} [dir="rtl"] .connection-modal_scratch-link-help-step_bWMuI {\n margin-right: 2.5rem;\n} .connection-modal_scratch-link-icon_dnIoA {\n max-width: 50px;\n} [dir="ltr"] .connection-modal_help-step-image_h76rv {\n margin-right: 0.5rem;\n} [dir="rtl"] .connection-modal_help-step-image_h76rv {\n margin-left: 0.5rem;\n} .connection-modal_help-step-number_2tyWJ {\n background: hsla(163, 85%, 40%, 1);\n border-radius: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n color: hsla(0, 100%, 100%, 1);\n font-weight: bold;\n min-width: 2rem;\n height: 2rem;\n} [dir="ltr"] .connection-modal_help-step-number_2tyWJ {\n margin-right: 0.5rem;\n} [dir="rtl"] .connection-modal_help-step-number_2tyWJ {\n margin-left: 0.5rem;\n} .connection-modal_button-row_2RA0A {\n font-weight: bolder;\n text-align: center;\n display: flex;\n} .connection-modal_abort-connecting-icon_1KMRE {\n width: 10px;\n transform: rotate(45deg);\n} .connection-modal_connection-button_1paxF {\n padding: 0.6rem 0.75rem;\n border-radius: 0.5rem;\n background: hsla(0, 100%, 65%, 1);\n color: white;\n font-weight: 600;\n font-size: 0.85rem;\n margin: 0.25rem;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n} .connection-modal_connection-button_1paxF:disabled {\n background: hsla(0, 100%, 65%, 0.35);\n} .connection-modal_segmented-button_XNf80 {\n display: flex;\n} .connection-modal_segmented-button_XNf80 .connection-modal_connection-button_1paxF:first-of-type {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n margin-right: 0;\n} .connection-modal_segmented-button_XNf80 .connection-modal_connection-button_1paxF:last-of-type {\n margin-left: 1px;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n} [dir="ltr"] .connection-modal_button-icon-right_1CANn {\n margin-left: 0.5rem;\n} [dir="rtl"] .connection-modal_button-icon-right_1CANn {\n margin-right: 0.5rem;\n} [dir="ltr"] .connection-modal_button-icon-left_2Ys4V {\n margin-right: 0.5rem;\n} [dir="rtl"] .connection-modal_button-icon-left_2Ys4V {\n margin-left: 0.5rem;\n} /* reverse back arrow icon for RTL, don\'t reverse other connection icons */ [dir="rtl"] .connection-modal_button-icon-back_3voGy {\n transform: scaleX(-1);\n} .connection-modal_red-button_MpXr- {\n background: hsla(20, 100%, 55%, 1);\n} .connection-modal_corner-buttons_2ciJI {\n display: flex;\n justify-content: space-between;\n width: 100%;\n padding: 0 1rem;\n} .connection-modal_bottom-area_AHeQ3 {\n background-color: hsla(0, 100%, 100%, 1);\n text-align: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-top: 1rem;\n padding-bottom: .75rem;\n padding-left: .75rem;\n padding-right: .75rem;\n} .connection-modal_bottom-area_AHeQ3 .connection-modal_bottom-area-item_YR2oh+.connection-modal_bottom-area-item_YR2oh {\n margin-top: 1rem;\n} .connection-modal_instructions_1CxAa {\n text-align: center;\n} .connection-modal_dots-row_39YWr {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n} .connection-modal_dots-holder_2kY6c {\n display: flex;\n padding: 0.25rem 0.1rem;\n border-radius: 1rem;\n background: hsla(0, 100%, 65%, 0.15);\n} .connection-modal_dots-holder-success_20EtT {\n background: hsla(163, 85%, 40%, 0.25);\n} .connection-modal_dots-holder-error_3iK2w {\n background: hsla(30, 100%, 55%, 0.25);\n} .connection-modal_dot_2GsnJ {\n width: 0.5rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n border-radius: 100%;\n} .connection-modal_inactive-step-dot_1x6LP {\n background: hsla(0, 100%, 65%, 0.35);\n} .connection-modal_active-step-dot_yLC0o {\n background: hsla(0, 100%, 65%, 1);\n} .connection-modal_success-dot_30FlH {\n background: hsla(163, 85%, 40%, 1);\n} .connection-modal_error-dot_1NdiS {\n background: hsla(30, 100%, 55%, 1);\n}\n',""]),t.locals={"modal-content":"connection-modal_modal-content_2Xr41",modalContent:"connection-modal_modal-content_2Xr41",header:"connection-modal_header_3Sf5c",body:"connection-modal_body_3YO9j",label:"connection-modal_label_2ci_1","centered-row":"connection-modal_centered-row_LqTYH",centeredRow:"connection-modal_centered-row_LqTYH","peripheral-tile-pane":"connection-modal_peripheral-tile-pane_2pquH",peripheralTilePane:"connection-modal_peripheral-tile-pane_2pquH","peripheral-tile":"connection-modal_peripheral-tile_3IZvY",peripheralTile:"connection-modal_peripheral-tile_3IZvY","peripheral-tile-name":"connection-modal_peripheral-tile-name_3-1ov",peripheralTileName:"connection-modal_peripheral-tile-name_3-1ov","peripheral-tile-image":"connection-modal_peripheral-tile-image_2HAYt",peripheralTileImage:"connection-modal_peripheral-tile-image_2HAYt","peripheral-tile-name-wrapper":"connection-modal_peripheral-tile-name-wrapper_LIgB5",peripheralTileNameWrapper:"connection-modal_peripheral-tile-name-wrapper_LIgB5","peripheral-tile-name-label":"connection-modal_peripheral-tile-name-label_Mhn3z",peripheralTileNameLabel:"connection-modal_peripheral-tile-name-label_Mhn3z","peripheral-tile-name-text":"connection-modal_peripheral-tile-name-text_3Gqj9",peripheralTileNameText:"connection-modal_peripheral-tile-name-text_3Gqj9","signal-strength-meter":"connection-modal_signal-strength-meter_17QSz",signalStrengthMeter:"connection-modal_signal-strength-meter_17QSz","signal-bar":"connection-modal_signal-bar_3KRPL",signalBar:"connection-modal_signal-bar_3KRPL","green-bar":"connection-modal_green-bar_2DtgQ",greenBar:"connection-modal_green-bar_2DtgQ","radar-small":"connection-modal_radar-small_2Zlc3",radarSmall:"connection-modal_radar-small_2Zlc3","radar-big":"connection-modal_radar-big_1ZqZR",radarBig:"connection-modal_radar-big_1ZqZR","radar-spin":"connection-modal_radar-spin_XTY3A",radarSpin:"connection-modal_radar-spin_XTY3A",spin:"connection-modal_spin_2AmoW",radar:"connection-modal_radar_1q6t4","peripheral-activity":"connection-modal_peripheral-activity_1iEPn",peripheralActivity:"connection-modal_peripheral-activity_1iEPn","peripheral-activity-icon":"connection-modal_peripheral-activity-icon_2yzrQ",peripheralActivityIcon:"connection-modal_peripheral-activity-icon_2yzrQ","connection-tip-icon":"connection-modal_connection-tip-icon_1OYH1",connectionTipIcon:"connection-modal_connection-tip-icon_1OYH1","bluetooth-connecting-icon":"connection-modal_bluetooth-connecting-icon_2WC-p",bluetoothConnectingIcon:"connection-modal_bluetooth-connecting-icon_2WC-p",wiggle:"connection-modal_wiggle_3PIQs","bluetooth-connected-icon":"connection-modal_bluetooth-connected-icon_2z3Cp",bluetoothConnectedIcon:"connection-modal_bluetooth-connected-icon_2z3Cp","bluetooth-centered-icon":"connection-modal_bluetooth-centered-icon_2sUnm",bluetoothCenteredIcon:"connection-modal_bluetooth-centered-icon_2sUnm","peripheral-tile-widgets":"connection-modal_peripheral-tile-widgets_2czb9",peripheralTileWidgets:"connection-modal_peripheral-tile-widgets_2czb9",activityArea:"connection-modal_activityArea_2nx-Z","scratch-link-help":"connection-modal_scratch-link-help_1v8tL",scratchLinkHelp:"connection-modal_scratch-link-help_1v8tL","scratch-link-help-step":"connection-modal_scratch-link-help-step_bWMuI",scratchLinkHelpStep:"connection-modal_scratch-link-help-step_bWMuI","scratch-link-icon":"connection-modal_scratch-link-icon_dnIoA",scratchLinkIcon:"connection-modal_scratch-link-icon_dnIoA","help-step-image":"connection-modal_help-step-image_h76rv",helpStepImage:"connection-modal_help-step-image_h76rv","help-step-number":"connection-modal_help-step-number_2tyWJ",helpStepNumber:"connection-modal_help-step-number_2tyWJ","button-row":"connection-modal_button-row_2RA0A",buttonRow:"connection-modal_button-row_2RA0A","abort-connecting-icon":"connection-modal_abort-connecting-icon_1KMRE",abortConnectingIcon:"connection-modal_abort-connecting-icon_1KMRE","connection-button":"connection-modal_connection-button_1paxF",connectionButton:"connection-modal_connection-button_1paxF","segmented-button":"connection-modal_segmented-button_XNf80",segmentedButton:"connection-modal_segmented-button_XNf80","button-icon-right":"connection-modal_button-icon-right_1CANn",buttonIconRight:"connection-modal_button-icon-right_1CANn","button-icon-left":"connection-modal_button-icon-left_2Ys4V",buttonIconLeft:"connection-modal_button-icon-left_2Ys4V","button-icon-back":"connection-modal_button-icon-back_3voGy",buttonIconBack:"connection-modal_button-icon-back_3voGy","red-button":"connection-modal_red-button_MpXr-",redButton:"connection-modal_red-button_MpXr-","corner-buttons":"connection-modal_corner-buttons_2ciJI",cornerButtons:"connection-modal_corner-buttons_2ciJI","bottom-area":"connection-modal_bottom-area_AHeQ3",bottomArea:"connection-modal_bottom-area_AHeQ3","bottom-area-item":"connection-modal_bottom-area-item_YR2oh",bottomAreaItem:"connection-modal_bottom-area-item_YR2oh",instructions:"connection-modal_instructions_1CxAa","dots-row":"connection-modal_dots-row_39YWr",dotsRow:"connection-modal_dots-row_39YWr","dots-holder":"connection-modal_dots-holder_2kY6c",dotsHolder:"connection-modal_dots-holder_2kY6c","dots-holder-success":"connection-modal_dots-holder-success_20EtT",dotsHolderSuccess:"connection-modal_dots-holder-success_20EtT","dots-holder-error":"connection-modal_dots-holder-error_3iK2w",dotsHolderError:"connection-modal_dots-holder-error_3iK2w",dot:"connection-modal_dot_2GsnJ","inactive-step-dot":"connection-modal_inactive-step-dot_1x6LP",inactiveStepDot:"connection-modal_inactive-step-dot_1x6LP","active-step-dot":"connection-modal_active-step-dot_yLC0o",activeStepDot:"connection-modal_active-step-dot_yLC0o","success-dot":"connection-modal_success-dot_30FlH",successDot:"connection-modal_success-dot_30FlH","error-dot":"connection-modal_error-dot_1NdiS",errorDot:"connection-modal_error-dot_1NdiS","pulse-blue-ring":"connection-modal_pulse-blue-ring_Bst8a",pulseBlueRing:"connection-modal_pulse-blue-ring_Bst8a"}},function(e,t,n){var a=n(209);(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */ /* layout contants from `layout-constants.js` */ body {\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n} h2 {\n font-size: 1.5rem;\n font-weight: bold;\n} p {\n font-size: 1rem;\n line-height: 1.5em;\n} /*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/ /* Toolbox z-index: 40; set in scratch-blocks */ /* tooltips should go over add buttons if they overlap */ /* monitors go over add buttons */ /* "ask" block text input goes above monitors */ /* menu-bar should go over monitors, alerts and tutorials */ /* tw: show below menu bar normally */ /* Block drag z-index: 1000; default 50 is overriden in blocks.css */ /* so it is draggable into other panes */ /* in most interfaces, the context menu is always on top */ /* from scratch-www */ .telemetry-modal_modal-overlay_3R9Qg {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 510;\n background-color: var(--ui-modal-overlay, hsla(0, 100%, 65%, 0.9));\n} .telemetry-modal_modal-content_nALrs {\n margin: 100px auto;\n outline: none;\n border: .25rem solid hsla(0, 100%, 100%, 0.25);\n padding: 0;\n border-radius: 0.5rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n width: 640px;\n\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n overflow: hidden;\n} .telemetry-modal_illustration_2xM6I {\n width: 100%;\n height: 123px;\n background-color: hsla(0, 100%, 65%, 1);\n background-image: url('+a(n(1587))+');\n background-size: cover;\n} .telemetry-modal_body_1ZKWV {\n background: hsla(0, 100%, 100%, 1);\n padding: 1.5rem 2.25rem;\n} .telemetry-modal_privacy-policy-link_3wFww {\n color: hsla(0, 100%, 65%, 1);\n text-decoration: none;\n} /* stack the radio buttons vertically, not horizontally */ .telemetry-modal_radio-buttons_8ArWg label {\n display: block;\n margin: 0.5rem;\n transition: all .125s ease;\n background-color: hsla(0, 0%, 95%, 1);\n border-radius: .5rem;\n margin: 0 auto 0.375rem;\n align-items: center;\n padding: 1rem 0;\n vertical-align: middle;\n} .telemetry-modal_radio-buttons_8ArWg label:hover {\n background-color: hsla(215, 100%, 65%, .1);\n} .telemetry-modal_radio-buttons_8ArWg label.telemetry-modal_label-selected_2jFaa,\n.telemetry-modal_radio-buttons_8ArWg label.telemetry-modal_label-selected_2jFaa:hover {\n background-color: hsla(215, 100%, 65%, .25);\n} .telemetry-modal_radio-buttons_8ArWg input[type="radio"] {\n margin: -1px 0.75rem 1px;\n border: 1px solid hsla(0, 0%, 0%, .1);\n border-radius: 50%;\n width: 1rem;\n height: 1rem;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: hsla(0, 100%, 100%, 1);\n vertical-align: middle;\n} .telemetry-modal_radio-buttons_8ArWg input[type="radio"]:checked,\n.telemetry-modal_radio-buttons_8ArWg input[type="radio"]:focus {\n box-shadow: 0 0 0 2px hsla(215, 100%, 65%, .25);\n outline: none;\n} .telemetry-modal_radio-buttons_8ArWg input[type="radio"]:checked {\n transition: all .25s ease;\n background-color: hsla(0, 100%, 100%, 1);\n border: 1px solid hsla(0, 100%, 65%, 1);\n} .telemetry-modal_radio-buttons_8ArWg input[type="radio"]:checked::after {\n display: block;\n margin: 0.125rem;\n border-radius: 50%;\n background-color: hsla(0, 100%, 65%, 1);\n width: .625rem;\n height: .625rem;\n content: "";\n} /* Confirmation buttons at the bottom of the modal */ .telemetry-modal_button-row_2rE_o {\n display: flex;\n flex-flow: row nowrap;\n justify-content: space-between;\n align-items: baseline;\n\n margin: 1.5rem 0;\n font-weight: bolder;\n} @keyframes telemetry-modal_fade-out_36Osg {\n 0% {opacity: 1}\n 100% {opacity: 0}\n} .telemetry-modal_setting-was-updated_1l6nc {\n animation: telemetry-modal_fade-out_36Osg 3s ease-out;\n color: hsla(10, 85%, 65%, 1);\n} .telemetry-modal_button-row_2rE_o button {\n border: 1px solid hsla(0, 100%, 65%, 1);\n border-radius: 0.25rem;\n padding: 0.5rem 1.5rem;\n color: white;\n background: hsla(0, 100%, 65%, 1);\n font-weight: bold;\n font-size: .875rem;\n cursor: pointer;\n} .telemetry-modal_button-row_2rE_o button:hover {\n background: hsla(10, 85%, 65%, 1);\n box-shadow: 0 0 0 6px hsla(0, 100%, 65%, 0.35);\n} .telemetry-modal_button-row_2rE_o button:disabled {\n background: var(--text-primary, hsla(225, 15%, 40%, 1));\n border-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n box-shadow: none;\n opacity: 0.25;\n} @media screen and (max-height: 660px) {\n .telemetry-modal_modal-content_nALrs {\n margin: 5vh auto;\n width: 90%;\n }\n} @media screen and (max-height: 540px) {\n .telemetry-modal_illustration_2xM6I {\n display: none;\n }\n}\n',""]),t.locals={"modal-overlay":"telemetry-modal_modal-overlay_3R9Qg",modalOverlay:"telemetry-modal_modal-overlay_3R9Qg","modal-content":"telemetry-modal_modal-content_nALrs",modalContent:"telemetry-modal_modal-content_nALrs",illustration:"telemetry-modal_illustration_2xM6I",body:"telemetry-modal_body_1ZKWV","privacy-policy-link":"telemetry-modal_privacy-policy-link_3wFww",privacyPolicyLink:"telemetry-modal_privacy-policy-link_3wFww","radio-buttons":"telemetry-modal_radio-buttons_8ArWg",radioButtons:"telemetry-modal_radio-buttons_8ArWg","label-selected":"telemetry-modal_label-selected_2jFaa",labelSelected:"telemetry-modal_label-selected_2jFaa","button-row":"telemetry-modal_button-row_2rE_o",buttonRow:"telemetry-modal_button-row_2rE_o","setting-was-updated":"telemetry-modal_setting-was-updated_1l6nc",settingWasUpdated:"telemetry-modal_setting-was-updated_1l6nc","fade-out":"telemetry-modal_fade-out_36Osg",fadeOut:"telemetry-modal_fade-out_36Osg"}},function(e,t,n){e.exports=n.p+"static/assets/fb356e819d8ab210a241ce81b9bac33c.png"},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .username-modal_modal-content_2pKC4 {\n width: 400px;\n} .username-modal_body_UaL6e {\n background: hsla(0, 100%, 100%, 1);\n padding: 1.5rem 2.25rem;\n} [theme="dark"] .username-modal_body_UaL6e {\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} .username-modal_body_UaL6e input[type="checkbox"],\n.username-modal_body_UaL6e input[type="radio"] {\n margin: 3px;\n} .username-modal_text-input_3z1ni {\n margin-bottom: 1rem;\n width: 100%;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 5px;\n padding: 0 1rem;\n height: 3rem;\n color: hsla(225, 15%, 40%, 0.75);\n font-size: .875rem;\n} [theme="dark"] .username-modal_text-input_3z1ni {\n background: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n color: white;\n} .username-modal_button-row_2amuh {\n font-weight: bolder;\n text-align: right;\n} .username-modal_button-row_2amuh button {\n padding: 0.75rem 1rem;\n border-radius: 0.25rem;\n background: white;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n font-weight: 600;\n font-size: 0.85rem;\n} .username-modal_button-row_2amuh button[disabled] {\n opacity: 0.5;\n} [dir="ltr"] .username-modal_button-row_2amuh button + button {\n margin-left: 0.5rem;\n} [dir="rtl"] .username-modal_button-row_2amuh button + button {\n margin-right: 0.5rem;\n} .username-modal_button-row_2amuh button.username-modal_ok-button_UEZfz {\n background: hsla(0, 100%, 65%, 1);\n border: hsla(0, 100%, 65%, 1);\n color: white;\n} .username-modal_button-row_2amuh button.username-modal_cancel-button_3bs7j {\n color: black;\n} .username-modal_help-text_3dN2- {\n margin-bottom: 1rem;\n} .username-modal_must-change_1uhS8 {\n font-weight: bold;\n} .username-modal_reset-link_2djuz {\n cursor: pointer;\n}\n',""]),t.locals={"modal-content":"username-modal_modal-content_2pKC4",modalContent:"username-modal_modal-content_2pKC4",body:"username-modal_body_UaL6e","text-input":"username-modal_text-input_3z1ni",textInput:"username-modal_text-input_3z1ni","button-row":"username-modal_button-row_2amuh",buttonRow:"username-modal_button-row_2amuh","ok-button":"username-modal_ok-button_UEZfz",okButton:"username-modal_ok-button_UEZfz","cancel-button":"username-modal_cancel-button_3bs7j",cancelButton:"username-modal_cancel-button_3bs7j","help-text":"username-modal_help-text_3dN2-",helpText:"username-modal_help-text_3dN2-","must-change":"username-modal_must-change_1uhS8",mustChange:"username-modal_must-change_1uhS8","reset-link":"username-modal_reset-link_2djuz",resetLink:"username-modal_reset-link_2djuz"}},function(e,t,n){var a=n(209);(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .checkbox_checkbox_2QbUl {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n width: 18px;\n height: 18px;\n border-radius: 4px;\n transition: .2s;\n background-color: white;\n transition-property: background-color;\n background-size: 100%;\n border: 1px solid rgb(92, 92, 92);\n outline: none;\n} .checkbox_checkbox_2QbUl:hover, .checkbox_checkbox_2QbUl:focus, .checkbox_checkbox_2QbUl:active, .checkbox_checkbox_2QbUl:checked {\n border-color: hsla(0, 100%, 65%, 1);\n} .checkbox_checkbox_2QbUl:focus, .checkbox_checkbox_2QbUl:active {\n box-shadow: 0 0 0 3px hsla(0, 100%, 65%, 0.35);\n} .checkbox_checkbox_2QbUl:checked {\n background-color: hsla(0, 100%, 65%, 1);\n background-image: url("+a(n(1590))+');\n} [theme="dark"] .checkbox_checkbox_2QbUl {\n border-color: transparent;\n}\n',""]),t.locals={checkbox:"checkbox_checkbox_2QbUl"}},function(e,t,n){e.exports=n.p+"static/assets/620f707d6d9dcd512ec6604b0eda2cb3.svg"},function(e,t,n){var a=n(209);(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .settings-modal_modal-content_2bE7f {\n max-width: 750px;\n} .settings-modal_body_cAUJ0 {\n background: hsla(0, 100%, 100%, 1);\n padding: 1.5rem 2.25rem;\n min-height: 150px;\n max-height: calc(100vh - 250px);\n overflow-y: auto;\n} [theme="dark"] .settings-modal_body_cAUJ0 {\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} /* For small screens, such as in the embed */ @media (max-height: 600px) {\n .settings-modal_modal-content_2bE7f {\n margin: 50px auto;\n }\n .settings-modal_body_cAUJ0 {\n max-height: calc(100vh - 150px);\n }\n} .settings-modal_setting_PxhNM {\n display: flex;\n flex-direction: column;\n padding: 0.5rem 1rem;\n margin: 0.25rem 0;\n border-radius: 4px;\n} .settings-modal_setting_PxhNM.settings-modal_active_1McfX {\n background: #dbebff;\n} .settings-modal_setting_PxhNM:hover,\n.settings-modal_setting_PxhNM:focus-within {\n background: #cadef5;\n} [theme="dark"] .settings-modal_setting_PxhNM.settings-modal_active_1McfX {\n background: #16202c;\n} [theme="dark"] .settings-modal_setting_PxhNM:hover,\n[theme="dark"] .settings-modal_setting_PxhNM:focus-within {\n background: #202f41;\n} .settings-modal_label_2Phuq {\n height: 32px;\n display: flex;\n flex-direction: row;\n align-items: center;\n} .settings-modal_setting_PxhNM table {\n border-collapse: collapse;\n} .settings-modal_setting_PxhNM tr,\n.settings-modal_setting_PxhNM td,\n.settings-modal_setting_PxhNM th {\n padding: 0;\n margin: 0;\n border: 1px solid var(--ui-tertiary, hsla(215, 50%, 90%, 1));\n} .settings-modal_checkbox_1dXwG {\n margin-right: 0.5rem;\n} .settings-modal_help-icon_2FTix {\n border: 0;\n background-color: transparent;\n background-image: url('+a(n(1592))+');\n width: 20px;\n height: 20px;\n background-size: 100%;\n margin-left: 0.5rem;\n cursor: pointer;\n} [theme="dark"] .settings-modal_help-icon_2FTix {\n background-image: url('+a(n(1593))+');\n} .settings-modal_custom-stage-size_3I0AA > * {\n margin-right: 0.5rem;\n} .settings-modal_custom-stage-size-input_2ivQT {\n width: 80px;\n} .settings-modal_info_1a5yx {\n margin-bottom: 0.25rem;\n} .settings-modal_header_3lDNd {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin: 0.5rem 0 0 0;\n font-weight: bold;\n} .settings-modal_divider_7euKA {\n flex-grow: 1;\n margin-left: 1rem;\n border-top: 1px dashed var(--ui-tertiary, hsla(215, 50%, 90%, 1));\n} .settings-modal_button_15QCA {\n font-family: inherit;\n font-size: 14px;\n background-color: hsla(0, 100%, 65%, 1);\n color: white;\n border: none;\n padding: 0.5rem 1rem;\n margin: 0;\n border-radius: 4px;\n cursor: pointer;\n font-family: inherit;\n font-weight: bold;\n} .settings-modal_button_15QCA:active, .settings-modal_button_15QCA:focus-within {\n box-shadow: 0 0 0 3px hsla(0, 100%, 65%, 0.35);\n} .settings-modal_warning_2xSC8 {\n padding: 0.5rem 1rem;\n margin: 0.25rem 0;\n border-radius: 4px;\n background: rgb(233, 233, 53);\n} [theme="dark"] .settings-modal_warning_2xSC8 {\n background: rgb(114, 102, 0);\n}\n',""]),t.locals={"modal-content":"settings-modal_modal-content_2bE7f",modalContent:"settings-modal_modal-content_2bE7f",body:"settings-modal_body_cAUJ0",setting:"settings-modal_setting_PxhNM",active:"settings-modal_active_1McfX",label:"settings-modal_label_2Phuq",checkbox:"settings-modal_checkbox_1dXwG","help-icon":"settings-modal_help-icon_2FTix",helpIcon:"settings-modal_help-icon_2FTix","custom-stage-size":"settings-modal_custom-stage-size_3I0AA",customStageSize:"settings-modal_custom-stage-size_3I0AA","custom-stage-size-input":"settings-modal_custom-stage-size-input_2ivQT",customStageSizeInput:"settings-modal_custom-stage-size-input_2ivQT",info:"settings-modal_info_1a5yx",header:"settings-modal_header_3lDNd",divider:"settings-modal_divider_7euKA",button:"settings-modal_button_15QCA",warning:"settings-modal_warning_2xSC8"}},function(e,t,n){e.exports=n.p+"static/assets/c4c75827d7f30081f493963fadec60a1.svg"},function(e,t,n){e.exports=n.p+"static/assets/171fbf8ebb9d7127d4c59a04568e2af4.svg"},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .load-extension_code_2UsqN,\n.load-extension_unsandboxed-container_3_M9P,\n.load-extension_unsandboxed-warning_2iFhK,\n.load-extension_sandboxed_3ynzH {\n margin: 8px 0;\n} .load-extension_unsandboxed-container_3_M9P {\n display: flex;\n align-items: center;\n} .load-extension_unsandboxed-checkbox_1tSmf {\n margin-right: 8px;\n} .load-extension_unsandboxed-warning_2iFhK {\n padding: 0.5rem;\n border-radius: 0.25rem;\n background-color: rgba(255, 81, 81, 0.25);\n border: 1px solid red;\n}\n",""]),t.locals={code:"load-extension_code_2UsqN","unsandboxed-container":"load-extension_unsandboxed-container_3_M9P",unsandboxedContainer:"load-extension_unsandboxed-container_3_M9P","unsandboxed-warning":"load-extension_unsandboxed-warning_2iFhK",unsandboxedWarning:"load-extension_unsandboxed-warning_2iFhK",sandboxed:"load-extension_sandboxed_3ynzH","unsandboxed-checkbox":"load-extension_unsandboxed-checkbox_1tSmf",unsandboxedCheckbox:"load-extension_unsandboxed-checkbox_1tSmf"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".url_url_3Y61f {\n font-family: monospace;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n word-wrap: break-word;\n}\n.url_url_3Y61f::before {\n content: '\"';\n}\n.url_url_3Y61f::after {\n content: '\"';\n}\n",""]),t.locals={url:"url_url_3Y61f"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .data-url_code_1o8oS {\n display: block;\n width: 100%;\n max-width: 100%;\n min-width: 100%;\n height: 5rem;\n min-height: 3rem;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 0.25rem;\n padding: 0.25rem;\n font-size: 0.875rem;\n font-family: monospace;\n margin: 0.5rem 0;\n} [theme="dark"] .data-url_code_1o8oS {\n background: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n color: white;\n}\n',""]),t.locals={code:"data-url_code_1o8oS"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .security-manager-modal_modal-content_3qWwH {\n width: 440px;\n margin-top: 25px;\n} .security-manager-modal_body_Pn7qy {\n background: hsla(0, 100%, 100%, 1);\n padding: 1rem 1.5rem;\n} [theme="dark"] .security-manager-modal_body_Pn7qy {\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} .security-manager-modal_body_Pn7qy p {\n margin: 8px 0;\n} .security-manager-modal_buttons_1LSKA {\n display: flex;\n} .security-manager-modal_buttons_1LSKA :disabled {\n opacity: 0.8;\n} .security-manager-modal_deny-button_3Vd-R, .security-manager-modal_allow-button_3tcXk {\n flex-grow: 1;\n font: inherit;\n color: inherit;\n padding: 0.75rem 1rem;\n border-radius: 0.25rem;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n font-weight: 600;\n font-size: 0.85rem;\n} .security-manager-modal_deny-button_3Vd-R {\n background-color: rgb(255, 92, 92);\n color: white;\n margin-right: 8px;\n} .security-manager-modal_allow-button_3tcXk {\n background-color: #24cd11;\n color: black;\n}\n',""]),t.locals={"modal-content":"security-manager-modal_modal-content_3qWwH",modalContent:"security-manager-modal_modal-content_3qWwH",body:"security-manager-modal_body_Pn7qy",buttons:"security-manager-modal_buttons_1LSKA","deny-button":"security-manager-modal_deny-button_3Vd-R",denyButton:"security-manager-modal_deny-button_3Vd-R","allow-button":"security-manager-modal_allow-button_3tcXk",allowButton:"security-manager-modal_allow-button_3tcXk"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .file-input_container_1c4jE {\n display: block;\n position: relative;\n padding: 1rem;\n margin: 1rem 0;\n text-align: center;\n border: 4px dashed var(--ui-tertiary, hsla(215, 50%, 90%, 1));\n border-radius: 5px;\n cursor: pointer;\n background: none;\n width: 100%;\n} .file-input_container_1c4jE:focus-within {\n border-color: hsla(0, 100%, 65%, 1);\n}\n",""]),t.locals={container:"file-input_container_1c4jE"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .custom-extension-modal_modal-content_3DjW0 {\n max-width: 550px;\n margin-top: 50px;\n} .custom-extension-modal_body_2iQF3 {\n background: hsla(0, 100%, 100%, 1);\n padding: 1.5rem 2.25rem;\n} [theme="dark"] .custom-extension-modal_body_2iQF3 {\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} .custom-extension-modal_body_2iQF3 p,\n.custom-extension-modal_unsandboxed-container_8juVd,\n.custom-extension-modal_url-input_3NAsR,\n.custom-extension-modal_text-code-input_2xKjS {\n margin: 1rem 0;\n display: block;\n} .custom-extension-modal_type-selector-container_2Fag3 {\n display: flex;\n justify-content: space-around;\n} .custom-extension-modal_type-selector-button_1r2YN {\n width: 100%;\n cursor: pointer;\n border-bottom: 0.25rem solid var(--ui-tertiary, hsla(215, 50%, 90%, 1));\n margin: 0 1rem;\n padding: 0.5rem 0;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n} .custom-extension-modal_type-selector-button_1r2YN[data-active="true"] {\n border-color: hsla(0, 100%, 65%, 1);\n} .custom-extension-modal_type-selector-button_1r2YN:active {\n border-color: hsla(0, 100%, 65%, 0.35);\n} .custom-extension-modal_url-input_3NAsR,\n.custom-extension-modal_text-code-input_2xKjS {\n width: 100%;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 0.25rem;\n padding: 0.5rem;\n font-size: inherit;\n} [theme="dark"] .custom-extension-modal_url-input_3NAsR,\n[theme="dark"] .custom-extension-modal_text-code-input_2xKjS {\n background: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n color: white;\n} .custom-extension-modal_url-input_3NAsR {\n height: 3rem;\n} .custom-extension-modal_text-code-input_2xKjS {\n min-height: 3rem;\n height: 8rem;\n min-width: 100%;\n max-width: 100%;\n font-family: monospace;\n} .custom-extension-modal_unsandboxed-container_8juVd {\n display: flex;\n align-items: center;\n} .custom-extension-modal_unsandboxed-checkbox_HkBFl {\n margin-right: 0.5rem;\n} .custom-extension-modal_trusted-extension_1WNO9,\n.custom-extension-modal_unsandboxed-warning_1BmMu {\n padding: 0.5rem;\n border-radius: 0.25rem;\n} .custom-extension-modal_trusted-extension_1WNO9 {\n background-color: rgba(94, 255, 94, 0.25);\n border: 1px solid green;\n} .custom-extension-modal_unsandboxed-warning_1BmMu {\n background-color: rgba(255, 81, 81, 0.25);\n border: 1px solid red;\n} .custom-extension-modal_unsandboxed-warning_1BmMu > *:not(:last-child) {\n display: block;\n margin-bottom: 4px;\n} .custom-extension-modal_button-row_3dv8g {\n display: flex;\n justify-content: flex-end;\n} .custom-extension-modal_load-button_WGJAt {\n font: inherit;\n color: inherit;\n padding: 0.75rem 1rem;\n border-radius: 0.25rem;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n font-weight: 600;\n font-size: 0.85rem;\n color: hsla(0, 100%, 100%, 1);\n background: hsla(0, 100%, 65%, 1);\n} .custom-extension-modal_load-button_WGJAt:disabled {\n opacity: 0.8;\n}\n',""]),t.locals={"modal-content":"custom-extension-modal_modal-content_3DjW0",modalContent:"custom-extension-modal_modal-content_3DjW0",body:"custom-extension-modal_body_2iQF3","unsandboxed-container":"custom-extension-modal_unsandboxed-container_8juVd",unsandboxedContainer:"custom-extension-modal_unsandboxed-container_8juVd","url-input":"custom-extension-modal_url-input_3NAsR",urlInput:"custom-extension-modal_url-input_3NAsR","text-code-input":"custom-extension-modal_text-code-input_2xKjS",textCodeInput:"custom-extension-modal_text-code-input_2xKjS","type-selector-container":"custom-extension-modal_type-selector-container_2Fag3",typeSelectorContainer:"custom-extension-modal_type-selector-container_2Fag3","type-selector-button":"custom-extension-modal_type-selector-button_1r2YN",typeSelectorButton:"custom-extension-modal_type-selector-button_1r2YN","unsandboxed-checkbox":"custom-extension-modal_unsandboxed-checkbox_HkBFl",unsandboxedCheckbox:"custom-extension-modal_unsandboxed-checkbox_HkBFl","trusted-extension":"custom-extension-modal_trusted-extension_1WNO9",trustedExtension:"custom-extension-modal_trusted-extension_1WNO9","unsandboxed-warning":"custom-extension-modal_unsandboxed-warning_1BmMu",unsandboxedWarning:"custom-extension-modal_unsandboxed-warning_1BmMu","button-row":"custom-extension-modal_button-row_3dv8g",buttonRow:"custom-extension-modal_button-row_3dv8g","load-button":"custom-extension-modal_load-button_WGJAt",loadButton:"custom-extension-modal_load-button_WGJAt"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ .restore-point-modal_modal-content_MhWVL {\n max-width: 550px;\n margin-top: 50px;\n} .restore-point-modal_body_2MCxE {\n background: hsla(0, 100%, 100%, 1);\n padding: 1.5rem 2.25rem;\n max-height: calc(100vh - 150px);\n overflow: auto;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n} [theme="dark"] .restore-point-modal_body_2MCxE {\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} .restore-point-modal_extra-container_1h-QF {\n display: flex;\n justify-content: space-between;\n align-items: center;\n} .restore-point-modal_total-size_2aFad {\n\n} .restore-point-modal_total-size-description_2spx- {\n font-size: small;\n} .restore-point-modal_button_3fhkL {\n font: inherit;\n color: inherit;\n padding: 0.75rem 1rem;\n border-radius: 0.25rem;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n font-weight: 600;\n font-size: 0.85rem;\n color: hsla(0, 100%, 100%, 1);\n} .restore-point-modal_button_3fhkL:disabled {\n opacity: 0.8;\n} .restore-point-modal_delete-all-button_3uoFz {\n margin-left: 1rem;\n background-color: hsla(30, 100%, 55%, 1);\n white-space: nowrap;\n} .restore-point-modal_error-message_2jcrY {\n font-family: monospace;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n} .restore-point-modal_restore-point-container_FtGHo {\n display: grid;\n grid-template-columns: 1fr;\n gap: 0.5rem;\n} .restore-point-modal_restore-point_2yeHY {\n width: 100%;\n cursor: pointer;\n display: flex;\n align-items: center;\n border: 2px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n padding: 0.5rem;\n border-radius: 0.5rem;\n gap: 0.5rem;\n} .restore-point-modal_restore-point_2yeHY:hover {\n border-color: hsla(0, 100%, 65%, 1);\n} .restore-point-modal_restore-point-title_311jA {\n font-weight: bold;\n} .restore-point-modal_thumbnail-container_2BRX1 {\n flex-shrink: 0;\n /* 4:3 */\n width: 100px;\n height: 75px;\n} .restore-point-modal_thumbnail-image_2HLfd {\n display: block;\n border-radius: 0.25rem;\n width: 100%;\n height: 100%;\n} .restore-point-modal_thumbnail-placeholder_3BxpD {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 2em;\n} .restore-point-modal_delete-button_FU0Oj {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: none;\n border: none;\n border-radius: 100%;\n width: 2rem;\n height: 2rem;\n margin-left: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n} .restore-point-modal_delete-button_FU0Oj img {\n display: block;\n width: 75%;\n height: 75%;\n} [theme="dark"] .restore-point-modal_delete-button_FU0Oj img {\n filter: invert(100%);\n} .restore-point-modal_delete-button_FU0Oj:hover {\n background-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} .restore-point-modal_disabled_2fYZv {\n padding: 0.5rem;\n border-radius: 0.5rem;\n background-color: rgba(255, 0, 0, 0.18);\n border: 2px solid rgba(255, 0, 0, 0.568);\n font-weight: bold;\n}\n',""]),t.locals={"modal-content":"restore-point-modal_modal-content_MhWVL",modalContent:"restore-point-modal_modal-content_MhWVL",body:"restore-point-modal_body_2MCxE","extra-container":"restore-point-modal_extra-container_1h-QF",extraContainer:"restore-point-modal_extra-container_1h-QF","total-size":"restore-point-modal_total-size_2aFad",totalSize:"restore-point-modal_total-size_2aFad","total-size-description":"restore-point-modal_total-size-description_2spx-",totalSizeDescription:"restore-point-modal_total-size-description_2spx-",button:"restore-point-modal_button_3fhkL","delete-all-button":"restore-point-modal_delete-all-button_3uoFz",deleteAllButton:"restore-point-modal_delete-all-button_3uoFz","error-message":"restore-point-modal_error-message_2jcrY",errorMessage:"restore-point-modal_error-message_2jcrY","restore-point-container":"restore-point-modal_restore-point-container_FtGHo",restorePointContainer:"restore-point-modal_restore-point-container_FtGHo","restore-point":"restore-point-modal_restore-point_2yeHY",restorePoint:"restore-point-modal_restore-point_2yeHY","restore-point-title":"restore-point-modal_restore-point-title_311jA",restorePointTitle:"restore-point-modal_restore-point-title_311jA","thumbnail-container":"restore-point-modal_thumbnail-container_2BRX1",thumbnailContainer:"restore-point-modal_thumbnail-container_2BRX1","thumbnail-image":"restore-point-modal_thumbnail-image_2HLfd",thumbnailImage:"restore-point-modal_thumbnail-image_2HLfd","thumbnail-placeholder":"restore-point-modal_thumbnail-placeholder_3BxpD",thumbnailPlaceholder:"restore-point-modal_thumbnail-placeholder_3BxpD","delete-button":"restore-point-modal_delete-button_FU0Oj",deleteButton:"restore-point-modal_delete-button_FU0Oj",disabled:"restore-point-modal_disabled_2fYZv"}},function(e,t,n){var a=n(209);(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/ /* Toolbox z-index: 40; set in scratch-blocks */ /* tooltips should go over add buttons if they overlap */ /* monitors go over add buttons */ /* "ask" block text input goes above monitors */ /* menu-bar should go over monitors, alerts and tutorials */ /* tw: show below menu bar normally */ /* Block drag z-index: 1000; default 50 is overriden in blocks.css */ /* so it is draggable into other panes */ /* in most interfaces, the context menu is always on top */ .fonts-modal_modal-content_36LbI {\n max-width: 550px;\n margin-top: 50px;\n} .fonts-modal_body_yf5mP {\n background: hsla(0, 100%, 100%, 1);\n padding: 1.5rem 2.25rem;\n max-height: calc(100vh - 150px);\n overflow: auto;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n} [theme="dark"] .fonts-modal_body_yf5mP {\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n background: var(--ui-primary, hsla(215, 100%, 95%, 1));\n} .fonts-modal_open-buttons_OdA4k {\n display: flex;\n gap: 1rem;\n} .fonts-modal_open-button_3skjP {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n width: 100%;\n align-items: center;\n background: none;\n padding: 0.5rem;\n margin: 0;\n border: 2px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 0.5rem;\n} .fonts-modal_open-button_3skjP:hover {\n color: hsla(0, 100%, 65%, 1);\n border-color: hsla(0, 100%, 65%, 1);\n} .fonts-modal_open-button-image_19kgq {\n width: 64px;\n height: 64px;\n background-color: currentColor;\n -webkit-mask-size: cover;\n mask-size: cover;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n} .fonts-modal_system-image_p0UST {\n -webkit-mask-image: url('+a(n(619))+");\n mask-image: url("+a(n(619))+");\n} .fonts-modal_custom-image_3B90x {\n -webkit-mask-image: url("+a(n(620))+");\n mask-image: url("+a(n(620))+');\n} .fonts-modal_open-button-text_1JUnw {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n} .fonts-modal_open-button-text-main_1QWic {\n font-weight: bold;\n} .fonts-modal_open-button-text-sub_2yVxF {\n\n} .fonts-modal_font-input-outer_OtzL0 {\n\n} .fonts-modal_font-input_jygEL {\n width: 100%;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 0.25rem;\n padding: 0 1rem;\n height: 3rem;\n font: inherit;\n} .fonts-modal_font-dropdown-outer_2kOi5 {\n position: absolute;\n z-index: 510;\n background-color: white;\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n border-radius: 0.25rem;\n overflow: auto;\n max-height: 300px;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n box-sizing: border-box;\n box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, .3);\n} [theme="dark"] .fonts-modal_font-dropdown-outer_2kOi5 {\n background-color: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n} .fonts-modal_font-dropdown-item_1NsNq {\n display: flex;\n align-items: center;\n padding: 0.5rem 0.75rem;\n height: 1.5rem;\n cursor: pointer;\n transition: .1s ease;\n} .fonts-modal_font-dropdown-item_1NsNq:hover {\n background-color: hsla(0, 100%, 65%, 1);\n color: #ffffff;\n} .fonts-modal_font-playground_3vAYw {\n background: none;\n border: none;\n padding: 0.5rem;\n margin: 0;\n resize: none;\n width: 100%;\n height: 100px;\n font-size: 1.5rem;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 0.25rem;\n} .fonts-modal_button_1htQ- {\n font: inherit;\n font-weight: bold;\n padding: 0.75rem 1rem;\n border-radius: 0.25rem;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n background-color: hsla(0, 100%, 65%, 1);\n color: hsla(0, 100%, 100%, 1);\n} .fonts-modal_button_1htQ-:disabled {\n opacity: 0.8;\n} .fonts-modal_fallback-container_3JsVp {\n display: flex;\n flex-direction: column;\n} .fonts-modal_fallback-label_3lhWz {\n margin-bottom: 0.5rem;\n} .fonts-modal_fallback-list_dMIkJ {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 0.25rem\n} .fonts-modal_fallback-button_11k4q {\n background: none;\n padding: 0;\n border: 0;\n border-radius: 0.25rem;\n height: 30px;\n display: flex;\n align-items: center;\n justify-content: center;\n} .fonts-modal_fallback-button_11k4q:hover {\n color: hsla(0, 100%, 65%, 1);\n} .fonts-modal_fallback-container_3JsVp .fonts-modal_fallback-button-selected_8XTtQ {\n background-color: hsla(0, 100%, 65%, 1);\n color: white;\n} .fonts-modal_fonts-outer_2gPPS {\n border-top: 2px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n padding-top: 1rem;\n} .fonts-modal_fonts-outer_2gPPS p {\n margin-bottom: 0.5rem;\n} .fonts-modal_fonts_2IVM- {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n} .fonts-modal_manage-font_leTBp {\n width: 100%;\n display: flex;\n align-items: center;\n border: 2px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n border-radius: 0.5rem;\n padding: 0.5rem;\n gap: 0.5rem;\n} .fonts-modal_manage-font-name_2FEQm {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n overflow-wrap: anywhere;\n} .fonts-modal_manage-font-buttons_1irfe {\n margin-left: auto;\n flex-shrink: 0;\n display: flex;\n flex-direction: row;\n gap: 0.5rem;\n} .fonts-modal_manage-font-button_1Ezz0 {\n background: none;\n border: none;\n border-radius: 100%;\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n} .fonts-modal_manage-font-button_1Ezz0:hover {\n background-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n} .fonts-modal_manage-font-button_1Ezz0 img {\n display: block;\n width: 100%;\n height: 100%;\n} [theme="dark"] .fonts-modal_manage-font-button_1Ezz0 img {\n filter: invert(100%);\n}\n',""]),t.locals={"modal-content":"fonts-modal_modal-content_36LbI",modalContent:"fonts-modal_modal-content_36LbI",body:"fonts-modal_body_yf5mP","open-buttons":"fonts-modal_open-buttons_OdA4k",openButtons:"fonts-modal_open-buttons_OdA4k","open-button":"fonts-modal_open-button_3skjP",openButton:"fonts-modal_open-button_3skjP","open-button-image":"fonts-modal_open-button-image_19kgq",openButtonImage:"fonts-modal_open-button-image_19kgq","system-image":"fonts-modal_system-image_p0UST",systemImage:"fonts-modal_system-image_p0UST","custom-image":"fonts-modal_custom-image_3B90x",customImage:"fonts-modal_custom-image_3B90x","open-button-text":"fonts-modal_open-button-text_1JUnw",openButtonText:"fonts-modal_open-button-text_1JUnw","open-button-text-main":"fonts-modal_open-button-text-main_1QWic",openButtonTextMain:"fonts-modal_open-button-text-main_1QWic","open-button-text-sub":"fonts-modal_open-button-text-sub_2yVxF",openButtonTextSub:"fonts-modal_open-button-text-sub_2yVxF","font-input-outer":"fonts-modal_font-input-outer_OtzL0",fontInputOuter:"fonts-modal_font-input-outer_OtzL0","font-input":"fonts-modal_font-input_jygEL",fontInput:"fonts-modal_font-input_jygEL","font-dropdown-outer":"fonts-modal_font-dropdown-outer_2kOi5",fontDropdownOuter:"fonts-modal_font-dropdown-outer_2kOi5","font-dropdown-item":"fonts-modal_font-dropdown-item_1NsNq",fontDropdownItem:"fonts-modal_font-dropdown-item_1NsNq","font-playground":"fonts-modal_font-playground_3vAYw",fontPlayground:"fonts-modal_font-playground_3vAYw",button:"fonts-modal_button_1htQ-","fallback-container":"fonts-modal_fallback-container_3JsVp",fallbackContainer:"fonts-modal_fallback-container_3JsVp","fallback-label":"fonts-modal_fallback-label_3lhWz",fallbackLabel:"fonts-modal_fallback-label_3lhWz","fallback-list":"fonts-modal_fallback-list_dMIkJ",fallbackList:"fonts-modal_fallback-list_dMIkJ","fallback-button":"fonts-modal_fallback-button_11k4q",fallbackButton:"fonts-modal_fallback-button_11k4q","fallback-button-selected":"fonts-modal_fallback-button-selected_8XTtQ",fallbackButtonSelected:"fonts-modal_fallback-button-selected_8XTtQ","fonts-outer":"fonts-modal_fonts-outer_2gPPS",fontsOuter:"fonts-modal_fonts-outer_2gPPS",fonts:"fonts-modal_fonts_2IVM-","manage-font":"fonts-modal_manage-font_leTBp",manageFont:"fonts-modal_manage-font_leTBp","manage-font-name":"fonts-modal_manage-font-name_2FEQm",manageFontName:"fonts-modal_manage-font-name_2FEQm","manage-font-buttons":"fonts-modal_manage-font-buttons_1irfe",manageFontButtons:"fonts-modal_manage-font-buttons_1irfe","manage-font-button":"fonts-modal_manage-font-button_1Ezz0",manageFontButton:"fonts-modal_manage-font-button_1Ezz0"}},function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* make sure to keep these in sync with other constants,\ne.g. STAGE_DIMENSION_DEFAULTS in lib/screen-utils.js */\n\n/* layout contants from `layout-constants.js` */\n\n/* #E5F0FF */\n\n/* #E9F1FC */\n\n/* #D9E3F2 */\n\n/* 90% transparent version of motion-primary */\n\n/* #FFFFFF */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 25% transparent version of ui-white */\n\n/* 15% transparent version of black */\n\n/* #575E75 */\n\n/* 35% transparent version of motion-primary */\n\n/* 15% transparent version of motion-primary */\n\n/* opt-in theme overrides */\n\n/* #FF661A */\n\n/* #E64D00 */\n\n/* #CF63CF */\n\n/* #BD42BD */\n\n/* #FFAB19 */\n\n/* #FF8C1A */\n\n/* #0FBD8C */\n\n/* #0FBD8C */\n\n/* #FF8C1A */\n\n/* #FFB366 */\n\n/* #FF8C1A */\n\n/* 35% transparent version of extensions-primary */\n\n/* opaque version of extensions-transparent, on white bg */\n\n/* lighter than motion-primary */\n\n/*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/\n\n/* Toolbox z-index: 40; set in scratch-blocks */\n\n/* tooltips should go over add buttons if they overlap */\n\n/* monitors go over add buttons */\n\n/* "ask" block text input goes above monitors */\n\n/* menu-bar should go over monitors, alerts and tutorials */\n\n/* tw: show below menu bar normally */\n\n/* Block drag z-index: 1000; default 50 is overriden in blocks.css */\n\n/* so it is draggable into other panes */\n\n/* in most interfaces, the context menu is always on top */\n\n.gui_page-wrapper_1cgy0 {\n height: 100%;\n}\n\n.gui_body-wrapper_-N0sA {\n height: calc(100% - 3rem);\n background-color: var(--ui-primary, hsla(215, 100%, 95%, 1));\n}\n\n.gui_body-wrapper_-N0sA * {\n box-sizing: border-box;\n}\n\n.gui_flex-wrapper_uXHkj {\n display: flex;\n\n /*\n Make 2 columns:\n a) for the blocks + workspace panes, and\n b) for combined stage menu + stage + sprite/stage selectors\n */\n flex-direction: row;\n height: 100%;\n\n /*\n Stop scrollbar popping in and out from scratch-blocks border issue\n https://github.com/LLK/scratch-gui/issues/318\n */\n overflow: hidden;\n}\n\n.gui_editor-wrapper_2DYcj {\n /*\n This is carefully balanced-- the minimum width at which the GUI will be displayed is 1024px.\n At that size, the stage pane is 408px wide, with $space of padding to each side.\n However, we must also add the border width to the stage pane. All-in-all, the stage pane\'s final width is\n 408px + ($space + $stage-standard-border-width * 2) (one border & padding per left/right side).\n\n @todo This is in place to prevent "doubling up" of horizontal scrollbars in narrow windows, but there are likely\n much better ways to solve that (e.g. undo #2124, remove this flex-basis entirely). However, they run their own\n risks of breaking things, so let\'s just leave this as-is for the time being.\n */\n flex-basis: calc(1024px - 408px - ((0.5rem + 0.0625rem) * 2));\n flex-grow: 1;\n flex-shrink: 0;\n position: relative;\n\n display: flex;\n flex-direction: column;\n}\n\n.gui_tab-list_87TYM {\n height: 2.75rem;\n width: 250px; /* Match width of the toolbox */\n display: flex;\n align-items: flex-end;\n flex-shrink: 0;\n\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-weight: 500;\n font-size: 0.80rem;\n\n /* Overrides for react-tabs styling */\n margin: 0 !important;\n border-bottom: 0 !important;\n}\n\n.gui_tab_27Unf {\n flex-grow: 1;\n height: 80%;\n margin-bottom: 0;\n\n border-radius: 1rem 1rem 0 0;\n border: 1px solid var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n\n padding: 0.125rem 1.25rem 0;\n font-size: 0.75rem;\n\n background-color: var(--ui-tertiary, hsla(215, 50%, 90%, 1));\n color: hsla(225, 15%, 40%, 0.75);\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n -webkit-user-select: none;\n\n -moz-user-select: none;\n\n -ms-user-select: none;\n\n user-select: none;\n white-space: nowrap;\n}\n\n[theme="dark"] .gui_tab_27Unf {\n color: var(--text-primary, hsla(225, 15%, 40%, 1));\n}\n\n[dir="ltr"] .gui_tab_27Unf {\n margin-left: -0.5rem;\n}\n\n[dir="rtl"] .gui_tab_27Unf {\n margin-right: -0.5rem;\n}\n\n[dir="ltr"] .gui_tab_27Unf:nth-of-type(1) {\n margin-left: 0;\n}\n\n[dir="rtl"] .gui_tab_27Unf:nth-of-type(1) {\n margin-right: 0;\n}\n\n/* Use z-indices to force left-on-top for tabs */\n\n.gui_tab_27Unf:nth-of-type(1) {\n z-index: 3;\n}\n\n.gui_tab_27Unf:nth-of-type(2) {\n z-index: 2;\n}\n\n.gui_tab_27Unf:nth-of-type(3) {\n z-index: 1;\n}\n\n.gui_tab_27Unf:hover {\n background-color: var(--ui-primary, hsla(215, 100%, 95%, 1));\n}\n\n[theme="dark"] .gui_tab_27Unf:hover {\n background-color: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n}\n\n.gui_tab_27Unf.gui_is-selected_sHAiu {\n height: 90%;\n color: hsla(0, 100%, 65%, 1);\n background-color: hsla(0, 100%, 100%, 1);\n z-index: 4; /* Make sure selected is always above */\n}\n\n[theme="dark"] .gui_tab_27Unf.gui_is-selected_sHAiu {\n background-color: var(--ui-secondary, hsla(215, 75%, 95%, 1));\n}\n\n.gui_tab_27Unf img {\n width: 1.375rem;\n filter: grayscale(100%);\n}\n\n[dir="ltr"] .gui_tab_27Unf img {\n margin-right: 0.125rem;\n}\n\n[dir="rtl"] .gui_tab_27Unf img {\n margin-left: 0.125rem;\n}\n\n/* mirror blocks and sound tab icons */\n\n[dir="rtl"] .gui_tab_27Unf:nth-of-type(1) img {\n transform: scaleX(-1);\n}\n\n[dir="rtl"] .gui_tab_27Unf:nth-of-type(3) img {\n transform: scaleX(-1);\n}\n\n.gui_tab_27Unf.gui_is-selected_sHAiu img {\n filter: none;\n}\n\n/* Tab style overrides from react-tabs */\n\n.gui_tab_27Unf.gui_is-selected_sHAiu:after {\n display: none;\n}\n\n.gui_tab_27Unf.gui_is-selected_sHAiu:focus {\n outline: none;\n box-shadow: none;\n border-color: var(--ui-black-transparent, hsla(0, 0%, 0%, 0.15));\n}\n\n.gui_tab_27Unf.gui_is-selected_sHAiu:focus:after {\n display: none;\n}\n\n/* Body of the tabs */\n\n.gui_tabs_AgmuP {\n position: relative;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n}\n\n.gui_tab-panel_22sLx {\n position: relative;\n flex-grow: 1;\n display: none;\n}\n\n.gui_tab-panel_22sLx.gui_is-selected_sHAiu {\n display: flex;\n}\n\n.gui_blocks-wrapper_1ccgf {\n flex-grow: 1;\n position: relative;\n}\n\n.gui_stage-and-target-wrapper_69KBf {\n /*\n Makes rows for children:\n 1) stage menu\n 2) stage\n 3) sprite/stage selectors\n Only reason we need this, is so .targetWrapper, which holds the selectors,\n goes to full vertical height of the window\n */\n display: flex;\n flex-direction: column;\n /* pad entire wrapper to the left and right; allow children to fill width */\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n\n /* this will only ever be as wide as the stage */\n flex-basis: 0;\n}\n\n.gui_target-wrapper_36Gbz {\n display: flex;\n flex-grow: 1;\n flex-basis: 0;\n\n padding-top: 0.5rem;\n min-height: 0; /* this makes it work in Firefox */\n\n /*\n For making the sprite-selector a scrollable pane\n @todo: Not working in Safari\n */\n /* TODO this also breaks the thermometer menu */\n /* overflow: hidden; */\n}\n\n.gui_extension-button-container_b4rCs {\n width: 3.75rem;\n height: 3.25rem;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 42;\n background: hsla(0, 100%, 65%, 1);\n\n border: 1px solid hsla(0, 100%, 65%, 1);\n box-sizing: content-box; /* To match scratch-block vertical toolbox borders */\n}\n\n.gui_extension-button-container_b4rCs:before {\n content: "";\n position: absolute;\n top: calc(calc(-1 * 15px) - 1px);\n left: -1px;\n background: linear-gradient(rgba(0, 0, 0, 0),rgba(0, 0, 0, 0.15));\n height: 15px;\n width: calc(100% + 0.5px);\n}\n\n.gui_extension-button_2T7PA {\n background: none;\n border: none;\n outline: none;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n\n.gui_extension-button-icon_S4gDk {\n width: 1.75rem;\n height: 1.75rem;\n}\n\n[dir="rtl"] .gui_extension-button-icon_S4gDk {\n transform: scaleX(-1);\n}\n\n.gui_extension-button_2T7PA > div {\n margin-top: 0;\n}\n\n/* Sprite Selection Watermark */\n\n.gui_watermark_3vBYb {\n position: absolute;\n top: 1.25rem;\n pointer-events: none;\n}\n\n[dir="ltr"] .gui_watermark_3vBYb {\n right: 1.25rem;\n}\n\n[dir="rtl"] .gui_watermark_3vBYb {\n left: 1.25rem;\n}\n\n/* Menu */\n\n.gui_menu-bar-position_3U1T0 {\n position: relative;\n z-index: 491;\n}\n\n/* Alerts */\n\n.gui_alerts-container_15BWp {\n display: flex;\n justify-content: center;\n width: 100%;\n z-index: 490;\n position: absolute;\n margin-top: 53px;\n pointer-events: none;\n}\n\n/*\n Make the (background) page not scrollable when modals are open\n This CSS class is automatically added to the body when react-modal is open\n*/\n\n.ReactModal__Body--open {\n overflow: hidden;\n}\n\n/* tw: tw: when window is fullscreen, put a solid white background behind the stage */\n\n.gui_fullscreen-background_3g8mV {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n /* if the user-specified background color can\'t be understood by the browser, default to white */\n background-color: white;\n}\n',""]),t.locals={"page-wrapper":"gui_page-wrapper_1cgy0",pageWrapper:"gui_page-wrapper_1cgy0","body-wrapper":"gui_body-wrapper_-N0sA",bodyWrapper:"gui_body-wrapper_-N0sA","flex-wrapper":"gui_flex-wrapper_uXHkj",flexWrapper:"gui_flex-wrapper_uXHkj","editor-wrapper":"gui_editor-wrapper_2DYcj",editorWrapper:"gui_editor-wrapper_2DYcj","tab-list":"gui_tab-list_87TYM",tabList:"gui_tab-list_87TYM",tab:"gui_tab_27Unf","is-selected":"gui_is-selected_sHAiu",isSelected:"gui_is-selected_sHAiu",tabs:"gui_tabs_AgmuP","tab-panel":"gui_tab-panel_22sLx",tabPanel:"gui_tab-panel_22sLx","blocks-wrapper":"gui_blocks-wrapper_1ccgf",blocksWrapper:"gui_blocks-wrapper_1ccgf","stage-and-target-wrapper":"gui_stage-and-target-wrapper_69KBf",stageAndTargetWrapper:"gui_stage-and-target-wrapper_69KBf","target-wrapper":"gui_target-wrapper_36Gbz",targetWrapper:"gui_target-wrapper_36Gbz","extension-button-container":"gui_extension-button-container_b4rCs",extensionButtonContainer:"gui_extension-button-container_b4rCs","extension-button":"gui_extension-button_2T7PA",extensionButton:"gui_extension-button_2T7PA","extension-button-icon":"gui_extension-button-icon_S4gDk",extensionButtonIcon:"gui_extension-button-icon_S4gDk",watermark:"gui_watermark_3vBYb","menu-bar-position":"gui_menu-bar-position_3U1T0",menuBarPosition:"gui_menu-bar-position_3U1T0","alerts-container":"gui_alerts-container_15BWp",alertsContainer:"gui_alerts-container_15BWp","fullscreen-background":"gui_fullscreen-background_3g8mV",fullscreenBackground:"gui_fullscreen-background_3g8mV"}},,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return Q})),n.d(t,"guiInitialState",(function(){return W})),n.d(t,"guiMiddleware",(function(){return q})),n.d(t,"initEmbedded",(function(){return V})),n.d(t,"initFullScreen",(function(){return G})),n.d(t,"initPlayer",(function(){return H})),n.d(t,"initTelemetryModal",(function(){return X})),n.d(t,"initTutorialCard",(function(){return K}));var a=n(40),o=n(29),r=n(281),i=n(79),s=n(178),l=n(195),c=n(230),d=n(282),u=n(41),p=n(144),m=n(36),h=n(283),g=n(15),b=n(78),f=n(284),w=n(127),v=n(99),y=n(11),_=n(100),k=n(285),S=n(122),E=n(231),x=n(196),C=n(286),O=n(287),F=n(25),j=n(126),M=n(13),P=n.n(M),T=n(30),R=n(222);const I="scratch-gui/vm/SET_VM",D=new P.a;D.setCompatibilityMode(!0),D.runtime.cloudOptions.limit=R.a,D.attachStorage(T.a);const A=D;var B=n(138),N=n(288),L=n(728),z=n.n(L),U=n(84);const q=Object(a.d)(Object(a.a)(z()(300,{leading:!0,trailing:!0}))),W={alerts:o.a,assetDrag:r.a,blockDrag:d.a,cards:i.b,colorPicker:s.b,connectionModal:l.a,customStageSize:j.a,customProcedures:c.b,editorTab:u.f,mode:b.b,hoveredTarget:p.b,stageSize:E.c,menus:m.p,micIndicator:h.b,modals:g.q,monitors:f.b,monitorLayout:w.d,projectChanged:v.b,projectState:y.z,projectTitle:_.b,fontsLoaded:k.b,restoreDeletion:S.b,targets:x.c,timeout:C.c,toolbox:O.b,tw:F.s,vm:A,vmStatus:B.e,workspaceMetrics:N.c},H=function(e){return Object.assign({},e,{mode:{isEmbedded:!1,isFullScreen:e.mode.isFullScreen,isPlayerOnly:!0,hasEverEnteredEditor:!1}})},G=function(e){return Object.assign({},e,{mode:{isEmbedded:!1,isFullScreen:!0,isPlayerOnly:e.mode.isPlayerOnly,hasEverEnteredEditor:e.mode.hasEverEnteredEditor}})},V=function(e){return Object.assign({},e,{mode:{isEmbedded:!0,isFullScreen:!1,isPlayerOnly:!0,hasEverEnteredEditor:!1}})},K=function(e,t){return Object.assign({},e,{cards:{visible:!0,content:U.a,activeDeckId:t,expanded:!0,step:0,x:0,y:0,dragging:!1}})},X=function(e){return Object.assign({},e,{modals:{telemetryModal:!0}})},Q=Object(a.c)({alerts:o.d,assetDrag:r.b,blockDrag:d.b,cards:i.d,colorPicker:s.d,connectionModal:l.b,customStageSize:j.b,customProcedures:c.d,editorTab:u.e,mode:b.a,hoveredTarget:p.a,stageSize:E.a,menus:m.j,micIndicator:h.a,modals:g.p,monitors:f.a,monitorLayout:w.b,projectChanged:v.a,projectState:y.d,projectTitle:_.a,fontsLoaded:k.a,restoreDeletion:S.a,targets:x.a,timeout:C.a,toolbox:O.a,tw:F.c,vm:function(e,t){switch(void 0===e&&(e=A),t.type){case I:return t.vm;default:return e}},vmStatus:B.a,workspaceMetrics:N.a})}]]); \ No newline at end of file diff --git a/js/embed.e0e9f1f2a72fa8b7105c.js b/js/embed.e0e9f1f2a72fa8b7105c.js new file mode 100644 index 0000000..4a3f5ff --- /dev/null +++ b/js/embed.e0e9f1f2a72fa8b7105c.js @@ -0,0 +1 @@ +var GUI=function(e){function n(n){for(var t,o,c=n[0],l=n[1],s=n[2],i=0,b=[];i=0||(a[d]=e[d]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,d)&&(a[d]=e[d])}return a}var S=d(166),w=d(174),F=d(175),O=d(73);const j=(()=>{const e=location.hash.match(/#(\d+)/);if(null!==e)return e[1];const n=location.pathname.match(/(\d+)\/embed/);return null!==n?n[n.length-1]:"0"})(),k=new URLSearchParams(location.search);let I;const x=Object(c.d)(s.a,S.a,(function(e){class n extends o.a.Component{constructor(e){super(e),i()(this,["handleFullScreenChange"])}componentDidMount(){document.addEventListener("fullscreenchange",this.handleFullScreenChange),document.addEventListener("webkitfullscreenchange",this.handleFullScreenChange)}shouldComponentUpdate(e){return this.props.isFullScreen!==e.isFullScreen}componentDidUpdate(){m.a.available()&&(this.props.isFullScreen?m.a.request():m.a.enabled()&&m.a.exit())}componentWillUnmount(){document.removeEventListener("fullscreenchange",this.handleFullScreenChange),document.removeEventListener("webkitfullscreenchange",this.handleFullScreenChange)}handleFullScreenChange(){const e=m.a.enabled();this.props.onSetWindowIsFullScreen(e),this.props.onSetIsFullScreen(e)}render(){const n=this.props,{isFullScreen:d,onSetIsFullScreen:t,onSetWindowIsFullScreen:a}=n,r=v(n,g);return o.a.createElement(e,r)}}n.propTypes={isFullScreen:u.a.bool,onSetIsFullScreen:u.a.func,onSetWindowIsFullScreen:u.a.func};return Object(p.b)(e=>({isFullScreen:e.scratchGui.mode.isFullScreen}),e=>({onSetIsFullScreen:n=>e(Object(y.c)(n)),onSetWindowIsFullScreen:n=>e(Object(h.o)(n))}))(n)}))(F.a);Object(l.setAppElement)(O.a),a.a.render(o.a.createElement(x,{isEmbedded:!0,projectId:j,onVmInit:e=>{I=e},onProjectLoaded:()=>{k.has("autoplay")&&(I.start(),I.greenFlag())},routingStyle:"none"}),O.a),k.has("addons")&&Object(w.a)()}}); \ No newline at end of file diff --git a/js/extension worker.9fcc81092fe0ca080dcf.js b/js/extension worker.9fcc81092fe0ca080dcf.js new file mode 100644 index 0000000..d46342d --- /dev/null +++ b/js/extension worker.9fcc81092fe0ca080dcf.js @@ -0,0 +1 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=10)}([function(e,t,n){function r(){}n(14).mixin(r),r.prototype.write=function(e,t,n){this.emit("item",e,t,n)},r.prototype.end=function(){this.emit("end"),this.removeAllListeners()},r.prototype.pipe=function(e){var t=this;function n(){e.write.apply(e,Array.prototype.slice.call(arguments))}function r(){!e._isStdio&&e.end()}return t.emit("unpipe",e),e.emit("pipe",t),t.on("item",n),t.on("end",r),t.when("unpipe",(function(i){var a=i===e||void 0===i;return a&&(t.removeListener("item",n),t.removeListener("end",r),e.emit("unpipe")),a})),e},r.prototype.unpipe=function(e){return this.emit("unpipe",e),this},r.prototype.format=function(e){throw new Error(["Warning: .format() is deprecated in Minilog v2! Use .pipe() instead. For example:","var Minilog = require('minilog');","Minilog"," .pipe(Minilog.backends.console.formatClean)"," .pipe(Minilog.backends.console);"].join("\n"))},r.mixin=function(e){var t,n=r.prototype;for(t in n)n.hasOwnProperty(t)&&(e.prototype[t]=n[t])},e.exports=r},function(e,t,n){const r=n(12);r.enable(),e.exports=r("vm")},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){e.exports={isWorker:!0,centralDispatchService:self}},function(e,t){var n={black:"#000",red:"#c23621",green:"#25bc26",yellow:"#bbbb00",blue:"#492ee1",magenta:"#d338d3",cyan:"#33bbc8",gray:"#808080",purple:"#708"};e.exports=function(e,t){return t?"color: #fff; background: "+n[e]+";":"color: "+n[e]+";"}},function(e,t){e.exports={ANGLE:"angle",BOOLEAN:"Boolean",COLOR:"color",NUMBER:"number",STRING:"string",MATRIX:"matrix",NOTE:"note",IMAGE:"image",COSTUME:"costume",SOUND:"sound"}},function(e,t){e.exports={BOOLEAN:"Boolean",BUTTON:"button",LABEL:"label",COMMAND:"command",CONDITIONAL:"conditional",EVENT:"event",HAT:"hat",LOOP:"loop",REPORTER:"reporter",XML:"xml"}},function(e,t){var n="long",r="short",i="numeric";e.exports={number:{decimal:{style:"decimal"},integer:{style:"decimal",maximumFractionDigits:0},currency:{style:"currency",currency:"USD"},percent:{style:"percent"},default:{style:"decimal"}},date:{short:{month:i,day:i,year:"2-digit"},medium:{month:r,day:i,year:i},long:{month:n,day:i,year:i},full:{month:n,day:i,year:i,weekday:n},default:{month:r,day:i,year:i}},time:{short:{hour:i,minute:i},medium:{hour:i,minute:i,second:i},long:{hour:i,minute:i,second:i,timeZoneName:r},full:{hour:i,minute:i,second:i,timeZoneName:r},default:{hour:i,minute:i,second:i}},duration:{default:{hours:{minimumIntegerDigits:1,maximumFractionDigits:0},minutes:{minimumIntegerDigits:2,maximumFractionDigits:0},seconds:{minimumIntegerDigits:2,maximumFractionDigits:3}}},parseNumberPattern:function(e){if(e){var t={},n=e.match(/\b[A-Z]{3}\b/i),r=e.replace(/[^¤]/g,"").length;if(!r&&n&&(r=1),r?(t.style="currency",t.currencyDisplay=1===r?"symbol":2===r?"code":"name",t.currency=n?n[0].toUpperCase():"USD"):e.indexOf("%")>=0&&(t.style="percent"),!/[@#0]/.test(e))return t.style?t:void 0;if(t.useGrouping=e.indexOf(",")>=0,/E\+?[@#0]+/i.test(e)||e.indexOf("@")>=0){var i=e.replace(/E\+?[@#0]+|[^@#0]/gi,"");t.minimumSignificantDigits=Math.min(Math.max(i.replace(/[^@0]/g,"").length,1),21),t.maximumSignificantDigits=Math.min(Math.max(i.length,1),21)}else{for(var a=e.replace(/[^#0.]/g,"").split("."),o=a[0],s=o.length-1;"0"===o[s];)--s;t.minimumIntegerDigits=Math.min(Math.max(o.length-1-s,1),21);var c=a[1]||"";for(s=0;"0"===c[s];)++s;for(t.minimumFractionDigits=Math.min(Math.max(s,0),20);"#"===c[s];)++s;t.maximumFractionDigits=Math.min(Math.max(s,0),20)}return t}},parseDatePattern:function(e){if(e){for(var t={},a=0;a{throw new Error("Not implemented")};i.getScript=(e,t)=>{const n=document.createElement("script");n.src=e,t&&(n.onload=()=>t()),document.body.appendChild(n)};let a=0;i.ajax=async(e,n)=>{let o={};e&&n?(o=n,o.url=e):e&&(o=e);const s=(e=>{const t=new URLSearchParams;if(e)for(const n of Object.keys(e))t.set(n,e[n]);return t})(o.data),c=()=>{const e=s.toString();let t=o.url;return e&&(t+="?".concat(e)),t.startsWith("http://")&&(t=t.replace("http://","https://")),t},l=e=>{o.success&&o.success(e)};try{if("jsonp"===o.dataType){const e="_jsonp_callback".concat(a++);t[e]=n=>{delete t[e],l(n)};const n=o.jsonp||"callback";return s.set(n,e),void i.getScript(c())}if("script"===o.dataType)return void i.getScript(c(),l);const e=await fetch(c(),{headers:o.headers});l(await e.json())}catch(e){u=e,r.error(u),o.error&&o.error(u)}var u},e.exports=i}).call(this,n(2))},function(e,t,n){var r=n(13),i=r.enable,a=r.disable,o="undefined"!=typeof navigator&&/chrome/i.test(navigator.userAgent),s=n(16);if(r.defaultBackend=o?s.minilog:s,"undefined"!=typeof window){try{r.enable(JSON.parse(window.localStorage.minilogSettings))}catch(e){}if(window.location&&window.location.search){var c=RegExp("[?&]minilog=([^&]*)").exec(window.location.search);c&&r.enable(decodeURIComponent(c[1]))}}r.enable=function(){i.call(r,!0);try{window.localStorage.minilogSettings=JSON.stringify(!0)}catch(e){}return this},r.disable=function(){a.call(r);try{delete window.localStorage.minilogSettings}catch(e){}return this},(e.exports=r).backends={array:n(19),browser:r.defaultBackend,localStorage:n(20),jQuery:n(21)}},function(e,t,n){var r=n(0),i=n(15),a=new r,o=Array.prototype.slice;(t=e.exports=function(e){var n=function(){return a.write(e,void 0,o.call(arguments)),n};return n.debug=function(){return a.write(e,"debug",o.call(arguments)),n},n.info=function(){return a.write(e,"info",o.call(arguments)),n},n.warn=function(){return a.write(e,"warn",o.call(arguments)),n},n.error=function(){return a.write(e,"error",o.call(arguments)),n},n.log=n.debug,n.suggest=t.suggest,n.format=a.format,n}).defaultBackend=t.defaultFormatter=null,t.pipe=function(e){return a.pipe(e)},t.end=t.unpipe=t.disable=function(e){return a.unpipe(e)},t.Transform=r,t.Filter=i,t.suggest=new i,t.enable=function(){return t.defaultFormatter?a.pipe(t.suggest).pipe(t.defaultFormatter).pipe(t.defaultBackend):a.pipe(t.suggest).pipe(t.defaultBackend)}},function(e,t){function n(){this._events={}}n.prototype={on:function(e,t){this._events||(this._events={});var n=this._events;return(n[e]||(n[e]=[])).push(t),this},removeListener:function(e,t){var n,r=this._events[e]||[];for(n=r.length-1;n>=0&&r[n];n--)r[n]!==t&&r[n].cb!==t||r.splice(n,1)},removeAllListeners:function(e){e?this._events[e]&&(this._events[e]=[]):this._events={}},listeners:function(e){return this._events&&this._events[e]||[]},emit:function(e){this._events||(this._events={});var t,n=Array.prototype.slice.call(arguments,1),r=this._events[e]||[];for(t=r.length-1;t>=0&&r[t];t--)r[t].apply(this,n);return this},when:function(e,t){return this.once(e,t,!0)},once:function(e,t,n){if(!t)return this;function r(){n||this.removeListener(e,r),t.apply(this,arguments)&&n&&this.removeListener(e,r)}return r.cb=t,this.on(e,r),this}},n.mixin=function(e){var t,r=n.prototype;for(t in r)r.hasOwnProperty(t)&&(e.prototype[t]=r[t])},e.exports=n},function(e,t,n){var r=n(0),i={debug:1,info:2,warn:3,error:4};function a(){this.enabled=!0,this.defaultResult=!0,this.clear()}function o(e,t){return e.n.test?e.n.test(t):e.n==t}r.mixin(a),a.prototype.allow=function(e,t){return this._white.push({n:e,l:i[t]}),this},a.prototype.deny=function(e,t){return this._black.push({n:e,l:i[t]}),this},a.prototype.clear=function(){return this._white=[],this._black=[],this},a.prototype.test=function(e,t){var n,r=Math.max(this._white.length,this._black.length);for(n=0;n=this._white[n].l)return!0;if(this._black[n]&&o(this._black[n],e)&&i[t]<=this._black[n].l)return!1}return this.defaultResult},a.prototype.write=function(e,t,n){if(!this.enabled||this.test(e,t))return this.emit("item",e,t,n)},e.exports=a},function(e,t,n){var r=n(0),i=/\n+$/,a=new r;a.write=function(e,t,n){var r=n.length-1;if("undefined"!=typeof console&&console.log){if(console.log.apply)return console.log.apply(console,[e,t].concat(n));if(JSON&&JSON.stringify){n[r]&&"string"==typeof n[r]&&(n[r]=n[r].replace(i,""));try{for(r=0;rPromise.resolve(!0),fetch:function(e){function t(t,n){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((e,t)=>fetch(e,t)),canOpenWindow:()=>Promise.resolve(!1),openWindow:()=>Promise.reject(new Error("Scratch.openWindow not supported in sandboxed extensions")),canRedirect:()=>Promise.resolve(!1),redirect:()=>Promise.reject(new Error("Scratch.redirect not supported in sandboxed extensions")),canRecordAudio:()=>Promise.resolve(!1),canRecordVideo:()=>Promise.resolve(!1),canReadClipboard:()=>Promise.resolve(!1),canNotify:()=>Promise.resolve(!1),canGeolocate:()=>Promise.resolve(!1),canEmbed:()=>Promise.resolve(!1),translate:s});const c=new class{constructor(){this.nextExtensionId=0,this.initialRegistrations=[],this.firstRegistrationPromise=new Promise(e=>{this.firstRegistrationCallback=e}),i.waitForConnection.then(()=>{i.call("extensions","allocateWorker").then(async e=>{const[t,n]=e;this.workerId=t;try{await(e=>{if(!o)return new Promise((t,n)=>{const r=document.createElement("script");r.onload=()=>t(),r.onerror=()=>{n(new Error("Error in sandboxed script: ".concat(e,". Check the console for more information.")))},r.src=e,document.body.appendChild(r)});importScripts(e)})(n),await this.firstRegistrationPromise;const e=this.initialRegistrations;this.initialRegistrations=null,Promise.all(e).then(()=>i.call("extensions","onWorkerInit",t))}catch(e){a.error(e),i.call("extensions","onWorkerInit",t,"".concat(e))}})}),this.extensions=[]}register(e){const t=this.nextExtensionId++;this.extensions.push(e);const n="extension.".concat(this.workerId,".").concat(t),r=i.setService(n,e).then(()=>i.call("extensions","registerExtensionService",n));return this.initialRegistrations&&(this.firstRegistrationCallback(),this.initialRegistrations.push(r)),r}};e.Scratch.extensions={register:c.register.bind(c)},e.ScratchExtensions=r(e.Scratch)}).call(this,n(2))},function(e,t,n){const r={ArgumentType:n(5),BlockType:n(6),TargetType:n(24),Cast:n(25)};e.exports=r},function(e,t){e.exports={SPRITE:"sprite",STAGE:"stage"}},function(e,t,n){const r=n(26),i=e=>{if("string"!=typeof e)return!1;for(let t=0;tr?1:0}return n===1/0&&r===1/0||n===-1/0&&r===-1/0?0:n-r}static isInt(e){return"number"==typeof e?!!isNaN(e)||e===Math.floor(e):"boolean"==typeof e||"string"==typeof e&&e.indexOf(".")<0}static get LIST_INVALID(){return"INVALID"}static get LIST_ALL(){return"ALL"}static toListIndex(e,t,n){if("number"!=typeof e){if("all"===e)return n?a.LIST_ALL:a.LIST_INVALID;if("last"===e)return t>0?t:a.LIST_INVALID;if("random"===e||"any"===e)return t>0?1+Math.floor(Math.random()*t):a.LIST_INVALID}return(e=Math.floor(a.toNumber(e)))<1||e>t?a.LIST_INVALID:e}}e.exports=a},function(e,t){class n{static get RGB_BLACK(){return{r:0,g:0,b:0}}static get RGB_WHITE(){return{r:255,g:255,b:255}}static decimalToHex(e){e<0&&(e+=16777216);let t=Number(e).toString(16);return t="#".concat("000000".substr(0,6-t.length)).concat(t),t}static decimalToRgb(e){const t=e>>24&255;return{r:e>>16&255,g:e>>8&255,b:255&e,a:t>0?t:255}}static hexToRgb(e){e.startsWith("#")&&(e=e.substring(1));const t=parseInt(e,16);if(isNaN(t))return null;if(6===e.length)return{r:t>>16&255,g:t>>8&255,b:255&t};if(3===e.length){const e=t>>8&15,n=t>>4&15,r=15&t;return{r:e<<4|e,g:n<<4|n,b:r<<4|r}}return null}static rgbToHex(e){return n.decimalToHex(n.rgbToDecimal(e))}static rgbToDecimal(e){return(e.r<<16)+(e.g<<8)+e.b}static hexToDecimal(e){return n.rgbToDecimal(n.hexToRgb(e))}static hsvToRgb(e){let t=e.h%360;t<0&&(t+=360);const n=Math.max(0,Math.min(e.s,1)),r=Math.max(0,Math.min(e.v,1)),i=Math.floor(t/60),a=t/60-i,o=r*(1-n),s=r*(1-n*a),c=r*(1-n*(1-a));let l,u,d;switch(i){default:case 0:l=r,u=c,d=o;break;case 1:l=s,u=r,d=o;break;case 2:l=o,u=r,d=c;break;case 3:l=o,u=s,d=r;break;case 4:l=c,u=o,d=r;break;case 5:l=r,u=o,d=s}return{r:Math.floor(255*l),g:Math.floor(255*u),b:Math.floor(255*d)}}static rgbToHsv(e){const t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(Math.min(t,n),r),a=Math.max(Math.max(t,n),r);let o=0,s=0;if(i!==a){o=60*((t===i?3:n===i?5:1)-(t===i?n-r:n===i?r-t:t-n)/(a-i))%360,s=(a-i)/a}return{h:o,s:s,v:a}}static mixRgb(e,t,n){if(n<=0)return e;if(n>=1)return t;const r=1-n;return{r:r*e.r+n*t.r,g:r*e.g+n*t.g,b:r*e.b+n*t.b}}}e.exports=n},function(e,t,n){const r=n(5),i=n(6),{argumentIndexToId:a,generateExtensionId:o}=n(28),s=e=>{if(""===e||" "===e||"w"===e)return{type:i.COMMAND,async:"w"===e};if("r"===e||"R"===e)return{type:i.REPORTER,async:"R"===e};if("b"===e)return{type:i.BOOLEAN,async:!1};if("h"===e)return{type:i.HAT,async:!1};throw new Error("Unknown ScratchX block type: ".concat(e))},c=(e,t)=>{const n={},i="string"==typeof(a=t)||"number"==typeof a||"boolean"==typeof a;var a;if(i&&(n.defaultValue=t),"s"===e)n.type=r.STRING,i||(n.defaultValue="");else if("n"===e)n.type=r.NUMBER,i||(n.defaultValue=0);else{if("m"!==e[0])throw new Error("Unknown ScratchX argument type: ".concat(e));{n.type=r.STRING;const t=e.split(/\.|:/)[1];n.menu=t}}return n},l=(e,t,n)=>r=>{const i=[];for(let e=0;e{e(...i,t)}):e(...i)},u=new Map;e.exports=e=>({register:(t,n,r)=>{const i=((e,t,n)=>{const r={id:o(e),name:t.displayName||e,blocks:[],color1:"#4a4a5e",color2:"#31323f",color3:"#191a21"},i={getInfo:()=>r,_getStatus:n._getStatus};t.url&&(r.docsURI=t.url);for(const e of t.blocks){if(1===e.length){r.blocks.push("---");continue}const t=e[0],o=e[1],u=e[2],d=e.slice(3);let f="";const h=[],p=o.split(/%([\w.:]+)/g);for(let e=0;e{const t=u.get(e);return t?t._getStatus():{status:0,msg:"does not exist"}}})},function(e,t){e.exports={generateExtensionId:e=>{const t=e.replace(/[^a-z0-9]/gi,"").toLowerCase();return"sbx".concat(t)},argumentIndexToId:e=>e.toString()}},function(e,t,n){const r=n(30),i=n(1),{centralDispatchService:a}=n(3);e.exports=new class extends r{constructor(){super(),this._connectionPromise=new Promise(e=>{this._onConnect=e}),this.services={},this._onMessage=this._onMessage.bind(this,a),"undefined"!=typeof self&&(self.onmessage=this._onMessage)}get waitForConnection(){return this._connectionPromise}setService(e,t){return this.services.hasOwnProperty(e)&&i.warn("Worker dispatch replacing existing service provider for ".concat(e)),this.services[e]=t,this.waitForConnection.then(()=>this._remoteCall(a,"dispatch","setService",e))}_getServiceProvider(e){const t=this.services[e];return{provider:t||a,isRemote:!t}}_onDispatchMessage(e,t){let n;switch(t.method){case"handshake":n=this._onConnect();break;case"terminate":setTimeout(()=>self.close(),0),n=Promise.resolve();break;default:i.error("Worker dispatch received message for unknown method: ".concat(t.method))}return n}}},function(e,t,n){const r=n(1);e.exports=class{constructor(){this.callbacks=[],this.nextResponseId=0}call(e,t,...n){return this.transferCall(e,t,null,...n)}transferCall(e,t,n,...r){try{const{provider:i,isRemote:a}=this._getServiceProvider(e);if(i){if(a)return this._remoteTransferCall(i,e,t,n,...r);const o=i[t].apply(i,r);return Promise.resolve(o)}return Promise.reject(new Error("Service not found: ".concat(e)))}catch(e){return Promise.reject(e)}}_isRemoteService(e){return this._getServiceProvider(e).isRemote}_remoteCall(e,t,n,...r){return this._remoteTransferCall(e,t,n,null,...r)}_remoteTransferCall(e,t,n,r,...i){return new Promise((a,o)=>{const s=this._storeCallbacks(a,o);i.length>0&&"function"==typeof i[i.length-1].func&&(i.pop(),i.pop()),r?e.postMessage({service:t,method:n,responseId:s,args:i},r):e.postMessage({service:t,method:n,responseId:s,args:i})})}_storeCallbacks(e,t){const n=this.nextResponseId++;return this.callbacks[n]=[e,t],n}_deliverResponse(e,t){try{const[n,r]=this.callbacks[e];delete this.callbacks[e],t.error?r(t.error):n(t.result)}catch(e){r.error("Dispatch callback failed: ".concat(e))}}_onMessage(e,t){const n=t.data;let i;n.args=n.args||[],n.service?i="dispatch"===n.service?this._onDispatchMessage(e,n):this.call(n.service,n.method,...n.args):void 0===n.responseId?r.error("Dispatch caught malformed message from a worker: ".concat(JSON.stringify(t))):this._deliverResponse(n.responseId,n),i&&(void 0===n.responseId?r.error("Dispatch message missing required response ID: ".concat(JSON.stringify(t))):i.then(t=>e.postMessage({responseId:n.responseId,result:t}),t=>e.postMessage({responseId:n.responseId,error:"".concat(t)})))}_getServiceProvider(e){throw new Error("Could not get provider for ".concat(e,": _getServiceProvider not implemented"))}_onDispatchMessage(e,t){throw new Error("Unimplemented dispatch message handler cannot handle ".concat(t.method," method"))}}},function(e,t,n){const r=n(32);e.exports=e=>{const t=r.namespace(),n=(e,n)=>{if(e&&"object"==typeof e);else{if("string"!=typeof e)throw new Error("unsupported data type in translate()");e={default:e}}return t(e,n)},i=e=>"_".concat(e);let a={};return n.setup=n=>{n&&(a=n),t.setup({locale:e?e.getLocale():"undefined"!=typeof navigator?navigator.language:"en",missingTranslation:"ignore",generateId:i,translations:a})},n.setup({}),e&&e.on("LOCALE_CHANGED",()=>{n.setup(null)}),n}},function(e,t,n){"use strict";var r=n(33),i=n(34),a=n(9),o=n(8),s=n(7);function c(e,t){return Object.keys(t).forEach((function(n){e[n]=t[n]})),e}e.exports=function e(){var t=c({},s),n="en",l={},u=function(e){return e},d=null,f="warning",h={};function p(e,t,a){var o="string"==typeof e?e:e.default,s=v(o,"object"==typeof e&&e.id||u(o),a||n);return(s.format||(s.format=i(r(s.message),a||n,h)))(t)}p.rich=function(e,t,a){var o="string"==typeof e?e:e.default,s=v(o,"object"==typeof e&&e.id||u(o),a||n);return(s.toParts||(s.toParts=i.toParts(r(s.message,{tagsType:m}),a||n,h)))(t)};var m="<>";function g(e,t){var n=e[2];return function(e,t){var r="object"==typeof n?function(e,t){return Object.keys(e).reduce((function(n,r){return n[r]=e[r](t),n}),{})}(n,t):n;return"function"==typeof e?e(r):e}}function v(e,t,n){var r=o(n,l)||"en",i=l[r]||(l[r]={}),a=i[t];if("string"==typeof a&&(a=i[t]={message:a}),!a){var s='Translation for "'+t+'" in "'+r+'" is missing';if("warning"===f)"undefined"!=typeof console&&console.warn(s);else if("ignore"!==f)throw new Error(s);var c="function"==typeof d?d(e,t,r)||e:d||e;a=i[t]={message:c}}return a}function y(e,t,r,i,s){"object"==typeof r&&"object"!=typeof i&&(s=i,i=r,r=0);var c=o(s||n,a),l=c&&a[c][e]||b;return i["="+ +t]||i[l(t-r)]||i.other}function b(){return"other"}return h[m]=g,p.setup=function(e){return(e=e||{}).locale&&(n=e.locale),"translations"in e&&(l=e.translations||{}),e.generateId&&(u=e.generateId),"missingReplacement"in e&&(d=e.missingReplacement),e.missingTranslation&&(f=e.missingTranslation),e.formats&&(e.formats.number&&c(t.number,e.formats.number),e.formats.date&&c(t.date,e.formats.date),e.formats.time&&c(t.time,e.formats.time)),e.types&&((h=e.types)[m]=g),{locale:n,translations:l,generateId:u,missingReplacement:d,missingTranslation:f,formats:t,types:h}},p.number=function(e,r,i){var a=r&&t.number[r]||t.parseNumberPattern(r)||t.number.default;return new Intl.NumberFormat(i||n,a).format(e)},p.date=function(e,r,i){var a=r&&t.date[r]||t.parseDatePattern(r)||t.date.default;return new Intl.DateTimeFormat(i||n,a).format(e)},p.time=function(e,r,i){var a=r&&t.time[r]||t.parseDatePattern(r)||t.time.default;return new Intl.DateTimeFormat(i||n,a).format(e)},p.select=function(e,t){return t[e]||t.other},p.custom=function(e,t,n,r){return e[1]in h?h[e[1]](e,t)(n,r):n},p.plural=y.bind(null,"cardinal"),p.selectordinal=y.bind(null,"ordinal"),p.namespace=e,p}()},function(e,t,n){"use strict";var r=["number","date","time","ordinal","duration","spellout"],i=["plural","select","selectordinal"];function a(e,t){var n=e.pattern,r=n.length,i=[],a=e.index,s=o(e,t);for(s&&i.push(s),s&&e.tokens&&e.tokens.push(["text",n.slice(a,e.index)]);e.index=9&&e<=13||32===e||133===e||160===e||6158===e||e>=8192&&e<=8205||8232===e||8233===e||8239===e||8287===e||8288===e||12288===e||65279===e}function c(e){for(var t=e.pattern,n=t.length,r=e.index;e.index"===e.pattern.slice(e.index,e.index+"/>".length))return e.tokens&&e.tokens.push(["syntax","/>"]),e.index+="/>".length,[n,t];if(">"!==e.pattern[e.index])throw p(e,">");e.tokens&&e.tokens.push(["syntax",">"]);++e.index;var r=a(e,t),i=e.index;if("");e.tokens&&e.tokens.push(["syntax","","");if(c(e),">"!==e.pattern[e.index])throw p(e,">");e.tokens&&e.tokens.push(["syntax",">"]);return++e.index,[n,t,{children:r}]}(e);if(n)return n;if("{"!==t[e.index])throw p(e,"{");e.tokens&&e.tokens.push(["syntax","{"]),++e.index,c(e);var i=u(e);if(!i)throw p(e,"placeholder id");e.tokens&&e.tokens.push(["id",i]),c(e);var o=t[e.index];if("}"===o)return e.tokens&&e.tokens.push(["syntax","}"]),++e.index,[i];if(","!==o)throw p(e,", or }");e.tokens&&e.tokens.push(["syntax",","]),++e.index,c(e);var s,l=u(e);if(!l)throw p(e,"placeholder type");if(e.tokens&&e.tokens.push(["type",l]),c(e),"}"===(o=t[e.index])){if(e.tokens&&e.tokens.push(["syntax","}"]),"plural"===l||"selectordinal"===l||"select"===l)throw p(e,l+" sub-messages");return++e.index,[i,l]}if(","!==o)throw p(e,", or }");if(e.tokens&&e.tokens.push(["syntax",","]),++e.index,c(e),"plural"===l||"selectordinal"===l){var h=function(e){var t=e.pattern,n=t.length,r=0;if("offset:"===t.slice(e.index,e.index+"offset:".length)){e.tokens&&e.tokens.push(["offset","offset"],["syntax",":"]),e.index+="offset:".length,c(e);for(var i=e.index;e.index=48&&a<=57);)++e.index;if(i===e.index)throw p(e,"offset number");e.tokens&&e.tokens.push(["number",t.slice(i,e.index)]),r=+t.slice(i,e.index)}var a;return r}(e);c(e),s=[i,l,h,f(e,l)]}else if("select"===l)s=[i,l,f(e,l)];else if(r.indexOf(l)>=0)s=[i,l,d(e)];else{var m=e.index,g=d(e);c(e),"{"===t[e.index]&&(e.index=m,g=f(e,l)),s=[i,l,g]}if(c(e),"}"!==t[e.index])throw p(e,"}");return e.tokens&&e.tokens.push(["syntax","}"]),++e.index,s}function u(e,t){for(var n=e.pattern,r=n.length,i="";e.index"===a||"/"===a))break;i+=a,++e.index}return i}function d(e){var t=e.index,n=o(e,"{style}");if(!n)throw p(e,"placeholder style name");return e.tokens&&e.tokens.push(["style",e.pattern.slice(t,e.index)]),n}function f(e,t){for(var n=e.pattern,r=n.length,a={};e.index=0)throw p(e,null,null,'"other" sub-message must be specified in '+t);return a}function h(e,t){if("{"!==e.pattern[e.index])throw p(e,"{ to start sub-message");e.tokens&&e.tokens.push(["syntax","{"]),++e.index;var n=a(e,t);if("}"!==e.pattern[e.index])throw p(e,"} to end sub-message");return e.tokens&&e.tokens.push(["syntax","}"]),++e.index,n}function p(e,t,n,r){var i=e.pattern,a=i.slice(0,e.index).split(/\r?\n/),o=e.index,s=a.length,c=a.slice(-1)[0].length;return n=n||(e.index>=i.length?"end of message pattern":u(e)||i[e.index]),r||(r=function(e,t){return e?"Expected "+e+" but found "+t:"Unexpected "+t+" found"}(t,n)),new m(r+=" in "+i.replace(/\r?\n/g,"\n"),t,n,o,s,c)}function m(e,t,n,r,i,a){Error.call(this,e),this.name="SyntaxError",this.message=e,this.expected=t,this.found=n,this.offset=r,this.line=i,this.column=a}t=e.exports=function(e,t){return a({pattern:String(e),index:0,tagsType:t&&t.tagsType||null,tokens:t&&t.tokens||null},"")},m.prototype=Object.create(Error.prototype),t.SyntaxError=m},function(e,t,n){"use strict";var r=n(7),i=n(8),a=n(9);function o(e,t,n,r,i){var a=e.map((function(e){return function(e,t,n,r,i){if("string"==typeof e){var a=e;return function(){return a}}var c,l=e[0],u=e[1];if(t&&"#"===e[0]){l=t[0];var d=t[2],h=(r.number||f.number)([l,"number"],n);return function(e){return h(s(l,e)-d,e)}}"plural"===u||"selectordinal"===u?(c={},Object.keys(e[3]).forEach((function(t){c[t]=o(e[3][t],e,n,r,i)})),e=[e[0],e[1],e[2],c]):e[2]&&"object"==typeof e[2]&&(c={},Object.keys(e[2]).forEach((function(t){c[t]=o(e[2][t],e,n,r,i)})),e=[e[0],e[1],c]);var p=u&&(r[u]||f[u]);if(p){var m=p(e,n);return function(e){return m(s(l,e),e)}}return i?function(e){return String(s(l,e))}:function(e){return s(l,e)}}(e,t,n,r,i)}));return i?1===a.length?a[0]:function(e){for(var t="",n=0;n0)n=new Intl.PluralRules(t,{type:r});else{var c=i(t,a),l=c&&a[c][r]||d;n={select:l}}return function(e,t){return(s["="+ +e]||s[n.select(e-o)]||s.other)(t)}}function d(){return"other"}(t=e.exports=function(e,t,n){return o(e,null,t||"en",n||{},!0)}).toParts=function(e,t,n){return o(e,null,t||"en",n||{},!1)};var f={number:c,ordinal:c,spellout:c,duration:function(e,t){var n=e[2],i=r.duration[n]||r.duration.default,a=new Intl.NumberFormat(t,i.seconds).format,o=new Intl.NumberFormat(t,i.minutes).format,s=new Intl.NumberFormat(t,i.hours).format,c=/^fi$|^fi-|^da/.test(String(t))?".":":";return function(e,t){if(e=+e,!isFinite(e))return a(e);var n=~~(e/60/60),r=~~(e/60%60),i=(n?s(Math.abs(n))+c:"")+o(Math.abs(r))+c+a(Math.abs(e%60));return e<0?s(-1).replace(s(1),i):i}},date:l,time:l,plural:u,selectordinal:u,select:function(e,t){var n=e[2];return function(e,t){return(n[e]||n.other)(t)}}};t.types=f}]); \ No newline at end of file diff --git a/js/extension-worker/extension-worker.9e7cca4544605f8cc10b.js b/js/extension-worker/extension-worker.9e7cca4544605f8cc10b.js new file mode 100644 index 0000000..62b4801 --- /dev/null +++ b/js/extension-worker/extension-worker.9e7cca4544605f8cc10b.js @@ -0,0 +1 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=9)}([function(e,t,n){function r(){}n(21).mixin(r),r.prototype.write=function(e,t,n){this.emit("item",e,t,n)},r.prototype.end=function(){this.emit("end"),this.removeAllListeners()},r.prototype.pipe=function(e){var t=this;function n(){e.write.apply(e,Array.prototype.slice.call(arguments))}function r(){!e._isStdio&&e.end()}return t.emit("unpipe",e),e.emit("pipe",t),t.on("item",n),t.on("end",r),t.when("unpipe",(function(i){var a=i===e||void 0===i;return a&&(t.removeListener("item",n),t.removeListener("end",r),e.emit("unpipe")),a})),e},r.prototype.unpipe=function(e){return this.emit("unpipe",e),this},r.prototype.format=function(e){throw new Error(["Warning: .format() is deprecated in Minilog v2! Use .pipe() instead. For example:","var Minilog = require('minilog');","Minilog"," .pipe(Minilog.backends.console.formatClean)"," .pipe(Minilog.backends.console);"].join("\n"))},r.mixin=function(e){var t,n=r.prototype;for(t in n)n.hasOwnProperty(t)&&(e.prototype[t]=n[t])},e.exports=r},function(e,t,n){const r=n(19);r.enable(),e.exports=r("vm")},function(e,t){e.exports={ANGLE:"angle",BOOLEAN:"Boolean",COLOR:"color",NUMBER:"number",STRING:"string",MATRIX:"matrix",NOTE:"note",IMAGE:"image",COSTUME:"costume",SOUND:"sound"}},function(e,t){e.exports={BOOLEAN:"Boolean",BUTTON:"button",LABEL:"label",COMMAND:"command",CONDITIONAL:"conditional",EVENT:"event",HAT:"hat",LOOP:"loop",REPORTER:"reporter",XML:"xml"}},function(e,t){var n={black:"#000",red:"#c23621",green:"#25bc26",yellow:"#bbbb00",blue:"#492ee1",magenta:"#d338d3",cyan:"#33bbc8",gray:"#808080",purple:"#708"};e.exports=function(e,t){return t?"color: #fff; background: "+n[e]+";":"color: "+n[e]+";"}},function(e,t){e.exports={isWorker:!0,centralDispatchService:self}},function(e,t){var n="long",r="short",i="numeric";e.exports={number:{decimal:{style:"decimal"},integer:{style:"decimal",maximumFractionDigits:0},currency:{style:"currency",currency:"USD"},percent:{style:"percent"},default:{style:"decimal"}},date:{short:{month:i,day:i,year:"2-digit"},medium:{month:r,day:i,year:i},long:{month:n,day:i,year:i},full:{month:n,day:i,year:i,weekday:n},default:{month:r,day:i,year:i}},time:{short:{hour:i,minute:i},medium:{hour:i,minute:i,second:i},long:{hour:i,minute:i,second:i,timeZoneName:r},full:{hour:i,minute:i,second:i,timeZoneName:r},default:{hour:i,minute:i,second:i}},duration:{default:{hours:{minimumIntegerDigits:1,maximumFractionDigits:0},minutes:{minimumIntegerDigits:2,maximumFractionDigits:0},seconds:{minimumIntegerDigits:2,maximumFractionDigits:3}}},parseNumberPattern:function(e){if(e){var t={},n=e.match(/\b[A-Z]{3}\b/i),r=e.replace(/[^¤]/g,"").length;if(!r&&n&&(r=1),r?(t.style="currency",t.currencyDisplay=1===r?"symbol":2===r?"code":"name",t.currency=n?n[0].toUpperCase():"USD"):e.indexOf("%")>=0&&(t.style="percent"),!/[@#0]/.test(e))return t.style?t:void 0;if(t.useGrouping=e.indexOf(",")>=0,/E\+?[@#0]+/i.test(e)||e.indexOf("@")>=0){var i=e.replace(/E\+?[@#0]+|[^@#0]/gi,"");t.minimumSignificantDigits=Math.min(Math.max(i.replace(/[^@0]/g,"").length,1),21),t.maximumSignificantDigits=Math.min(Math.max(i.length,1),21)}else{for(var a=e.replace(/[^#0.]/g,"").split("."),o=a[0],s=o.length-1;"0"===o[s];)--s;t.minimumIntegerDigits=Math.min(Math.max(o.length-1-s,1),21);var c=a[1]||"";for(s=0;"0"===c[s];)++s;for(t.minimumFractionDigits=Math.min(Math.max(s,0),20);"#"===c[s];)++s;t.maximumFractionDigits=Math.min(Math.max(s,0),20)}return t}},parseDatePattern:function(e){if(e){for(var t={},a=0;aPromise.resolve(!0),fetch:function(e){function t(t,n){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((e,t)=>fetch(e,t)),canOpenWindow:()=>Promise.resolve(!1),openWindow:()=>Promise.reject(new Error("Scratch.openWindow not supported in sandboxed extensions")),canRedirect:()=>Promise.resolve(!1),redirect:()=>Promise.reject(new Error("Scratch.redirect not supported in sandboxed extensions")),canRecordAudio:()=>Promise.resolve(!1),canRecordVideo:()=>Promise.resolve(!1),canReadClipboard:()=>Promise.resolve(!1),canNotify:()=>Promise.resolve(!1),canGeolocate:()=>Promise.resolve(!1),canEmbed:()=>Promise.resolve(!1),translate:s});const c=new class{constructor(){this.nextExtensionId=0,this.initialRegistrations=[],this.firstRegistrationPromise=new Promise(e=>{this.firstRegistrationCallback=e}),i.waitForConnection.then(()=>{i.call("extensions","allocateWorker").then(async e=>{const[t,n]=e;this.workerId=t;try{await(e=>{if(!o)return new Promise((t,n)=>{const r=document.createElement("script");r.onload=()=>t(),r.onerror=()=>{n(new Error("Error in sandboxed script: ".concat(e,". Check the console for more information.")))},r.src=e,document.body.appendChild(r)});importScripts(e)})(n),await this.firstRegistrationPromise;const e=this.initialRegistrations;this.initialRegistrations=null,Promise.all(e).then(()=>i.call("extensions","onWorkerInit",t))}catch(e){a.error(e),i.call("extensions","onWorkerInit",t,"".concat(e))}})}),this.extensions=[]}register(e){const t=this.nextExtensionId++;this.extensions.push(e);const n="extension.".concat(this.workerId,".").concat(t),r=i.setService(n,e).then(()=>i.call("extensions","registerExtensionService",n));return this.initialRegistrations&&(this.firstRegistrationCallback(),this.initialRegistrations.push(r)),r}};e.Scratch.extensions={register:c.register.bind(c)},e.ScratchExtensions=r(e.Scratch)}).call(this,n(10))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){const r={ArgumentType:n(2),BlockType:n(3),TargetType:n(12),Cast:n(13)};e.exports=r},function(e,t){e.exports={SPRITE:"sprite",STAGE:"stage"}},function(e,t,n){const r=n(14),i=e=>{if("string"!=typeof e)return!1;for(let t=0;tr?1:0}return n===1/0&&r===1/0||n===-1/0&&r===-1/0?0:n-r}static isInt(e){return"number"==typeof e?!!isNaN(e)||e===Math.floor(e):"boolean"==typeof e||"string"==typeof e&&e.indexOf(".")<0}static get LIST_INVALID(){return"INVALID"}static get LIST_ALL(){return"ALL"}static toListIndex(e,t,n){if("number"!=typeof e){if("all"===e)return n?a.LIST_ALL:a.LIST_INVALID;if("last"===e)return t>0?t:a.LIST_INVALID;if("random"===e||"any"===e)return t>0?1+Math.floor(Math.random()*t):a.LIST_INVALID}return(e=Math.floor(a.toNumber(e)))<1||e>t?a.LIST_INVALID:e}}e.exports=a},function(e,t){class n{static get RGB_BLACK(){return{r:0,g:0,b:0}}static get RGB_WHITE(){return{r:255,g:255,b:255}}static decimalToHex(e){e<0&&(e+=16777216);let t=Number(e).toString(16);return t="#".concat("000000".substr(0,6-t.length)).concat(t),t}static decimalToRgb(e){const t=e>>24&255;return{r:e>>16&255,g:e>>8&255,b:255&e,a:t>0?t:255}}static hexToRgb(e){e.startsWith("#")&&(e=e.substring(1));const t=parseInt(e,16);if(isNaN(t))return null;if(6===e.length)return{r:t>>16&255,g:t>>8&255,b:255&t};if(3===e.length){const e=t>>8&15,n=t>>4&15,r=15&t;return{r:e<<4|e,g:n<<4|n,b:r<<4|r}}return null}static rgbToHex(e){return n.decimalToHex(n.rgbToDecimal(e))}static rgbToDecimal(e){return(e.r<<16)+(e.g<<8)+e.b}static hexToDecimal(e){return n.rgbToDecimal(n.hexToRgb(e))}static hsvToRgb(e){let t=e.h%360;t<0&&(t+=360);const n=Math.max(0,Math.min(e.s,1)),r=Math.max(0,Math.min(e.v,1)),i=Math.floor(t/60),a=t/60-i,o=r*(1-n),s=r*(1-n*a),c=r*(1-n*(1-a));let l,u,d;switch(i){default:case 0:l=r,u=c,d=o;break;case 1:l=s,u=r,d=o;break;case 2:l=o,u=r,d=c;break;case 3:l=o,u=s,d=r;break;case 4:l=c,u=o,d=r;break;case 5:l=r,u=o,d=s}return{r:Math.floor(255*l),g:Math.floor(255*u),b:Math.floor(255*d)}}static rgbToHsv(e){const t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(Math.min(t,n),r),a=Math.max(Math.max(t,n),r);let o=0,s=0;if(i!==a){o=60*((t===i?3:n===i?5:1)-(t===i?n-r:n===i?r-t:t-n)/(a-i))%360,s=(a-i)/a}return{h:o,s:s,v:a}}static mixRgb(e,t,n){if(n<=0)return e;if(n>=1)return t;const r=1-n;return{r:r*e.r+n*t.r,g:r*e.g+n*t.g,b:r*e.b+n*t.b}}}e.exports=n},function(e,t,n){const r=n(2),i=n(3),{argumentIndexToId:a,generateExtensionId:o}=n(16),s=e=>{if(""===e||" "===e||"w"===e)return{type:i.COMMAND,async:"w"===e};if("r"===e||"R"===e)return{type:i.REPORTER,async:"R"===e};if("b"===e)return{type:i.BOOLEAN,async:!1};if("h"===e)return{type:i.HAT,async:!1};throw new Error("Unknown ScratchX block type: ".concat(e))},c=(e,t)=>{const n={},i="string"==typeof(a=t)||"number"==typeof a||"boolean"==typeof a;var a;if(i&&(n.defaultValue=t),"s"===e)n.type=r.STRING,i||(n.defaultValue="");else if("n"===e)n.type=r.NUMBER,i||(n.defaultValue=0);else{if("m"!==e[0])throw new Error("Unknown ScratchX argument type: ".concat(e));{n.type=r.STRING;const t=e.split(/\.|:/)[1];n.menu=t}}return n},l=(e,t,n)=>r=>{const i=[];for(let e=0;e{e(...i,t)}):e(...i)},u=new Map;e.exports=e=>({register:(t,n,r)=>{const i=((e,t,n)=>{const r={id:o(e),name:t.displayName||e,blocks:[],color1:"#4a4a5e",color2:"#31323f",color3:"#191a21"},i={getInfo:()=>r,_getStatus:n._getStatus};t.url&&(r.docsURI=t.url);for(const e of t.blocks){if(1===e.length){r.blocks.push("---");continue}const t=e[0],o=e[1],u=e[2],d=e.slice(3);let f="";const h=[],p=o.split(/%([\w.:]+)/g);for(let e=0;e{const t=u.get(e);return t?t._getStatus():{status:0,msg:"does not exist"}}})},function(e,t){e.exports={generateExtensionId:e=>{const t=e.replace(/[^a-z0-9]/gi,"").toLowerCase();return"sbx".concat(t)},argumentIndexToId:e=>e.toString()}},function(e,t,n){const r=n(18),i=n(1),{centralDispatchService:a}=n(5);e.exports=new class extends r{constructor(){super(),this._connectionPromise=new Promise(e=>{this._onConnect=e}),this.services={},this._onMessage=this._onMessage.bind(this,a),"undefined"!=typeof self&&(self.onmessage=this._onMessage)}get waitForConnection(){return this._connectionPromise}setService(e,t){return this.services.hasOwnProperty(e)&&i.warn("Worker dispatch replacing existing service provider for ".concat(e)),this.services[e]=t,this.waitForConnection.then(()=>this._remoteCall(a,"dispatch","setService",e))}_getServiceProvider(e){const t=this.services[e];return{provider:t||a,isRemote:!t}}_onDispatchMessage(e,t){let n;switch(t.method){case"handshake":n=this._onConnect();break;case"terminate":setTimeout(()=>self.close(),0),n=Promise.resolve();break;default:i.error("Worker dispatch received message for unknown method: ".concat(t.method))}return n}}},function(e,t,n){const r=n(1);e.exports=class{constructor(){this.callbacks=[],this.nextResponseId=0}call(e,t,...n){return this.transferCall(e,t,null,...n)}transferCall(e,t,n,...r){try{const{provider:i,isRemote:a}=this._getServiceProvider(e);if(i){if(a)return this._remoteTransferCall(i,e,t,n,...r);const o=i[t].apply(i,r);return Promise.resolve(o)}return Promise.reject(new Error("Service not found: ".concat(e)))}catch(e){return Promise.reject(e)}}_isRemoteService(e){return this._getServiceProvider(e).isRemote}_remoteCall(e,t,n,...r){return this._remoteTransferCall(e,t,n,null,...r)}_remoteTransferCall(e,t,n,r,...i){return new Promise((a,o)=>{const s=this._storeCallbacks(a,o);i.length>0&&"function"==typeof i[i.length-1].func&&(i.pop(),i.pop()),r?e.postMessage({service:t,method:n,responseId:s,args:i},r):e.postMessage({service:t,method:n,responseId:s,args:i})})}_storeCallbacks(e,t){const n=this.nextResponseId++;return this.callbacks[n]=[e,t],n}_deliverResponse(e,t){try{const[n,r]=this.callbacks[e];delete this.callbacks[e],t.error?r(t.error):n(t.result)}catch(e){r.error("Dispatch callback failed: ".concat(e))}}_onMessage(e,t){const n=t.data;let i;n.args=n.args||[],n.service?i="dispatch"===n.service?this._onDispatchMessage(e,n):this.call(n.service,n.method,...n.args):void 0===n.responseId?r.error("Dispatch caught malformed message from a worker: ".concat(JSON.stringify(t))):this._deliverResponse(n.responseId,n),i&&(void 0===n.responseId?r.error("Dispatch message missing required response ID: ".concat(JSON.stringify(t))):i.then(t=>e.postMessage({responseId:n.responseId,result:t}),t=>e.postMessage({responseId:n.responseId,error:"".concat(t)})))}_getServiceProvider(e){throw new Error("Could not get provider for ".concat(e,": _getServiceProvider not implemented"))}_onDispatchMessage(e,t){throw new Error("Unimplemented dispatch message handler cannot handle ".concat(t.method," method"))}}},function(e,t,n){var r=n(20),i=r.enable,a=r.disable,o="undefined"!=typeof navigator&&/chrome/i.test(navigator.userAgent),s=n(23);if(r.defaultBackend=o?s.minilog:s,"undefined"!=typeof window){try{r.enable(JSON.parse(window.localStorage.minilogSettings))}catch(e){}if(window.location&&window.location.search){var c=RegExp("[?&]minilog=([^&]*)").exec(window.location.search);c&&r.enable(decodeURIComponent(c[1]))}}r.enable=function(){i.call(r,!0);try{window.localStorage.minilogSettings=JSON.stringify(!0)}catch(e){}return this},r.disable=function(){a.call(r);try{delete window.localStorage.minilogSettings}catch(e){}return this},(e.exports=r).backends={array:n(26),browser:r.defaultBackend,localStorage:n(27),jQuery:n(28)}},function(e,t,n){var r=n(0),i=n(22),a=new r,o=Array.prototype.slice;(t=e.exports=function(e){var n=function(){return a.write(e,void 0,o.call(arguments)),n};return n.debug=function(){return a.write(e,"debug",o.call(arguments)),n},n.info=function(){return a.write(e,"info",o.call(arguments)),n},n.warn=function(){return a.write(e,"warn",o.call(arguments)),n},n.error=function(){return a.write(e,"error",o.call(arguments)),n},n.log=n.debug,n.suggest=t.suggest,n.format=a.format,n}).defaultBackend=t.defaultFormatter=null,t.pipe=function(e){return a.pipe(e)},t.end=t.unpipe=t.disable=function(e){return a.unpipe(e)},t.Transform=r,t.Filter=i,t.suggest=new i,t.enable=function(){return t.defaultFormatter?a.pipe(t.suggest).pipe(t.defaultFormatter).pipe(t.defaultBackend):a.pipe(t.suggest).pipe(t.defaultBackend)}},function(e,t){function n(){this._events={}}n.prototype={on:function(e,t){this._events||(this._events={});var n=this._events;return(n[e]||(n[e]=[])).push(t),this},removeListener:function(e,t){var n,r=this._events[e]||[];for(n=r.length-1;n>=0&&r[n];n--)r[n]!==t&&r[n].cb!==t||r.splice(n,1)},removeAllListeners:function(e){e?this._events[e]&&(this._events[e]=[]):this._events={}},listeners:function(e){return this._events&&this._events[e]||[]},emit:function(e){this._events||(this._events={});var t,n=Array.prototype.slice.call(arguments,1),r=this._events[e]||[];for(t=r.length-1;t>=0&&r[t];t--)r[t].apply(this,n);return this},when:function(e,t){return this.once(e,t,!0)},once:function(e,t,n){if(!t)return this;function r(){n||this.removeListener(e,r),t.apply(this,arguments)&&n&&this.removeListener(e,r)}return r.cb=t,this.on(e,r),this}},n.mixin=function(e){var t,r=n.prototype;for(t in r)r.hasOwnProperty(t)&&(e.prototype[t]=r[t])},e.exports=n},function(e,t,n){var r=n(0),i={debug:1,info:2,warn:3,error:4};function a(){this.enabled=!0,this.defaultResult=!0,this.clear()}function o(e,t){return e.n.test?e.n.test(t):e.n==t}r.mixin(a),a.prototype.allow=function(e,t){return this._white.push({n:e,l:i[t]}),this},a.prototype.deny=function(e,t){return this._black.push({n:e,l:i[t]}),this},a.prototype.clear=function(){return this._white=[],this._black=[],this},a.prototype.test=function(e,t){var n,r=Math.max(this._white.length,this._black.length);for(n=0;n=this._white[n].l)return!0;if(this._black[n]&&o(this._black[n],e)&&i[t]<=this._black[n].l)return!1}return this.defaultResult},a.prototype.write=function(e,t,n){if(!this.enabled||this.test(e,t))return this.emit("item",e,t,n)},e.exports=a},function(e,t,n){var r=n(0),i=/\n+$/,a=new r;a.write=function(e,t,n){var r=n.length-1;if("undefined"!=typeof console&&console.log){if(console.log.apply)return console.log.apply(console,[e,t].concat(n));if(JSON&&JSON.stringify){n[r]&&"string"==typeof n[r]&&(n[r]=n[r].replace(i,""));try{for(r=0;r{const t=r.namespace(),n=(e,n)=>{if(e&&"object"==typeof e);else{if("string"!=typeof e)throw new Error("unsupported data type in translate()");e={default:e}}return t(e,n)},i=e=>"_".concat(e);let a={};return n.setup=n=>{n&&(a=n),t.setup({locale:e?e.getLocale():"undefined"!=typeof navigator?navigator.language:"en",missingTranslation:"ignore",generateId:i,translations:a})},n.setup({}),e&&e.on("LOCALE_CHANGED",()=>{n.setup(null)}),n}},function(e,t,n){"use strict";var r=n(31),i=n(32),a=n(8),o=n(7),s=n(6);function c(e,t){return Object.keys(t).forEach((function(n){e[n]=t[n]})),e}e.exports=function e(){var t=c({},s),n="en",l={},u=function(e){return e},d=null,f="warning",h={};function p(e,t,a){var o="string"==typeof e?e:e.default,s=v(o,"object"==typeof e&&e.id||u(o),a||n);return(s.format||(s.format=i(r(s.message),a||n,h)))(t)}p.rich=function(e,t,a){var o="string"==typeof e?e:e.default,s=v(o,"object"==typeof e&&e.id||u(o),a||n);return(s.toParts||(s.toParts=i.toParts(r(s.message,{tagsType:m}),a||n,h)))(t)};var m="<>";function g(e,t){var n=e[2];return function(e,t){var r="object"==typeof n?function(e,t){return Object.keys(e).reduce((function(n,r){return n[r]=e[r](t),n}),{})}(n,t):n;return"function"==typeof e?e(r):e}}function v(e,t,n){var r=o(n,l)||"en",i=l[r]||(l[r]={}),a=i[t];if("string"==typeof a&&(a=i[t]={message:a}),!a){var s='Translation for "'+t+'" in "'+r+'" is missing';if("warning"===f)"undefined"!=typeof console&&console.warn(s);else if("ignore"!==f)throw new Error(s);var c="function"==typeof d?d(e,t,r)||e:d||e;a=i[t]={message:c}}return a}function y(e,t,r,i,s){"object"==typeof r&&"object"!=typeof i&&(s=i,i=r,r=0);var c=o(s||n,a),l=c&&a[c][e]||b;return i["="+ +t]||i[l(t-r)]||i.other}function b(){return"other"}return h[m]=g,p.setup=function(e){return(e=e||{}).locale&&(n=e.locale),"translations"in e&&(l=e.translations||{}),e.generateId&&(u=e.generateId),"missingReplacement"in e&&(d=e.missingReplacement),e.missingTranslation&&(f=e.missingTranslation),e.formats&&(e.formats.number&&c(t.number,e.formats.number),e.formats.date&&c(t.date,e.formats.date),e.formats.time&&c(t.time,e.formats.time)),e.types&&((h=e.types)[m]=g),{locale:n,translations:l,generateId:u,missingReplacement:d,missingTranslation:f,formats:t,types:h}},p.number=function(e,r,i){var a=r&&t.number[r]||t.parseNumberPattern(r)||t.number.default;return new Intl.NumberFormat(i||n,a).format(e)},p.date=function(e,r,i){var a=r&&t.date[r]||t.parseDatePattern(r)||t.date.default;return new Intl.DateTimeFormat(i||n,a).format(e)},p.time=function(e,r,i){var a=r&&t.time[r]||t.parseDatePattern(r)||t.time.default;return new Intl.DateTimeFormat(i||n,a).format(e)},p.select=function(e,t){return t[e]||t.other},p.custom=function(e,t,n,r){return e[1]in h?h[e[1]](e,t)(n,r):n},p.plural=y.bind(null,"cardinal"),p.selectordinal=y.bind(null,"ordinal"),p.namespace=e,p}()},function(e,t,n){"use strict";var r=["number","date","time","ordinal","duration","spellout"],i=["plural","select","selectordinal"];function a(e,t){var n=e.pattern,r=n.length,i=[],a=e.index,s=o(e,t);for(s&&i.push(s),s&&e.tokens&&e.tokens.push(["text",n.slice(a,e.index)]);e.index=9&&e<=13||32===e||133===e||160===e||6158===e||e>=8192&&e<=8205||8232===e||8233===e||8239===e||8287===e||8288===e||12288===e||65279===e}function c(e){for(var t=e.pattern,n=t.length,r=e.index;e.index"===e.pattern.slice(e.index,e.index+"/>".length))return e.tokens&&e.tokens.push(["syntax","/>"]),e.index+="/>".length,[n,t];if(">"!==e.pattern[e.index])throw p(e,">");e.tokens&&e.tokens.push(["syntax",">"]);++e.index;var r=a(e,t),i=e.index;if("");e.tokens&&e.tokens.push(["syntax","","");if(c(e),">"!==e.pattern[e.index])throw p(e,">");e.tokens&&e.tokens.push(["syntax",">"]);return++e.index,[n,t,{children:r}]}(e);if(n)return n;if("{"!==t[e.index])throw p(e,"{");e.tokens&&e.tokens.push(["syntax","{"]),++e.index,c(e);var i=u(e);if(!i)throw p(e,"placeholder id");e.tokens&&e.tokens.push(["id",i]),c(e);var o=t[e.index];if("}"===o)return e.tokens&&e.tokens.push(["syntax","}"]),++e.index,[i];if(","!==o)throw p(e,", or }");e.tokens&&e.tokens.push(["syntax",","]),++e.index,c(e);var s,l=u(e);if(!l)throw p(e,"placeholder type");if(e.tokens&&e.tokens.push(["type",l]),c(e),"}"===(o=t[e.index])){if(e.tokens&&e.tokens.push(["syntax","}"]),"plural"===l||"selectordinal"===l||"select"===l)throw p(e,l+" sub-messages");return++e.index,[i,l]}if(","!==o)throw p(e,", or }");if(e.tokens&&e.tokens.push(["syntax",","]),++e.index,c(e),"plural"===l||"selectordinal"===l){var h=function(e){var t=e.pattern,n=t.length,r=0;if("offset:"===t.slice(e.index,e.index+"offset:".length)){e.tokens&&e.tokens.push(["offset","offset"],["syntax",":"]),e.index+="offset:".length,c(e);for(var i=e.index;e.index=48&&a<=57);)++e.index;if(i===e.index)throw p(e,"offset number");e.tokens&&e.tokens.push(["number",t.slice(i,e.index)]),r=+t.slice(i,e.index)}var a;return r}(e);c(e),s=[i,l,h,f(e,l)]}else if("select"===l)s=[i,l,f(e,l)];else if(r.indexOf(l)>=0)s=[i,l,d(e)];else{var m=e.index,g=d(e);c(e),"{"===t[e.index]&&(e.index=m,g=f(e,l)),s=[i,l,g]}if(c(e),"}"!==t[e.index])throw p(e,"}");return e.tokens&&e.tokens.push(["syntax","}"]),++e.index,s}function u(e,t){for(var n=e.pattern,r=n.length,i="";e.index"===a||"/"===a))break;i+=a,++e.index}return i}function d(e){var t=e.index,n=o(e,"{style}");if(!n)throw p(e,"placeholder style name");return e.tokens&&e.tokens.push(["style",e.pattern.slice(t,e.index)]),n}function f(e,t){for(var n=e.pattern,r=n.length,a={};e.index=0)throw p(e,null,null,'"other" sub-message must be specified in '+t);return a}function h(e,t){if("{"!==e.pattern[e.index])throw p(e,"{ to start sub-message");e.tokens&&e.tokens.push(["syntax","{"]),++e.index;var n=a(e,t);if("}"!==e.pattern[e.index])throw p(e,"} to end sub-message");return e.tokens&&e.tokens.push(["syntax","}"]),++e.index,n}function p(e,t,n,r){var i=e.pattern,a=i.slice(0,e.index).split(/\r?\n/),o=e.index,s=a.length,c=a.slice(-1)[0].length;return n=n||(e.index>=i.length?"end of message pattern":u(e)||i[e.index]),r||(r=function(e,t){return e?"Expected "+e+" but found "+t:"Unexpected "+t+" found"}(t,n)),new m(r+=" in "+i.replace(/\r?\n/g,"\n"),t,n,o,s,c)}function m(e,t,n,r,i,a){Error.call(this,e),this.name="SyntaxError",this.message=e,this.expected=t,this.found=n,this.offset=r,this.line=i,this.column=a}t=e.exports=function(e,t){return a({pattern:String(e),index:0,tagsType:t&&t.tagsType||null,tokens:t&&t.tokens||null},"")},m.prototype=Object.create(Error.prototype),t.SyntaxError=m},function(e,t,n){"use strict";var r=n(6),i=n(7),a=n(8);function o(e,t,n,r,i){var a=e.map((function(e){return function(e,t,n,r,i){if("string"==typeof e){var a=e;return function(){return a}}var c,l=e[0],u=e[1];if(t&&"#"===e[0]){l=t[0];var d=t[2],h=(r.number||f.number)([l,"number"],n);return function(e){return h(s(l,e)-d,e)}}"plural"===u||"selectordinal"===u?(c={},Object.keys(e[3]).forEach((function(t){c[t]=o(e[3][t],e,n,r,i)})),e=[e[0],e[1],e[2],c]):e[2]&&"object"==typeof e[2]&&(c={},Object.keys(e[2]).forEach((function(t){c[t]=o(e[2][t],e,n,r,i)})),e=[e[0],e[1],c]);var p=u&&(r[u]||f[u]);if(p){var m=p(e,n);return function(e){return m(s(l,e),e)}}return i?function(e){return String(s(l,e))}:function(e){return s(l,e)}}(e,t,n,r,i)}));return i?1===a.length?a[0]:function(e){for(var t="",n=0;n0)n=new Intl.PluralRules(t,{type:r});else{var c=i(t,a),l=c&&a[c][r]||d;n={select:l}}return function(e,t){return(s["="+ +e]||s[n.select(e-o)]||s.other)(t)}}function d(){return"other"}(t=e.exports=function(e,t,n){return o(e,null,t||"en",n||{},!0)}).toParts=function(e,t,n){return o(e,null,t||"en",n||{},!1)};var f={number:c,ordinal:c,spellout:c,duration:function(e,t){var n=e[2],i=r.duration[n]||r.duration.default,a=new Intl.NumberFormat(t,i.seconds).format,o=new Intl.NumberFormat(t,i.minutes).format,s=new Intl.NumberFormat(t,i.hours).format,c=/^fi$|^fi-|^da/.test(String(t))?".":":";return function(e,t){if(e=+e,!isFinite(e))return a(e);var n=~~(e/60/60),r=~~(e/60%60),i=(n?s(Math.abs(n))+c:"")+o(Math.abs(r))+c+a(Math.abs(e%60));return e<0?s(-1).replace(s(1),i):i}},date:l,time:l,plural:u,selectordinal:u,select:function(e,t){var n=e[2];return function(e,t){return(n[e]||n.other)(t)}}};t.types=f}]); \ No newline at end of file diff --git a/js/fullscreen.afe20171a325eb7bff8f.js b/js/fullscreen.afe20171a325eb7bff8f.js new file mode 100644 index 0000000..8f569a4 --- /dev/null +++ b/js/fullscreen.afe20171a325eb7bff8f.js @@ -0,0 +1 @@ +var GUI=function(e){function t(t){for(var o,i,s=t[0],c=t[1],d=t[2],u=0,p=[];u=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}const j=function(e){class t extends c.a.Component{constructor(e){super(e),this.handleClickPackager=this.handleClickPackager.bind(this),this.handleMessage=this.handleMessage.bind(this)}componentDidMount(){window.addEventListener("message",this.handleMessage)}componentWillUnmount(){window.removeEventListener("message",this.handleMessage)}handleClickPackager(){this.props.canOpenPackager&&window.open("".concat("https://packager.turbowarp.org","/?import_from=").concat(location.origin))}handleMessage(e){if("https://packager.turbowarp.org"!==e.origin)return;if(!this.props.canOpenPackager)return;"ready-for-import"===e.data.p4.type&&(e.source.postMessage({p4:{type:"start-import"}},e.origin),this.props.vm.saveProjectSb3("arraybuffer").then(t=>{const n="".concat(this.props.reduxProjectTitle,".sb3");e.source.postMessage({p4:{type:"finish-import",data:t,name:n}},e.origin,[t])}).catch(t=>{w.default.error(t),e.source.postMessage({p4:{type:"cancel-import"}},e.origin)}))}render(){const t=this.props,{canOpenPackager:n}=t,o=k(t,y);return c.a.createElement(e,_({onClickPackager:this.handleClickPackager},o))}}t.propTypes={canOpenPackager:i.a.bool,reduxProjectTitle:i.a.string,vm:i.a.shape({saveProjectSb3:i.a.func})};return Object(d.b)(e=>({canOpenPackager:Object(p.r)(e.scratchGui.projectState.loadingState),reduxProjectTitle:e.scratchGui.projectTitle,vm:e.scratchGui.vm}),()=>({}))(t)};var x=n(53);const E=history.replaceState;history.replaceState=function(...e){try{return E.call(this,...e)}catch(e){w.default.error(e)}};const C=history.pushState;history.pushState=function(...e){try{return C.call(this,...e)}catch(e){w.default.error(e)}};var O=n(175),P=n(176),S=n(5),T=n.n(S),I=n(70),F=n.n(I),N=n(123),A=n.n(N),H=n(98);const M=Object(u.g)({tooltip:{id:"tw.input.tooltip",defaultMessage:"Copy and paste a Scratch project link here!"}});class L extends c.a.Component{constructor(e){super(e),T()(this,["handleKeyDown","handleChange","handleBlur","handleFocus","inputRef","tooltipRef"]),this.state={projectId:this.props.projectId}}componentDidUpdate(e){this.props.projectId!==e.projectId&&(this.props.projectId===p.e?(this.input.focus(),this.input.selectionStart=this.input.value.length):this.input.blur(),this.setState({projectId:this.props.projectId}))}extractProjectId(e){const t=e.match(/\d+/);return t?t[0]:null}readProjectId(e){return this.extractProjectId(e.target.value)||p.e}handleKeyDown(e){"Enter"===e.key&&this.state.projectId&&this.input.blur()}handleChange(e){this.setState({projectId:this.readProjectId(e)||p.e})}handleBlur(){this.state.projectId&&this.state.projectId!==this.props.projectId&&this.props.setProjectId(this.state.projectId),F.a.hide(this.tooltip)}handleFocus(e){this.extractProjectId(e.target.value)&&e.target.select(),F.a.show(this.tooltip)}inputRef(e){this.input=e}tooltipRef(e){this.tooltip=e}render(){const e=this.state.projectId===p.e?"":this.state.projectId||"";return c.a.createElement("div",{ref:this.tooltipRef,"data-tip":this.props.intl.formatMessage(M.tooltip)},c.a.createElement(F.a,{className:A.a.tooltip,effect:"solid"}),c.a.createElement("input",{ref:this.inputRef,spellCheck:"false",type:"text",value:"".concat("https://scratch.mit.edu/projects/").concat(e),className:A.a.input,onKeyDown:this.handleKeyDown,onChange:this.handleChange,onBlur:this.handleBlur,onFocus:this.handleFocus}))}}L.propTypes={intl:u.i,projectId:i.a.string,setProjectId:i.a.func};var D=Object(u.h)(Object(d.b)(e=>({projectId:e.scratchGui.projectState.projectId}),e=>({setProjectId:t=>Object(H.a)(e,t)}))(L)),U=n(26),R=n.n(U),B=function(e){this.studioId=e,this.offset=0,this.ended=!1,this.loadingPage=!1,this.unusedPlaceholders=[],this.root=document.createElement("div"),this.root.className=R.a.studioviewRoot,this.projectList=document.createElement("div"),this.projectList.className=R.a.studioviewList,this.root.appendChild(this.projectList),"IntersectionObserver"in window?(this.intersectionObserver=new IntersectionObserver(this.handleIntersection.bind(this),{root:this.projectList}),this.loadNextPageObserver=new IntersectionObserver(this.handleLoadNextPageIntersection.bind(this),{root:this.projectList})):(this.intersectionObserver=null,this.loadNextPageObserver=null),this.messages={AUTHOR_ATTRIBUTION:"",PROJECT_HOVER_TEXT:"",LOAD_ERROR:""}};B.prototype.addProject=function(e){var t;this.unusedPlaceholders.length?t=this.unusedPlaceholders.shift():(t=this.createPlaceholder(),this.projectList.appendChild(t)),this.placeholderToProject(t,e.id,e.title,e.author)},B.prototype.createLazyImage=function(e){var t=document.createElement("img");return this.intersectionObserver?(this.intersectionObserver.observe(t),t.dataset.src=e):t.src=e,t},B.prototype.createPlaceholder=function(){var e=document.createElement("a");e.className=r()(R.a.studioviewProject,R.a.studioviewPlaceholder);var t=document.createElement("div");t.className=R.a.studioviewThumbnail;var n=document.createElement("div");n.className=R.a.studioviewTitle;var o=document.createElement("div");return o.className=R.a.studioviewAuthor,e.thumbnailEl=t,e.titleEl=n,e.authorEl=o,e.appendChild(t),e.appendChild(n),e.appendChild(o),e},B.prototype.placeholderToProject=function(e,t,n,o){e.className=r()(R.a.studioviewProject,R.a.studioviewLoaded),e.dataset.id=t,e.dataset.title=n,e.dataset.author=o,e.title=this.messages.PROJECT_HOVER_TEXT.replace("$author",o).replace("$title",n),e.href=B.PROJECT_PAGE.replace("$id",t);var a=B.THUMBNAIL_SRC.replace("$id",t),i=this.createLazyImage(a);return e.thumbnailEl.appendChild(i),e.titleEl.innerText=n,e.authorEl.innerText=this.messages.AUTHOR_ATTRIBUTION.replace("$author",o),e.addEventListener("click",this.handleClick.bind(this),!0),e.addEventListener("keydown",this.handleKeyDown.bind(this),!0),e},B.prototype.addErrorElement=function(){var e=document.createElement("div");e.innerText=this.messages.LOAD_ERROR,e.className=R.a.studioviewError,this.projectList.appendChild(e)},B.prototype.handleLoadNextPageIntersection=function(e){for(var t=0;t({projectId:e.scratchGui.projectState.projectId}),e=>({setProjectId:t=>Object(H.a)(e,t)}))($),Q=n(65),Z=n.n(Q),X=n(102),Y=n.n(X);const ee=e=>{e=Y()(e,/@([\w-]+)/,(e,t)=>c.a.createElement("a",{href:"https://scratch.mit.edu/users/".concat(e,"/"),rel:"noreferrer",key:e+t},"@".concat(e)));return e=Y()(e,/(https?:\/\/[\w\d_\-.]{1,256}(?:\/(?:\S*[\w:/#[\]@$&'()*+=])?)?(?![^?!,:;\w\s]\S))/g,(e,t)=>c.a.createElement("a",{href:e,rel:"noreferrer",key:e+t},e)),e=Y()(e,/#([\w-]+)/g,(e,t)=>c.a.createElement("a",{href:"https://scratch.mit.edu/search/projects?q=".concat(e),key:e+t},"#".concat(e)))},te=({instructions:e,credits:t,projectId:n})=>"unshared"!==e&&"unshared"!==t&&c.a.createElement("div",{className:Z.a.description},c.a.createElement("div",{className:Z.a.projectLink},c.a.createElement("a",{href:"https://scratch.mit.edu/projects/".concat(n,"/"),target:"_blank",rel:"noreferrer"},c.a.createElement(u.b,{defaultMessage:"View project on Scratch",id:"tw.viewOnScratch"}))),e?c.a.createElement("div",null,c.a.createElement("h2",{className:Z.a.header},c.a.createElement(u.b,{defaultMessage:"Instructions",id:"tw.home.instructions"})),ee(e)):null,e&&t?c.a.createElement("div",{className:Z.a.divider}):null,t&&c.a.createElement("div",null,c.a.createElement("h2",{className:Z.a.header},c.a.createElement(u.b,{defaultMessage:"Notes and Credits",id:"tw.home.credit"})),ee(t)));te.propTypes={instructions:i.a.string,credits:i.a.string,projectId:i.a.string};var ne=te,oe=n(173),re=n(25),ae=n(161),ie=n.n(ae),se=n(49),ce=n.n(se);class de extends c.a.Component{constructor(e){super(e),T()(this,["handleClick"])}handleClick(){this.props.onClick(this.props.cloudHost)}render(){return c.a.createElement("button",{className:r()(ce.a.server,{[ce.a.selected]:this.props.selected}),onClick:this.handleClick,title:this.props.cloudHost},this.props.name)}}de.propTypes={cloudHost:i.a.string,name:i.a.string,selected:i.a.bool,onClick:i.a.func};var le=de,ue=n(83);const pe=[{name:"US East",cloudHost:"wss://clouddata.turbowarp.org"},{name:"EU",cloudHost:"wss://clouddata-eu.turbowarp.org",provider:{name:"9gr",href:"https://scratch.mit.edu/users/9gr/"}}],he=e=>{const t=pe.find(t=>t.cloudHost===e.cloudHost);return c.a.createElement("div",{className:ce.a.badge},c.a.createElement("div",{className:ce.a.title},c.a.createElement("img",{className:ce.a.cloudIcon,src:ie.a,alt:"",width:32,height:32}),c.a.createElement(u.b,{defaultMessage:"This project uses cloud variables.",id:"tw.usesCloudVariables"})),c.a.createElement(u.b,{defaultMessage:"{APP_NAME}'s cloud variables are not connected to Scratch's. Anyone can {changeTheirUsername} to anything, so beware of impersonation.",id:"tw.usesCloudVariables2",values:{APP_NAME:ue.a,changeTheirUsername:c.a.createElement("a",{onClick:e.onOpenChangeUsername},c.a.createElement(u.b,{defaultMessage:"change their username",id:"tw.usesCloudVariables2.change"}))}}),t?c.a.createElement("div",{className:ce.a.servers},c.a.createElement(u.b,{defaultMessage:"Pick a server near you:",id:"tw.cloudServers"}),pe.map(t=>c.a.createElement(le,{key:t.ws,name:t.name,cloudHost:t.cloudHost,selected:e.cloudHost===t.cloudHost,onClick:e.onSetCloudHost}))):c.a.createElement(u.b,{defaultMessage:"Using a custom cloud variable server: {server}",id:"tw.customCloudServer",values:{server:e.cloudHost}}),t&&t.provider&&c.a.createElement(u.b,{defaultMessage:"Server provided by {name}.",id:"tw.cloudProvider",values:{name:c.a.createElement("a",{href:t.provider.href,target:"_blank",rel:"noreferrer"},t.provider.name)}}),c.a.createElement("a",{target:"_blank",rel:"noreferrer",href:"https://docs.turbowarp.org/cloud-variables"},c.a.createElement(u.b,{defaultMessage:"Learn more about cloud variables.",id:"tw.moreCloud"})))};he.propTypes={cloudHost:i.a.string,onSetCloudHost:i.a.func,onOpenChangeUsername:i.a.func};var fe=he,be=n(15);class me extends c.a.Component{constructor(e){super(e),T()(this,["handleChangeCloudHost"])}handleChangeCloudHost(e){this.props.onSetCloudHost(e)}render(){return c.a.createElement(fe,{cloudHost:this.props.cloudHost,onSetCloudHost:this.handleChangeCloudHost,onOpenChangeUsername:this.props.onOpenChangeUsername})}}me.propTypes={cloudHost:i.a.string,onSetCloudHost:i.a.func,onOpenChangeUsername:i.a.func};var ve=Object(d.b)(e=>({cloudHost:e.scratchGui.tw.cloudHost}),e=>({onSetCloudHost:t=>e(Object(re.f)(t)),onOpenChangeUsername:()=>e(Object(be.E)())}))(me),ge=n(106),we=n(52);n(162);var ye=n(174),_e=n(19),ke=n.n(_e);const je=["intl","hasCloudVariables","description","isFullScreen","isLoading","isPlayerOnly","isRtl","onClickTheme","projectId"];function xe(){return(xe=Object.assign||function(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}if(window.parent!==window)throw alert("This page contains an invalid TurboWarp embed. Please read https://docs.turbowarp.org/embedding for instructions to create a working embed."),new Error("Invalid embed");const Ce=()=>{window.open("".concat("").concat("addons.html"))},Oe=Object(u.g)({defaultTitle:{id:"tw.guiDefaultTitle",defaultMessage:"Run Scratch projects faster"}}),Pe=Object(l.d)(g.a,j)(P.a);we.a.reloadChannel&&we.a.reloadChannel.addEventListener("message",()=>{location.reload()}),we.a.changeChannel&&we.a.changeChannel.addEventListener("message",e=>{x.a.setStoreWithVersionCheck(e.data)}),Object(ye.a)();const Se=()=>c.a.createElement("footer",{className:ke.a.footer},c.a.createElement("div",{className:ke.a.footerContent},c.a.createElement("div",{className:ke.a.footerText},c.a.createElement(u.b,{defaultMessage:"TurboWarp is not affiliated with Scratch, the Scratch Team, or the Scratch Foundation.",id:"tw.footer.disclaimer"})),c.a.createElement("div",{className:ke.a.footerColumns},c.a.createElement("div",{className:ke.a.footerSection},c.a.createElement("a",{href:"credits.html"},c.a.createElement(u.b,{defaultMessage:"Credits",id:"tw.footer.credits"})),c.a.createElement("a",{href:"https://github.com/sponsors/GarboMuffin"},c.a.createElement(u.b,{defaultMessage:"Donate",id:"tw.footer.donate"}))),c.a.createElement("div",{className:ke.a.footerSection},c.a.createElement("a",{href:"https://desktop.turbowarp.org/"},"TurboWarp Desktop"),c.a.createElement("a",{href:"https://packager.turbowarp.org/"},"TurboWarp Packager"),c.a.createElement("a",{href:"https://docs.turbowarp.org/embedding"},c.a.createElement(u.b,{defaultMessage:"Embedding",id:"tw.footer.embed"})),c.a.createElement("a",{href:"https://docs.turbowarp.org/url-parameters"},c.a.createElement(u.b,{defaultMessage:"URL Parameters",id:"tw.footer.parameters"})),c.a.createElement("a",{href:"https://docs.turbowarp.org/"},c.a.createElement(u.b,{defaultMessage:"Documentation",id:"tw.footer.documentation"}))),c.a.createElement("div",{className:ke.a.footerSection},c.a.createElement("a",{href:"https://scratch.mit.edu/users/GarboMuffin/#comments"},c.a.createElement(u.b,{defaultMessage:"Feedback & Bugs",id:"tw.feedback"})),c.a.createElement("a",{href:"https://github.com/TurboWarp/"},c.a.createElement(u.b,{defaultMessage:"Source Code",id:"tw.code"})),c.a.createElement("a",{href:"privacy.html"},c.a.createElement(u.b,{defaultMessage:"Privacy Policy",id:"tw.privacy"}))))));class Te extends c.a.Component{constructor(e){super(e),this.handleUpdateProjectTitle=this.handleUpdateProjectTitle.bind(this)}componentDidUpdate(e){e.isLoading&&this.props.isLoading}handleUpdateProjectTitle(e,t){document.title=t||!e?"TurboWarp - ".concat(this.props.intl.formatMessage(Oe.defaultTitle)):"".concat(e," - TurboWarp")}render(){const e=this.props,{intl:t,hasCloudVariables:n,description:o,isFullScreen:a,isLoading:i,isPlayerOnly:s,isRtl:d,onClickTheme:l,projectId:p}=e,h=Ee(e,je),f=s&&!a,b=!s;return c.a.createElement("div",{className:r()(ke.a.container,{[ke.a.playerOnly]:f,[ke.a.editor]:b})},f?c.a.createElement("div",{className:ke.a.menu},c.a.createElement(Pe,{canChangeLanguage:!0,canManageFiles:!0,enableSeeInside:!0,onClickAddonSettings:Ce,onClickTheme:l})):null,c.a.createElement("div",{className:ke.a.center,style:s?{width:"".concat(Math.max(480,h.customStageSize.width)+2,"px")}:null},null,c.a.createElement(O.a,xe({onClickAddonSettings:Ce,onClickTheme:l,onUpdateProjectTitle:this.handleUpdateProjectTitle,backpackVisible:!0,backpackHost:"_local_"},h)),f?c.a.createElement(c.a.Fragment,null,Object(ge.a)()?null:c.a.createElement(oe.a,{isRtl:d}),c.a.createElement("div",{className:ke.a.section},c.a.createElement(D,null)),("unshared"===o.instructions||"unshared"===o.credits)&&c.a.createElement("div",{className:r()(ke.a.infobox,ke.a.unsharedUpdate)},c.a.createElement("p",null,c.a.createElement(u.b,{defaultMessage:"Unshared projects are no longer visible.",id:"tw.unshared2.1"})),c.a.createElement("p",null,c.a.createElement(u.b,{defaultMessage:"For more information, visit: {link}",id:"tw.unshared.2",values:{link:c.a.createElement("a",{href:"https://docs.turbowarp.org/unshared-projects",target:"_blank",rel:"noopener noreferrer"},"https://docs.turbowarp.org/unshared-projects")}})),c.a.createElement("p",null,c.a.createElement(u.b,{defaultMessage:"If the project was shared recently, this message may appear incorrectly for a few minutes.",id:"tw.unshared.cache"})),c.a.createElement("p",null,c.a.createElement(u.b,{defaultMessage:"If this project is actually shared, please report a bug.",id:"tw.unshared.bug"}))),n&&"0"!==p&&c.a.createElement("div",{className:ke.a.section},c.a.createElement(ve,null)),o.instructions||o.credits?c.a.createElement("div",{className:ke.a.section},c.a.createElement(ne,{instructions:o.instructions,credits:o.credits,projectId:p})):null,c.a.createElement("div",{className:ke.a.section},c.a.createElement("p",null,c.a.createElement(u.b,{defaultMessage:"TurboWarp is a Scratch mod that compiles projects to JavaScript to make them run really fast. Try it out by inputting a project ID or URL above or choosing a featured project below.",id:"tw.home.description"}))),c.a.createElement("div",{className:ke.a.section},c.a.createElement(q,{studio:"27205657"}))):null),f&&c.a.createElement(Se,null))}}Te.propTypes={intl:u.i,hasCloudVariables:i.a.bool,customStageSize:i.a.shape({width:i.a.number,height:i.a.number}),description:i.a.shape({credits:i.a.string,instructions:i.a.string}),isFullScreen:i.a.bool,isLoading:i.a.bool,isPlayerOnly:i.a.bool,isRtl:i.a.bool,onClickTheme:i.a.func,projectId:i.a.string};const Ie=Object(u.h)(Object(d.b)(e=>({hasCloudVariables:e.scratchGui.tw.hasCloudVariables,customStageSize:e.scratchGui.customStageSize,description:e.scratchGui.tw.description,isFullScreen:e.scratchGui.mode.isFullScreen,isLoading:Object(p.m)(e.scratchGui.projectState.loadingState),isPlayerOnly:e.scratchGui.mode.isPlayerOnly,isRtl:e.locales.isRtl,projectId:e.scratchGui.projectState.projectId}),()=>({}))(Te)),Fe=Object(l.d)(h.a,Object(f.a)("TW Interface"),b.a,m.a,v.a,j)(Ie);t.a=Fe},19:function(e,t,n){var o=n(279);"string"==typeof o&&(o=[[e.i,o,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(10)(o,r);o.locals&&(e.exports=o.locals)},255:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'/* #E5F0FF */ /* #E9F1FC */ /* #D9E3F2 */ /* 90% transparent version of motion-primary */ /* #FFFFFF */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 25% transparent version of ui-white */ /* 15% transparent version of black */ /* #575E75 */ /* 35% transparent version of motion-primary */ /* 15% transparent version of motion-primary */ /* opt-in theme overrides */ /* #FF661A */ /* #E64D00 */ /* #CF63CF */ /* #BD42BD */ /* #FFAB19 */ /* #FF8C1A */ /* #0FBD8C */ /* #0FBD8C */ /* #FF8C1A */ /* #FFB366 */ /* #FF8C1A */ /* 35% transparent version of extensions-primary */ /* opaque version of extensions-transparent, on white bg */ /* lighter than motion-primary */ /*\n Contains constants for the z-index values of elements that are part of the global stack context.\n In other words, z-index values that are "inside" a component are not added here.\n This prevents conflicts between identical z-index values in different components.\n*/ /* Toolbox z-index: 40; set in scratch-blocks */ /* tooltips should go over add buttons if they overlap */ /* monitors go over add buttons */ /* "ask" block text input goes above monitors */ /* menu-bar should go over monitors, alerts and tutorials */ /* tw: show below menu bar normally */ /* Block drag z-index: 1000; default 50 is overriden in blocks.css */ /* so it is draggable into other panes */ /* in most interfaces, the context menu is always on top */ .project-input_input_1E6Af {\n border: none;\n width: 100%;\n font-size: 23px;\n line-height: 32px;\n opacity: 0.5;\n background-color: transparent;\n color: inherit;\n} .project-input_input_1E6Af:focus {\n opacity: 1;\n} .project-input_input_1E6Af:disabled {\n opacity: 0.8;\n} .project-input_tooltip_3_EoA {\n opacity: 1 !important;\n background-color: hsla(10, 85%, 65%, 1) !important;\n border: 1px solid hsla(0, 0%, 0%, .1) !important;\n box-shadow: 0 0 .5rem hsla(0, 0%, 0%, .25) !important;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important;\n border: 1px solid hsla(0, 0%, 0%, .1) !important;\n z-index: 491 !important;\n} .project-input_tooltip_3_EoA:after {\n border-top-color: hsla(10, 85%, 65%, 1) !important;\n}\n',""]),t.locals={input:"project-input_input_1E6Af",tooltip:"project-input_tooltip_3_EoA"}},256:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,"/*\nImported from:\nhttps://github.com/forkphorus/forkphorus/tree/master/studioview\nWith changes to make it work properly in the scratch-gui environment.\n*/\n\n/* we wrap it in a
*/\n\n.studioview_wrapper_1SFBd {\n height: 100%;\n}\n\n/* fix some styles that can be messed up by scratch-gui */\n\n.studioview_studioview-root_1OP-i * {\n box-sizing: content-box !important;\n}\n\n.studioview_studioview-root_1OP-i {\n height: 100%;\n}\n\n.studioview_studioview-list_2hIxk {\n width: 100%;\n height: 100%;\n overflow-y: scroll;\n overflow-anchor: none;\n}\n\n.studioview_studioview-project_IDotv, .studioview_studioview-placeholder_KKHo9 {\n display: inline-block;\n width: 144px;\n padding: 3px;\n margin-bottom: 1px;\n margin-right: 1px;\n}\n\n.studioview_studioview-root_1OP-i .studioview_studioview-project_IDotv {\n color: inherit;\n position: relative;\n text-decoration: none;\n}\n\n.studioview_studioview-loaded_3UCil:hover::before, .studioview_studioview-loaded_3UCil:active::before {\n content: '';\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: currentColor;\n opacity: 0.1;\n}\n\n.studioview_studioview-root_1OP-i .studioview_studioview-loaded_3UCil:active::before {\n opacity: 0.2;\n}\n\n.studioview_studioview-root_1OP-i .studioview_studioview-title_2ROWB,\n.studioview_studioview-root_1OP-i .studioview_studioview-author_2P0Hj {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n color: inherit;\n text-decoration: none;\n}\n\n.studioview_studioview-title_2ROWB {\n font-size: 0.8em;\n font-weight: bold;\n}\n\n.studioview_studioview-author_2P0Hj {\n font-size: 0.75em;\n}\n\n.studioview_studioview-error_3XWai {\n width: 100%;\n}\n\n.studioview_studioview-thumbnail_1HYJO, .studioview_studioview-placeholder-thumbnail_TUdop {\n position: relative;\n width: 144px;\n height: 108px;\n}\n\n.studioview_studioview-thumbnail_1HYJO::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: currentColor;\n opacity: 0.1;\n}\n\n.studioview_studioview-thumbnail_1HYJO img {\n width: 100%;\n height: 100%;\n}\n\n.studioview_studioview-placeholder_KKHo9 .studioview_studioview-thumbnail_1HYJO,\n.studioview_studioview-placeholder_KKHo9 .studioview_studioview-title_2ROWB,\n.studioview_studioview-placeholder_KKHo9 .studioview_studioview-author_2P0Hj {\n background-color: currentColor;\n opacity: 0.1;\n}\n\n.studioview_studioview-title_2ROWB {\n height: 20px;\n margin-top: 2px;\n}\n\n.studioview_studioview-author_2P0Hj {\n height: 18px;\n}\n\n.studioview_studioview-placeholder_KKHo9 .studioview_studioview-title_2ROWB {\n border-radius: 2px 2px 2px 0;\n width: 100%;\n}\n\n.studioview_studioview-placeholder_KKHo9 .studioview_studioview-author_2P0Hj {\n border-radius: 0 0 2px 2px;\n width: 50%;\n}\n",""]),t.locals={wrapper:"studioview_wrapper_1SFBd","studioview-root":"studioview_studioview-root_1OP-i",studioviewRoot:"studioview_studioview-root_1OP-i","studioview-list":"studioview_studioview-list_2hIxk",studioviewList:"studioview_studioview-list_2hIxk","studioview-project":"studioview_studioview-project_IDotv",studioviewProject:"studioview_studioview-project_IDotv","studioview-placeholder":"studioview_studioview-placeholder_KKHo9",studioviewPlaceholder:"studioview_studioview-placeholder_KKHo9","studioview-loaded":"studioview_studioview-loaded_3UCil",studioviewLoaded:"studioview_studioview-loaded_3UCil","studioview-title":"studioview_studioview-title_2ROWB",studioviewTitle:"studioview_studioview-title_2ROWB","studioview-author":"studioview_studioview-author_2P0Hj",studioviewAuthor:"studioview_studioview-author_2P0Hj","studioview-error":"studioview_studioview-error_3XWai",studioviewError:"studioview_studioview-error_3XWai","studioview-thumbnail":"studioview_studioview-thumbnail_1HYJO",studioviewThumbnail:"studioview_studioview-thumbnail_1HYJO","studioview-placeholder-thumbnail":"studioview_studioview-placeholder-thumbnail_TUdop",studioviewPlaceholderThumbnail:"studioview_studioview-placeholder-thumbnail_TUdop"}},257:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".featured-projects_container_1--ew {\n margin-bottom: 8px;\n}\n\n.featured-projects_opener-container_1c9_H {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n opacity: 0.8;\n color: #222;\n}\n\n.featured-projects_opener-container_1c9_H:hover {\n opacity: 1;\n}\n\n.featured-projects_opener-content_1kqev {\n background-color: white;\n padding: 4px;\n border: 1px solid black;\n box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.25);\n}\n\n.featured-projects_projects_1piAv {\n position: relative;\n height: 155px;\n}\n\n.featured-projects_projects_1piAv.featured-projects_transition_3TsdC {\n transition: .2s height;\n}\n\n.featured-projects_projects_1piAv.featured-projects_opened_eLMQu {\n height: 310px;\n}\n\n.featured-projects_footer_2fw_5 {\n \n}\n",""]),t.locals={container:"featured-projects_container_1--ew","opener-container":"featured-projects_opener-container_1c9_H",openerContainer:"featured-projects_opener-container_1c9_H","opener-content":"featured-projects_opener-content_1kqev",openerContent:"featured-projects_opener-content_1kqev",projects:"featured-projects_projects_1piAv",transition:"featured-projects_transition_3TsdC",opened:"featured-projects_opened_eLMQu",footer:"featured-projects_footer_2fw_5"}},258:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'.description_description_1iyDJ {\n max-height: 250px;\n overflow: auto;\n white-space: pre-line;\n overflow-wrap: break-word;\n line-height: 1.5em;\n padding: 0.5rem;\n margin: 5px 0 8px 0;\n border: 1px solid #b9d6ff;\n background-color: #dbebff;\n border-radius: 0.5rem;\n}\n\n.description_description_1iyDJ a {\n font-weight: bold;\n text-decoration: none;\n}\n\n[theme="dark"] .description_description_1iyDJ {\n border-color: #203652;\n background-color: #16202c;\n}\n\n.description_header_27V8b {\n font-weight: bold;\n font-size: 1em;\n margin: 0;\n padding: 0;\n}\n\n.description_divider_3z5W7 {\n margin-top: 8px;\n}\n\n.description_project-link_2-Z1r {\n margin-bottom: 2px;\n}\n',""]),t.locals={description:"description_description_1iyDJ",header:"description_header_27V8b",divider:"description_divider_3z5W7","project-link":"description_project-link_2-Z1r",projectLink:"description_project-link_2-Z1r"}},259:function(e,t,n){var o=n(260),r=n(264),a=n(265),i=a&&a.isRegExp,s=i?r(i):o;e.exports=s},26:function(e,t,n){var o=n(256);"string"==typeof o&&(o=[[e.i,o,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(10)(o,r);o.locals&&(e.exports=o.locals)},260:function(e,t,n){var o=n(94),r=n(76);e.exports=function(e){return r(e)&&"[object RegExp]"==o(e)}},261:function(e,t,n){var o=n(159),r="object"==typeof self&&self&&self.Object===Object&&self,a=o||r||Function("return this")();e.exports=a},262:function(e,t,n){var o=n(95),r=Object.prototype,a=r.hasOwnProperty,i=r.toString,s=o?o.toStringTag:void 0;e.exports=function(e){var t=a.call(e,s),n=e[s];try{e[s]=void 0;var o=!0}catch(e){}var r=i.call(e);return o&&(t?e[s]=n:delete e[s]),r}},263:function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},264:function(e,t){e.exports=function(e){return function(t){return e(t)}}},265:function(e,t,n){(function(e){var o=n(159),r=t&&!t.nodeType&&t,a=r&&"object"==typeof e&&e&&!e.nodeType&&e,i=a&&a.exports===r&&o.process,s=function(){try{var e=a&&a.require&&a.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(e){}}();e.exports=s}).call(this,n(213)(e))},266:function(e,t,n){var o=n(267),r=/[\\^$.*+?()[\]{}|]/g,a=RegExp(r.source);e.exports=function(e){return(e=o(e))&&a.test(e)?e.replace(r,"\\$&"):e}},267:function(e,t,n){var o=n(268);e.exports=function(e){return null==e?"":o(e)}},268:function(e,t,n){var o=n(95),r=n(269),a=n(119),i=n(270),s=o?o.prototype:void 0,c=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(a(t))return r(t,e)+"";if(i(t))return c?c.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},269:function(e,t){e.exports=function(e,t){for(var n=-1,o=null==e?0:e.length,r=Array(o);++n0&&a(l)?n>1?e(l,n-1,a,i,s):o(s,l):i||(s[s.length]=l)}return s}},274:function(e,t){e.exports=function(e,t){for(var n=-1,o=t.length,r=e.length;++n * {\n margin-bottom: 10px;\n}\n[theme="dark"] .interface_container_2nBns {\n background-color: #111;\n}\n[theme="dark"] .interface_player-only_38SyA {\n color: #ddd;\n}\n[theme="dark"] a {\n color: #4af;\n}\n.interface_infobox_1B2Hp {\n line-height: 1.5em;\n padding: 0.5rem;\n margin: 5px 0 8px 0;\n border-radius: 0.5rem;\n border: 1px solid #b9d6ff;\n background-color: #dbebff;\n}\n[theme="dark"] .interface_infobox_1B2Hp {\n border-color: #203652;\n background-color: #16202c;\n}\n.interface_infobox_1B2Hp p {\n margin: 4px 0;\n}\n.interface_infobox_1B2Hp a {\n font-weight: bold;\n text-decoration: none;\n}\n.interface_unshared-update_i7deb {\n border-color: #ffb9b9;\n background-color: #ffdbdb;\n}\n[theme="dark"] .interface_unshared-update_i7deb {\n border-color: #6a2929;\n background-color: #452222;\n}\n',""]),t.locals={container:"interface_container_2nBns",editor:"interface_editor_3jGyG",center:"interface_center_2d9_b","player-only":"interface_player-only_38SyA",playerOnly:"interface_player-only_38SyA",menu:"interface_menu_3K-Q2",section:"interface_section_3pFkT",footer:"interface_footer_3JeCN","footer-content":"interface_footer-content_1aIC-",footerContent:"interface_footer-content_1aIC-","footer-text":"interface_footer-text_IgwDU",footerText:"interface_footer-text_IgwDU","footer-columns":"interface_footer-columns_1SUSg",footerColumns:"interface_footer-columns_1SUSg","footer-section":"interface_footer-section_11lCO",footerSection:"interface_footer-section_11lCO",infobox:"interface_infobox_1B2Hp","unshared-update":"interface_unshared-update_i7deb",unsharedUpdate:"interface_unshared-update_i7deb"}},49:function(e,t,n){var o=n(278);"string"==typeof o&&(o=[[e.i,o,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(10)(o,r);o.locals&&(e.exports=o.locals)},50:function(e,t,n){var o=n(257);"string"==typeof o&&(o=[[e.i,o,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(10)(o,r);o.locals&&(e.exports=o.locals)},52:function(e,t,n){"use strict";let o,r;"undefined"!=typeof BroadcastChannel&&(o=new BroadcastChannel("addons-change"),r=new BroadcastChannel("addons-reload")),t.a={changeChannel:o,reloadChannel:r}},65:function(e,t,n){var o=n(258);"string"==typeof o&&(o=[[e.i,o,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(10)(o,r);o.locals&&(e.exports=o.locals)},76:function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},94:function(e,t,n){var o=n(95),r=n(262),a=n(263),i=o?o.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?r(e):a(e)}},95:function(e,t,n){var o=n(261).Symbol;e.exports=o},96:function(e,t,n){"use strict";n.d(t,"b",(function(){return d})),n.d(t,"a",(function(){return u}));var o=n(1),r=n.n(o),a=n(97),i=n.n(a);function s(){return(s=Object.assign||function(e){for(var t=1;t{try{const e=localStorage.getItem("tw:theme");if(null!==e)return"dark"===e}catch(e){}return c.matches},l=document.createElement("style");l.textContent=i.a;const u=function(e){class t extends r.a.Component{constructor(e){super(e),this.handleQueryChange=this.handleQueryChange.bind(this),this.handleClickTheme=this.handleClickTheme.bind(this),this.state={dark:d()}}componentDidMount(){c.addEventListener&&c.addEventListener("change",this.handleQueryChange),this.updateDark()}componentDidUpdate(){try{localStorage.setItem("tw:theme",this.state.dark?"dark":"light")}catch(e){}this.updateDark()}componentWillUnmount(){c.removeEventListener&&c.removeEventListener("change",this.handleQueryChange)}updateDark(){const e=this.state.dark;document.body.setAttribute("theme",e?"dark":"light"),e&&!l.parentNode?document.body.insertBefore(l,document.body.firstChild):!e&&l.parentNode&&l.parentNode.removeChild(l)}handleQueryChange(){this.setState({dark:c.matches})}handleClickTheme(){this.setState(e=>({dark:!e.dark}))}render(){return r.a.createElement(e,s({onClickTheme:this.handleClickTheme,isDark:this.state.dark},this.props))}}return t}},97:function(e,t){e.exports='/* GUI */\n:root {\n background: #111;\n color: #eee;\n color-scheme: dark;\n /* see colors.csss */\n --ui-primary: rgb(17, 17, 17);\n --ui-secondary: rgb(30, 30, 30);\n --ui-tertiary: rgb(46, 46, 46);\n --ui-modal-overlay: #333a;\n --ui-black-transparent: rgba(255, 255, 255, 0.15);\n --text-primary: #eee;\n /* scratch-paint */\n --paint-ui-pane-border: var(--ui-black-transparent);\n --paint-text-primary: #eee;\n --paint-form-border: var(--ui-black-transparent);\n}\n\n/* Blockly */\n.blocklySvg {\n background-color: var(--ui-secondary) !important;\n color-scheme: light;\n}\n[id^="blocklyGridPattern"] > line {\n stroke: #484848;\n}\n.blocklyFlyoutBackground {\n fill: #111;\n}\n.blocklyFlyoutLabelText {\n fill: #ccc;\n}\n.blocklyFlyoutButton .blocklyText {\n fill: #ccc;\n}\n.blocklyFlyoutButton:hover {\n fill: #111;\n}\n/* blocklyFlyoutCheckboxPath stroke and blocklyFlyoutCheckbox fill must match */\n.blocklyFlyoutCheckboxPath {\n stroke: #111;\n}\n.blocklyFlyoutCheckbox {\n fill: #111;\n}\n.checked > .blocklyFlyoutCheckbox {\n stroke: #a1c6fa;\n}\n.checked > .blocklyFlyoutCheckboxPath {\n stroke: white;\n}\n.scratchCategoryMenu {\n color: #ccc;\n}\n.blocklyToolboxDiv,\n.scratchCategoryMenu {\n background: #111 !important;\n}\n.blocklyScrollbarHandle {\n fill: #666;\n}\n.blocklyZoom {\n filter: invert(100%);\n}\n.scratchCategoryMenuItem.categorySelected {\n background: var(--ui-secondary);\n}\n.valueReportBox {\n color: black;\n}\n.blocklyWidgetDiv {\n color-scheme: light;\n}\n.blocklyWidgetDiv .goog-menu {\n background: var(--ui-primary);\n border-color: var(--ui-black-transparent);\n}\n.blocklyWidgetDiv .goog-menuitem {\n color: var(--text-primary);\n}\n.blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-content {\n color: #666 !important;\n}\n.sa-blockly-menu-item-border {\n border-top-color: var(--ui-black-transparent) !important;\n}\n.blocklyWidgetDiv .goog-menuitem.goog-menuitem-highlight {\n background-color: var(--ui-tertiary);\n border-color: transparent; /* remove border */\n}\n.scratchCommentText {\n color: black;\n}\n.blocklyInsertionMarker > .blocklyPath {\n fill: #ccc;\n}\n\n/* Other / Multipurpose */\n.Popover {\n /* weird Chrome bug displays white bar above popovers with color-scheme: dark */\n color-scheme: light;\n}\n.Popover-body {\n background: var(--ui-secondary);\n border-color: var(--ui-black-transparent);\n color: var(--text-primary);\n}\n.Popover-tipShape {\n fill: var(--ui-secondary);\n stroke: var(--ui-black-transparent);\n}\n'}}); \ No newline at end of file diff --git a/js/iframe-extension-worker.e6657d8b2d4ed454e25f.js b/js/iframe-extension-worker.e6657d8b2d4ed454e25f.js new file mode 100644 index 0000000..18d44ec --- /dev/null +++ b/js/iframe-extension-worker.e6657d8b2d4ed454e25f.js @@ -0,0 +1 @@ +(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[78],{1632:function(e,t,n){const r=n(131),i=n(1657),a="'none'",o={accelerometer:a,"ambient-light-sensor":a,battery:a,camera:a,"display-capture":a,"document-domain":a,"encrypted-media":a,fullscreen:a,geolocation:a,gyroscope:a,magnetometer:a,microphone:a,midi:a,payment:a,"picture-in-picture":a,"publickey-credentials-get":a,"speaker-selection":a,usb:a,vibrate:a,vr:a,"screen-wake-lock":a,"web-share":a,"interest-cohort":a};e.exports=class{constructor(){this.id=r(),this.isRemote=!0,this.ready=!1,this.queuedMessages=[],this.iframe=document.createElement("iframe"),this.iframe.className="tw-custom-extension-frame",this.iframe.dataset.id=this.id,this.iframe.style.display="none",this.iframe.setAttribute("aria-hidden","true"),this.iframe.sandbox="allow-scripts",this.iframe.allow=Object.entries(o).map(([e,t])=>"".concat(e," ").concat(t)).join("; "),document.body.appendChild(this.iframe),window.addEventListener("message",this._onWindowMessage.bind(this));const e=new Blob(["