| (window["webpackJsonpGUI"] = window["webpackJsonpGUI"] || []).push([["addon-entry-block-count"],{ |
|
|
| "./src/addons/addons/block-count/_runtime_entry.js": |
| |
| |
| |
| |
| (function(module, __webpack_exports__, __webpack_require__) { |
|
|
| "use strict"; |
| __webpack_require__.r(__webpack_exports__); |
| __webpack_require__.d(__webpack_exports__, "resources", function() { return resources; }); |
| var _blockcount_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( "./src/addons/addons/block-count/blockcount.js"); |
| |
|
|
| const resources = { |
| "blockcount.js": _blockcount_js__WEBPACK_IMPORTED_MODULE_0__["default"] |
| }; |
|
|
| }), |
|
|
| "./src/addons/addons/block-count/blockcount.js": |
| |
| |
| |
| |
| (function(module, __webpack_exports__, __webpack_require__) { |
|
|
| "use strict"; |
| __webpack_require__.r(__webpack_exports__); |
| __webpack_exports__["default"] = (async function (_ref) { |
| let { |
| addon, |
| console, |
| msg |
| } = _ref; |
| const vm = addon.tab.traps.vm; |
| const getBlockCount = () => { |
| let blockCount = 0; |
| let scriptCount = 0; |
| let sprites = new Set(vm.runtime.targets.map(i => i.sprite.blocks._blocks)); |
| sprites.forEach((sprite, i) => { |
| scriptCount += Object.values(sprite).filter(o => !o.parent).length; |
| blockCount += Object.values(sprite).filter(o => !o.shadow).length; |
| }); |
| return { |
| blockCount, |
| scriptCount, |
| spriteCount: sprites.size - 1 |
| }; |
| }; |
| const addLiveBlockCount = async () => { |
| if (vm.editingTarget) { |
| let handler = null; |
| while (true) { |
| const topBar = await addon.tab.waitForElement("[class^='menu-bar_main-menu']", { |
| markAsSeen: true, |
| reduxEvents: ["scratch-gui/mode/SET_PLAYER", "fontsLoaded/SET_FONTS_LOADED", "scratch-gui/locales/SELECT_LOCALE"], |
| reduxCondition: state => !state.scratchGui.mode.isPlayerOnly |
| }); |
| let display = topBar.appendChild(document.createElement("span")); |
| addon.tab.displayNoneWhileDisabled(display); |
| display.style.order = 1; |
| display.style.padding = "9px"; |
| display.innerText = msg("blocks", { |
| num: getBlockCount().blockCount |
| }); |
| let debounce; |
| if (handler) { |
| vm.off("PROJECT_CHANGED", handler); |
| vm.runtime.off("PROJECT_LOADED", handler); |
| } |
| handler = async () => { |
| clearTimeout(debounce); |
| debounce = setTimeout(async () => { |
| display.innerText = msg("blocks", { |
| num: getBlockCount().blockCount |
| }); |
| }, 1000); |
| }; |
| vm.on("PROJECT_CHANGED", handler); |
| vm.runtime.on("PROJECT_LOADED", handler); |
| } |
| } else { |
| let timeout = setTimeout(function () { |
| addLiveBlockCount(); |
| clearTimeout(timeout); |
| }, 1000); |
| } |
| }; |
| addLiveBlockCount(); |
| }); |
|
|
| }) |
|
|
| }]); |
| |