forked from sent/waves
228 lines
11 KiB
JavaScript
228 lines
11 KiB
JavaScript
(window["webpackJsonpGUI"] = window["webpackJsonpGUI"] || []).push([["addon-entry-columns"],{
|
|
|
|
/***/ "./node_modules/css-loader/index.js!./src/addons/addons/columns/style.css":
|
|
/*!***********************************************************************!*\
|
|
!*** ./node_modules/css-loader!./src/addons/addons/columns/style.css ***!
|
|
\***********************************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
exports = module.exports = __webpack_require__(/*! ../../../../node_modules/css-loader/lib/css-base.js */ "./node_modules/css-loader/lib/css-base.js")(false);
|
|
// imports
|
|
|
|
|
|
// module
|
|
exports.push([module.i, "[class*=\"blocks_blocks_\"] .blocklyToolboxDiv {\n width: 310px;\n height: auto !important;\n}\n\n.scratchCategoryMenu {\n width: 100%;\n columns: 2;\n column-gap: 0.5rem;\n padding: 0.25rem;\n}\n\n.scratchCategorySecondMenu {\n columns: 1;\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n padding-bottom: 2.25rem;\n}\n\n.scratchCategorySecondMenu:empty {\n padding-top: 0;\n padding-bottom: 2rem;\n}\n\n.scratchCategoryMenuItem {\n display: inline-flex; /* inline so that it isn't split between both columns */\n width: 100%;\n padding: 0.25rem;\n border-radius: 0.875rem;\n}\n\n.scratchCategoryItemBubble,\n.scratchCategoryItemIcon {\n margin: 0;\n margin-inline-end: 0.5rem;\n}\n\n.scratchCategoryMenuItemLabel {\n flex: 1;\n display: flex;\n align-items: center;\n}\n\n[class*=\"gui_extension-button-container_\"] {\n top: var(--sa-add-extension-button-y);\n bottom: auto;\n margin-inline-start: 0.5rem;\n width: calc(308px - 1rem);\n height: calc(1.75rem - 2px);\n background-color: transparent;\n border-color: var(--ui-black-transparent, rgba(0, 0, 0, 0.15));\n}\n\n/* [dir] is for specificity to override editor-stage-left */\n[dir] [class*=\"gui_extension-button-container_\"] {\n border-radius: 0.25rem;\n}\n\n[class*=\"gui_extension-button-container_\"]:hover {\n background-color: var(--ui-tertiary, white);\n}\n\n[class*=\"gui_extension-button-container_\"]::before {\n display: none;\n}\n\n[class*=\"gui_extension-button_\"] {\n display: flex;\n align-items: center;\n padding-inline: 0;\n}\n\n[class*=\"gui_extension-button-icon_\"] {\n filter: var(--editorDarkMode-categoryMenu-invertedFilter, brightness(0.4));\n}\n\n[class*=\"gui_extension-button-container_\"]:hover [class*=\"gui_extension-button-icon_\"] {\n filter: var(--editorDarkMode-accent-invertedFilter, brightness(0.4));\n}\n[theme=\"dark\"] [class*=\"gui_extension-button-icon_\"] {\n filter: none !important;\n}\n\n.sa-add-extension-label {\n color: var(--text-primary, #575e75);\n font-size: 0.65rem;\n}\n\n[class*=\"gui_extension-button-container_\"]:hover .sa-add-extension-label {\n color: var(--text-primary, #575e75);\n font-size: 0.65rem;\n}\n\n/* hide-flyout compatibility */\n\n[class*=\"gui_tabs_\"] {\n --sa-flyout-width: 310px;\n --sa-category-width: 0;\n}\n\n.sa-flyout-placeHolder {\n top: calc(var(--sa-flyout-y));\n}\n", ""]);
|
|
|
|
// exports
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/addons/addons/columns/_runtime_entry.js":
|
|
/*!*****************************************************!*\
|
|
!*** ./src/addons/addons/columns/_runtime_entry.js ***!
|
|
\*****************************************************/
|
|
/*! exports provided: resources */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resources", function() { return resources; });
|
|
/* harmony import */ var _userscript_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userscript.js */ "./src/addons/addons/columns/userscript.js");
|
|
/* harmony import */ var _css_loader_style_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! css-loader!./style.css */ "./node_modules/css-loader/index.js!./src/addons/addons/columns/style.css");
|
|
/* harmony import */ var _css_loader_style_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_style_css__WEBPACK_IMPORTED_MODULE_1__);
|
|
/* generated by pull.js */
|
|
|
|
|
|
const resources = {
|
|
"userscript.js": _userscript_js__WEBPACK_IMPORTED_MODULE_0__["default"],
|
|
"style.css": _css_loader_style_css__WEBPACK_IMPORTED_MODULE_1___default.a
|
|
};
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/addons/addons/columns/userscript.js":
|
|
/*!*************************************************!*\
|
|
!*** ./src/addons/addons/columns/userscript.js ***!
|
|
\*************************************************/
|
|
/*! exports provided: default */
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony default export */ __webpack_exports__["default"] = (async function ({
|
|
addon,
|
|
msg,
|
|
console
|
|
}) {
|
|
const Blockly = await addon.tab.traps.getBlockly(); // https://github.com/LLK/scratch-blocks/blob/893c7e7ad5bfb416eaed75d9a1c93bdce84e36ab/core/toolbox.js#L235
|
|
|
|
const _ToolboxPosition = Blockly.Toolbox.prototype.position;
|
|
|
|
Blockly.Toolbox.prototype.position = function () {
|
|
_ToolboxPosition.call(this); // Update flyout position when category menu height changes.
|
|
|
|
|
|
if (this.HtmlDiv && !this.HtmlDiv._observer) {
|
|
this.HtmlDiv._observer = new ResizeObserver(() => {
|
|
this.flyout_.position();
|
|
});
|
|
|
|
this.HtmlDiv._observer.observe(this.HtmlDiv);
|
|
}
|
|
}; // https://github.com/LLK/scratch-blocks/blob/893c7e7ad5bfb416eaed75d9a1c93bdce84e36ab/core/flyout_vertical.js#L314
|
|
|
|
|
|
const _VerticalFlyoutPosition = Blockly.VerticalFlyout.prototype.position;
|
|
|
|
Blockly.VerticalFlyout.prototype.position = function () {
|
|
_VerticalFlyoutPosition.call(this);
|
|
|
|
if (addon.self.disabled || !this.isVisible()) {
|
|
return;
|
|
}
|
|
|
|
var targetWorkspaceMetrics = this.targetWorkspace_.getMetrics();
|
|
|
|
if (!targetWorkspaceMetrics) {
|
|
// Hidden components will return null.
|
|
return;
|
|
} // In RTL, subtract the total width of left and right workspace borders and the category menu border
|
|
// from the workspace width.
|
|
|
|
|
|
var x = this.toolboxPosition_ === Blockly.TOOLBOX_AT_RIGHT ? targetWorkspaceMetrics.viewWidth - 3 : 0;
|
|
var y = this.parentToolbox_.HtmlDiv.offsetHeight; // Addon sets the width of the flyout to the width of the toolbox.
|
|
|
|
this.width_ = this.parentToolbox_.getWidth();
|
|
this.height_ = Math.max(0, targetWorkspaceMetrics.viewHeight - y);
|
|
this.setBackgroundPath_(this.width_, this.height_);
|
|
this.svgGroup_.setAttribute("width", this.width_);
|
|
this.svgGroup_.setAttribute("height", this.height_);
|
|
var transform = "translate(" + x + "px," + y + "px)";
|
|
Blockly.utils.setCssTransform(this.svgGroup_, transform); // Update the scrollbar (if one exists).
|
|
|
|
if (this.scrollbar_) {
|
|
// Set the scrollbars origin to be the top left of the flyout.
|
|
this.scrollbar_.setOrigin(x + (this.toolboxPosition_ === Blockly.TOOLBOX_AT_RIGHT ? 0 : this.width_ - this.getWidth()), y);
|
|
this.scrollbar_.resize();
|
|
} // Set CSS variables for the userstyle.
|
|
|
|
|
|
const container = this.svgGroup_.closest("[class*='gui_tab-panel_']");
|
|
container.style.setProperty("--sa-add-extension-button-y", "".concat(y - 33, "px"));
|
|
container.parentElement.style.setProperty("--sa-flyout-y", "".concat(y, "px"));
|
|
}; // https://github.com/LLK/scratch-blocks/blob/893c7e7ad5bfb416eaed75d9a1c93bdce84e36ab/core/flyout_base.js#L370
|
|
|
|
|
|
const _VerticalFlyoutGetWidth = Blockly.VerticalFlyout.prototype.getWidth;
|
|
|
|
Blockly.VerticalFlyout.prototype.getWidth = function () {
|
|
// In RTL, this will be called by Blockly to position blocks inside the flyout.
|
|
let width = _VerticalFlyoutGetWidth.call(this);
|
|
|
|
if (!addon.self.disabled) width += 60;
|
|
return width;
|
|
}; // https://github.com/LLK/scratch-blocks/blob/893c7e7ad5bfb416eaed75d9a1c93bdce84e36ab/core/toolbox.js#L595
|
|
|
|
|
|
const _CategoryMenuCreateDom = Blockly.Toolbox.CategoryMenu.prototype.createDom;
|
|
|
|
Blockly.Toolbox.CategoryMenu.prototype.createDom = function () {
|
|
_CategoryMenuCreateDom.call(this);
|
|
|
|
if (addon.self.disabled) return;
|
|
this.secondTable = document.createElement("div");
|
|
this.secondTable.className = "scratchCategorySecondMenu " + (this.parent_.horizontalLayout_ ? "scratchCategoryMenuHorizontal" : "scratchCategoryMenu");
|
|
this.parentHtml_.appendChild(this.secondTable);
|
|
}; // https://github.com/LLK/scratch-blocks/blob/893c7e7ad5bfb416eaed75d9a1c93bdce84e36ab/core/toolbox.js#L606
|
|
|
|
|
|
const _CategoryMenuPopulate = Blockly.Toolbox.CategoryMenu.prototype.populate;
|
|
|
|
Blockly.Toolbox.CategoryMenu.prototype.populate = function (domTree) {
|
|
if (!domTree) return;
|
|
const Categories = ["motion", "looks", "sound", "events", "control", "sensing", "operators", "variables", "lists", "myBlocks"];
|
|
const extensionsNodes = [];
|
|
const extensionTree = domTree.cloneNode(true);
|
|
|
|
if (!addon.self.disabled) {
|
|
extensionTree.childNodes.forEach(child => {
|
|
if (child.tagName === "category" && !Categories.includes(child.id)) {
|
|
extensionsNodes.push(child.cloneNode(true));
|
|
child.remove();
|
|
}
|
|
});
|
|
}
|
|
|
|
_CategoryMenuPopulate.call(this, extensionTree);
|
|
|
|
for (const child of extensionsNodes) {
|
|
const row = document.createElement("div");
|
|
row.className = "scratchCategoryMenuRow";
|
|
this.secondTable.appendChild(row);
|
|
|
|
if (child) {
|
|
this.categories_.push(new Blockly.Toolbox.Category(this, row, child));
|
|
}
|
|
}
|
|
|
|
if (!addon.self.disabled) {
|
|
this.height_ = this.table.offsetHeight + this.secondTable.offsetHeight;
|
|
}
|
|
}; // https://github.com/LLK/scratch-blocks/blob/893c7e7ad5bfb416eaed75d9a1c93bdce84e36ab/core/toolbox.js#L639
|
|
|
|
|
|
const _CategoryMenuDispose = Blockly.Toolbox.CategoryMenu.prototype.dispose;
|
|
|
|
Blockly.Toolbox.CategoryMenu.prototype.dispose = function () {
|
|
_CategoryMenuDispose.call(this);
|
|
|
|
if (this.secondTable) {
|
|
this.secondTable.remove();
|
|
this.secondTable = null;
|
|
}
|
|
};
|
|
|
|
function updateToolbox() {
|
|
const workspace = Blockly.getMainWorkspace();
|
|
const toolbox = workspace.getToolbox();
|
|
if (!toolbox) return;
|
|
const categoryMenu = toolbox.categoryMenu_;
|
|
if (!categoryMenu) return; // Scratch may have already updated the toolbox for us, so no need to update it again.
|
|
|
|
if (categoryMenu.secondTable && !addon.self.disabled) return; // Must dispose and createDom the category menu so we can run our polluted commands.
|
|
|
|
categoryMenu.dispose();
|
|
categoryMenu.createDom(); // Repopulate the category menu since we've just disposed it.
|
|
|
|
toolbox.populate_(workspace.options.languageTree); // Reposition the toolbox, since it's likely our addon moved it.
|
|
|
|
toolbox.position();
|
|
}
|
|
|
|
updateToolbox();
|
|
addon.self.addEventListener("disabled", updateToolbox);
|
|
addon.self.addEventListener("reenabled", updateToolbox);
|
|
|
|
while (true) {
|
|
const addExtensionButton = await addon.tab.waitForElement("[class*='gui_extension-button_']", {
|
|
markAsSeen: true,
|
|
reduxEvents: ["scratch-gui/mode/SET_PLAYER", "fontsLoaded/SET_FONTS_LOADED", "scratch-gui/locales/SELECT_LOCALE"],
|
|
condition: () => !addon.tab.redux.state.scratchGui.mode.isPlayerOnly
|
|
});
|
|
const addExtensionLabel = Object.assign(document.createElement("span"), {
|
|
className: "sa-add-extension-label",
|
|
innerText: addon.tab.scratchMessage("gui.gui.addExtension")
|
|
});
|
|
addon.tab.displayNoneWhileDisabled(addExtensionLabel);
|
|
addExtensionButton.appendChild(addExtensionLabel);
|
|
addExtensionButton.removeAttribute("title");
|
|
}
|
|
});
|
|
|
|
/***/ })
|
|
|
|
}]);
|
|
//# sourceMappingURL=addon-entry-columns.js.map
|