{"version":3,"file":"js/addon-entry-custom-zoom.js","sources":["webpack://GUI/./src/addons/addons/custom-zoom/style.css","webpack://GUI/./src/addons/addons/custom-zoom/_runtime_entry.js","webpack://GUI/./src/addons/addons/custom-zoom/userscript.js"],"sourcesContent":["exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".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","/* generated by pull.js */\nimport _js from \"./userscript.js\";\nimport _css from \"!css-loader!./style.css\";\nexport const resources = {\n \"userscript.js\": _js,\n \"style.css\": _css,\n};\n","export default async function ({ addon, console }) {\n await addon.tab.traps.getBlockly();\n\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\n const customZoomAreaElement = document.createElement(\"div\");\n customZoomAreaElement.className = \"sa-custom-zoom-area\";\n\n function update() {\n document.removeEventListener(\"mousemove\", onMouseMove);\n\n if (addon.tab.editorMode !== \"editor\") return;\n\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\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\n function getZoomControls() {\n const zoomControls = Blockly.getMainWorkspace().zoomControls_;\n if (zoomControls) return zoomControls.svgGroup_;\n return null;\n }\n\n function onMouseMove(e) {\n const isHovered =\n 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\n function updateRect() {\n controlsRect = customZoomAreaElement.getBoundingClientRect();\n }\n\n function onResize() {\n if (addon.tab.editorMode === \"editor\" && addon.settings.get(\"autohide\")) {\n updateRect();\n }\n }\n\n await addon.tab.waitForElement(\".blocklyZoom\");\n update();\n addon.tab.addEventListener(\"urlChange\", update);\n addon.settings.addEventListener(\"change\", update);\n window.addEventListener(\"resize\", onResize);\n}\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;A","sourceRoot":""}