{"code":"(window.webpackJsonpGUI=window.webpackJsonpGUI||[]).push([[7],{1550:function(e,t,n){\"use strict\";n.r(t),n.d(t,\"resources\",(function(){return o}));const o={\"blockcount.js\":async function(e){let{addon:t,console:n,msg:o}=e;const s=t.tab.traps.vm,c=()=>{let e=0,t=0,n=new Set(s.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(s.editingTarget){let e=null;for(;;){let n,a=(await t.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\"));t.tab.displayNoneWhileDisabled(a),a.style.order=1,a.innerText=o(\"blocks\",{num:c().blockCount}),e&&(s.off(\"PROJECT_CHANGED\",e),s.runtime.off(\"PROJECT_LOADED\",e)),e=async()=>{clearTimeout(n),n=setTimeout((async()=>{a.innerText=o(\"blocks\",{num:c().blockCount})}),1e3)},s.on(\"PROJECT_CHANGED\",e),s.runtime.on(\"PROJECT_LOADED\",e)}}else{let e=setTimeout((function(){a(),clearTimeout(e)}),1e3)}};a()}}}}]);","name":"js/pentapod/addon-entry-block-count.a5e45edc9aca7be7e2c1.js","input":"(window[\"webpackJsonpGUI\"] = window[\"webpackJsonpGUI\"] || []).push([[7],{\n\n/***/ 1550:\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/block-count/blockcount.js\n/* harmony default export */ var blockcount = (async function (_ref) {\n let {\n addon,\n console,\n msg\n } = _ref;\n const vm = addon.tab.traps.vm;\n const getBlockCount = () => {\n let blockCount = 0;\n let scriptCount = 0;\n let sprites = new Set(vm.runtime.targets.map(i => i.sprite.blocks._blocks));\n sprites.forEach((sprite, i) => {\n scriptCount += Object.values(sprite).filter(o => !o.parent).length; // Filter blocks that don't have a parent (meaning it's the top of a stack)\n blockCount += Object.values(sprite).filter(o => !o.shadow).length; // shadow blocks should be filtered out\n });\n return {\n blockCount,\n scriptCount,\n spriteCount: sprites.size - 1 // Backdrop counts as a target so we can subtract it\n };\n };\n const addLiveBlockCount = async () => {\n if (vm.editingTarget) {\n let handler = null;\n while (true) {\n const topBar = await addon.tab.waitForElement(\"[class^='menu-bar_main-menu']\", {\n markAsSeen: true,\n reduxEvents: [\"scratch-gui/mode/SET_PLAYER\", \"fontsLoaded/SET_FONTS_LOADED\", \"scratch-gui/locales/SELECT_LOCALE\"],\n reduxCondition: state => !state.scratchGui.mode.isPlayerOnly\n });\n let display = topBar.appendChild(document.createElement(\"span\"));\n addon.tab.displayNoneWhileDisabled(display);\n display.style.order = 1;\n display.innerText = msg(\"blocks\", {\n num: getBlockCount().blockCount\n });\n let debounce; // debouncing values because of the way 'PROJECT_CHANGED' works\n if (handler) {\n vm.off(\"PROJECT_CHANGED\", handler);\n vm.runtime.off(\"PROJECT_LOADED\", handler);\n }\n handler = async () => {\n clearTimeout(debounce);\n debounce = setTimeout(async () => {\n display.innerText = msg(\"blocks\", {\n num: getBlockCount().blockCount\n });\n }, 1000);\n };\n vm.on(\"PROJECT_CHANGED\", handler);\n vm.runtime.on(\"PROJECT_LOADED\", handler);\n }\n } else {\n let timeout = setTimeout(function () {\n addLiveBlockCount();\n clearTimeout(timeout);\n }, 1000);\n }\n };\n addLiveBlockCount();\n});\n// CONCATENATED MODULE: ./src/addons/addons/block-count/_runtime_entry.js\n/* generated by pull.js */\n\nconst resources = {\n \"blockcount.js\": blockcount\n};\n\n/***/ })\n\n}]);","inputSourceMap":null}