{"code":"(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[4],{1382: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: var(--editorTheme3-blockText, white);\\n --sa-block-gray-text: white;\\n --sa-block-colored-text: var(--sa-block-background-primary);\\n --sa-block-text-on-bright-background: var(--editorTheme3-blockText, white);\\n --sa-block-input-color: var(--editorTheme3-inputColor, white);\\n --sa-block-input-text: var(--editorTheme3-inputColor-text, #575e75);\\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-addons-primary, #29beb8);\\n --sa-block-background-secondary: var(--editorTheme3-addons-secondary, #3aa8a4);\\n --sa-block-background-tertiary: var(--editorTheme3-addons-tertiary, #3aa8a4);\\n --sa-block-field-background: var(--editorTheme3-addons-field, #3aa8a4);\\n}\\n\",\"\"])},1383:function(e,t,o){\"use strict\";o.d(t,\"b\",(function(){return c})),o.d(t,\"a\",(function(){return l})),o.d(t,\"c\",(function(){return d}));var n=o(709);const s=new Map,r=1e3,i=new n.a,a=\"clearTextCache\";function c(e){let t=e.innerHTML;if(0===t.length)return 0;let o=s.get(t);return o||(o=e.getBoundingClientRect().width,s.set(t,o),s.size>r&&s.delete(s.keys().next()),o)}function l(){s.clear(),i.dispatchEvent(new CustomEvent(a))}function d(e){i.addEventListener(a,e)}},1388:function(e,t,o){\"use strict\";o.d(t,\"a\",(function(){return n})),o.d(t,\"b\",(function(){return s}));const n=()=>/^#?[0-9a-fA-F]{3,8}$/,s=e=>{let t=String(e);if(!n().test(t))return\"#000000\";if(t.startsWith(\"#\")||(t=\"#\".concat(t)),4===t.length){const[e,o,n,s]=t;t=\"#\".concat(o).concat(o).concat(n).concat(n).concat(s).concat(s)}return t.toLowerCase()}},1389: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(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[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)}}},1390:function(e,t,o){\"use strict\";o.d(t,\"a\",(function(){return s})),o.d(t,\"b\",(function(){return r}));let n=!1;const s={paintSkew:null,paintSnap:null};function r(e,t){if(n)return;n=!0;const o=t.prototype.onMouseDrag;t.prototype.onMouseDrag=function(e){if(!this.active)return;const t=()=>{s.paintSnap?s.paintSnap.call(this,e):o.call(this,e)};s.paintSkew?s.paintSkew.call(this,e,t):t()}}},1395:function(e,t,o){\"use strict\";o.d(t,\"b\",(function(){return r})),o.d(t,\"c\",(function(){return a})),o.d(t,\"a\",(function(){return u}));let n=!1,s=!1;function r(e,t){n=e,s=e&&t}let i=!1;function a(e){i=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(){let e=this.targetBlock_;const r=!(this.mostRecentEvent_ instanceof MouseEvent),a=i&&l&&!r&&!this.flyout_&&!this.shouldDuplicateOnDrag_&&\"procedures_definition\"!==this.targetBlock_.type,d=s&&!r&&e.getParent(),u=(n||a)&&c===!d&&!e.isShadow();if((a||u)&&(t.Events.getGroup()||t.Events.setGroup(!0)),a){let o;this.startWorkspace_.setResizesEnabled(!1),t.Events.disable();try{const n=t.Xml.blockToDom(e);o=t.Xml.domToBlock(n,this.startWorkspace_),t.scratchBlocksUtils.changeObscuredShadowIds(o);const s=e.getRelativeToSurfaceXY();o.moveBy(s.x,s.y)}catch(e){console.error(e)}t.Events.enable(),o&&(e=o,this.targetBlock_=o,t.Events.isEnabled()&&t.Events.fire(new t.Events.BlockCreate(o)))}if(u){if(r||a){const t=e.getNextBlock();t&&t.dispose()}e.unplug(!0)}for(var p=arguments.length,h=new Array(p),g=0;g
.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',\"\"])},1435:function(e,t,o){(t=e.exports=o(9)(!1)).i(o(1382),\"\"),t.push([e.i,'.sa-mcp-root {\\n display: flex;\\n white-space: nowrap;\\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\\n\\n position: absolute;\\n min-width: 100px;\\n background-color: var(--ui-modal-background);\\n border-radius: 4px;\\n box-shadow:\\n rgba(0, 0, 0, 0.3) 0 0 3px,\\n rgba(0, 0, 0, 0.2) 0 3px 10px;\\n\\n z-index: 999;\\n}\\n\\n.sa-mcp-container {\\n display: flex;\\n flex-flow: column;\\n top: -6px;\\n z-index: 100;\\n position: absolute;\\n box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, 0.3);\\n background-color: var(--ui-modal-background);\\n outline: 1px solid var(--ui-black-transparent);\\n border: none;\\n border-radius: 4px;\\n}\\n\\n.sa-mcp-input-wrapper {\\n position: relative;\\n margin: 4px;\\n /* !important required for extension, because CSS injection method (and hence order) differs from addon */\\n box-sizing: border-box !important;\\n height: 1.5rem;\\n min-height: 1.5rem;\\n\\n /* Change Scratch default styles */\\n border-radius: 0.25rem;\\n font-size: 0.75rem;\\n padding-left: 0.2rem;\\n padding-right: 0.2rem;\\n}\\n\\n.sa-mcp-input-wrapper:focus {\\n /* Change Scratch default styles */\\n box-shadow: none;\\n}\\n\\n.sa-mcp-input-wrapper[data-error=\"true\"] {\\n border-color: red;\\n}\\n\\n.sa-mcp-input-wrapper > input {\\n position: absolute;\\n border: 0;\\n background-color: transparent;\\n outline: none;\\n width: 100%;\\n height: 100%;\\n line-height: 100%;\\n box-sizing: border-box;\\n}\\n\\n.sa-mcp-input-suggestion {\\n color: hsla(225, 15%, 40%, 0.65);\\n}\\n\\n.sa-mcp-preview-container {\\n flex: auto;\\n overflow-y: scroll;\\n}\\n\\n.sa-mcp-root /* <-- specificity */ .sa-mcp-preview-container {\\n scrollbar-width: none;\\n}\\n\\n.sa-mcp-preview-container::-webkit-scrollbar {\\n width: 0;\\n height: 0;\\n}\\n\\n.sa-mcp-preview-blocks {\\n width: 100%;\\n min-height: 100%;\\n /* https://stackoverflow.com/a/22166728/8448397 */\\n float: left;\\n}\\n\\n.sa-mcp-preview-scrollbar {\\n position: absolute;\\n width: 11px;\\n right: 0;\\n bottom: 0;\\n}\\n\\n.sa-mcp-preview-block-bg {\\n width: 100%;\\n fill: transparent;\\n cursor: grab;\\n}\\n\\n.sa-mcp-preview-block {\\n filter: brightness(95%);\\n cursor: grab;\\n}\\n\\n.sa-mcp-preview-block-selection {\\n filter: brightness(103%);\\n}\\n\\n.sa-mcp-preview-block-bg-selection {\\n fill: #7774;\\n}\\n',\"\"])},1436:function(e,t,o){(e.exports=o(9)(!1)).push([e.i,\".blocklyTextShiftArrow {\\n position: absolute;\\n top: -50px;\\n left: 50%;\\n margin-left: -12.5px;\\n cursor: pointer;\\n}\\n\",\"\"])},1437: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\",\"\"])},1465: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\\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',\"\"])},1466: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: var(--editorDarkMode-primary-transparent35, hsla(260, 60%, 60%, 0.35));\\n}\\n.sa-onion-image[data-image=\"toggle\"] {\\n filter: var(--filter-icon-white);\\n}\\n.sa-onion-image[data-image=\"settings\"] {\\n filter: var(--filter-icon-black);\\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 color: white;\\n background-color: var(--looks-secondary);\\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 #ddd;\\n border: 1px solid var(--ui-black-transparent);\\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-modal-background);\\n color: var(--ui-text-primary);\\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-modal-background);\\n stroke: var(--ui-black-transparent);\\n}\\n\\n.sa-onion-settings-label {\\n white-space: nowrap;\\n}\\n',\"\"])},1470: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',\"\"])},1494: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',\"\"])},1506: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:\\n opacity 0.1s,\\n filter 0.1s,\\n 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\",\"\"])},1523: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 s=function(e,t,o,s){let r=document.createEvent(\"MouseEvents\");r.initMouseEvent(e,!0,!0,window,1,1,1,o,s,n,!1,!1,!1,0,t),t.dispatchEvent(r)},r=e,i=t;if(!r)return!1;let a=r.getBoundingClientRect(),c=Math.floor((a.left+a.right)/2),l=Math.floor((a.top+a.bottom)/2);if(s(\"mouseover\",r,c,l),s(\"mousedown\",r,c,l),s(\"dragstart\",r,c,l),s(\"drag\",r,c,l),s(\"mousemove\",r,c,l),!i){if(o){let e=o.x,t=o.y;s(\"drag\",r,e,t),s(\"mousemove\",r,e,t)}return!1}a=i.getBoundingClientRect();let d=Math.floor((a.left+a.right)/2),u=Math.floor((a.top+a.bottom)/2);return s(\"drag\",r,d,u),s(\"mousemove\",i,d,u),s(\"mouseenter\",i,d,u),s(\"dragenter\",i,d,u),s(\"mouseover\",i,d,u),s(\"dragover\",i,d,u),s(\"drop\",i,d,u),s(\"dragend\",r,d,u),s(\"mouseup\",r,d,u),!0}bindOnce(e,t,o,n){n=!!n,e.removeEventListener(t,o,n),e.addEventListener(t,o,n),this.events.push(new s(e,t,o,n))}unbindAllEvents(){for(const e of this.events)e.dom.removeEventListener(e.event,e.func,e.capture);this.events=[]}}class s{constructor(e,t,o,n){this.dom=e,this.event=t,this.func=o,this.capture=n}}class r{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 i{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();r.startUndoGroup(t);let n=this.getOrderedTopBlockColumns(!0),s=n.cols,i=n.orphans.blocks.length;if(i>0&&!e){let e=this.msg(\"orphaned\",{count:i});if(confirm(e))for(const e of n.orphans.blocks)e.dispose();else s.unshift(n.orphans)}let a=48,c=n.maxWidths;for(const e of s){let t=64,n=0;for(const s of e.blocks){let e=s===o?380:0,r=s===o?480:72,i=s.getRelativeToSurfaceXY();a-i.x===0&&t-i.y===0||s.moveBy(a-i.x,t-i.y);let l=s.getHeightWidth();t+=l.height+r;let d=c[s.id]||0;n=Math.max(n,Math.max(l.width+e,d))}a+=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;e