{"code":"(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[17],{1495: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\",\"\"])},1565:function(t,o,e){\"use strict\";e.r(o),e.d(o,\"resources\",(function(){return s}));var n=e(1495);const s={\"userscript.js\":async function(t){let o,{addon:e,console:n}=t;await e.tab.traps.getBlockly();let s=!1;const i={none:\"0s\",short:\"0.2s\",default:\"0.3s\",long:\"0.5s\"},a=document.createElement(\"div\");function c(){if(document.removeEventListener(\"mousemove\",d),\"editor\"!==e.tab.editorMode)return;Blockly.getMainWorkspace().options.zoomOptions.maxScale=e.settings.get(\"maxZoom\")/100,Blockly.getMainWorkspace().options.zoomOptions.minScale=e.settings.get(\"minZoom\")/100,Blockly.getMainWorkspace().options.zoomOptions.startScale=e.settings.get(\"startZoom\")/100,Blockly.getMainWorkspace().options.zoomOptions.scaleSpeed=1+e.settings.get(\"zoomSpeed\")/100*.2;const t=r(),o=e.settings.get(\"autohide\");if(t&&t.classList.toggle(\"sa-custom-zoom-hidden\",o),o){document.querySelector(\".injectionDiv\").appendChild(a),m(),document.addEventListener(\"mousemove\",d)}}function r(){const t=Blockly.getMainWorkspace().zoomControls_;return t?t.svgGroup_:null}function d(t){const n=t.x>o.left&&t.xo.top&&t.y!t.scratchGui.mode.isPlayerOnly}),c()},\"style.css\":e.n(n).a}}}]);","name":"js/pentapod/addon-entry-custom-zoom.82749fd9fdd7cfd38322.js","input":"(window[\"webpackJsonpGUI\"] = window[\"webpackJsonpGUI\"] || []).push([[17],{\n\n/***/ 1495:\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(9)(false);\n// imports\n\n\n// module\nexports.push([module.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\", \"\"]);\n\n// exports\n\n\n/***/ }),\n\n/***/ 1565:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, \"resources\", function() { return /* binding */ resources; });\n\n// CONCATENATED MODULE: ./src/addons/addons/custom-zoom/userscript.js\n/* harmony default export */ var userscript = (async function (_ref) {\n let {\n addon,\n console\n } = _ref;\n await addon.tab.traps.getBlockly();\n let controlsRect;\n let previousIsHovered = false;\n const speeds = {\n none: \"0s\",\n short: \"0.2s\",\n default: \"0.3s\",\n long: \"0.5s\"\n };\n const customZoomAreaElement = document.createElement(\"div\");\n customZoomAreaElement.className = \"sa-custom-zoom-area\";\n function update() {\n document.removeEventListener(\"mousemove\", onMouseMove);\n if (addon.tab.editorMode !== \"editor\") return;\n Blockly.getMainWorkspace().options.zoomOptions.maxScale = addon.settings.get(\"maxZoom\") / 100;\n Blockly.getMainWorkspace().options.zoomOptions.minScale = addon.settings.get(\"minZoom\") / 100;\n Blockly.getMainWorkspace().options.zoomOptions.startScale = addon.settings.get(\"startZoom\") / 100;\n Blockly.getMainWorkspace().options.zoomOptions.scaleSpeed = 1 + 0.2 * (addon.settings.get(\"zoomSpeed\") / 100);\n const svgGroup = getZoomControls();\n const autohide = addon.settings.get(\"autohide\");\n if (svgGroup) svgGroup.classList.toggle(\"sa-custom-zoom-hidden\", autohide);\n if (autohide) {\n const injectionDiv = document.querySelector(\".injectionDiv\");\n injectionDiv.appendChild(customZoomAreaElement);\n updateRect();\n document.addEventListener(\"mousemove\", onMouseMove);\n }\n }\n function getZoomControls() {\n const zoomControls = Blockly.getMainWorkspace().zoomControls_;\n if (zoomControls) return zoomControls.svgGroup_;\n return null;\n }\n function onMouseMove(e) {\n const isHovered = e.x > controlsRect.left && e.x < controlsRect.right && e.y > controlsRect.top && e.y < controlsRect.bottom;\n if (isHovered !== previousIsHovered) {\n previousIsHovered = isHovered;\n const svgGroup = getZoomControls();\n if (svgGroup) {\n svgGroup.style.setProperty(\"--sa-custom-zoom-speed\", speeds[addon.settings.get(\"speed\")]);\n svgGroup.classList.toggle(\"sa-custom-zoom-hidden\", !isHovered);\n }\n }\n }\n function updateRect() {\n controlsRect = customZoomAreaElement.getBoundingClientRect();\n }\n function onResize() {\n if (addon.tab.editorMode === \"editor\" && addon.settings.get(\"autohide\")) {\n updateRect();\n }\n }\n if (document.querySelector('[class^=\"backpack_backpack-container\"]')) {\n window.dispatchEvent(new Event(\"resize\"));\n }\n addon.settings.addEventListener(\"change\", update);\n window.addEventListener(\"resize\", onResize);\n while (true) {\n await addon.tab.waitForElement(\".blocklyZoom\", {\n markAsSeen: true,\n reduxEvents: [\"scratch-gui/mode/SET_PLAYER\", \"scratch-gui/locales/SELECT_LOCALE\", \"scratch-gui/theme/SET_THEME\", \"fontsLoaded/SET_FONTS_LOADED\"],\n reduxCondition: state => !state.scratchGui.mode.isPlayerOnly\n });\n update();\n }\n});\n// EXTERNAL MODULE: ./node_modules/css-loader!./src/addons/addons/custom-zoom/style.css\nvar style = __webpack_require__(1495);\nvar style_default = /*#__PURE__*/__webpack_require__.n(style);\n\n// CONCATENATED MODULE: ./src/addons/addons/custom-zoom/_runtime_entry.js\n/* generated by pull.js */\n\n\nconst resources = {\n \"userscript.js\": userscript,\n \"style.css\": style_default.a\n};\n\n/***/ })\n\n}]);","inputSourceMap":null}