|
(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(); |
|
}); |
|
|
|
}) |
|
|
|
}]); |
|
|