editor / js /addon-entry-editor-colored-context-menus.js
soiz1's picture
Upload static files
9ab1a44 verified
(window["webpackJsonpGUI"] = window["webpackJsonpGUI"] || []).push([["addon-entry-editor-colored-context-menus"],{
/***/ "./node_modules/css-loader/index.js!./src/addons/addons/editor-colored-context-menus/userscript.css":
/*!*************************************************************************************************!*\
!*** ./node_modules/css-loader!./src/addons/addons/editor-colored-context-menus/userscript.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, ".sa-contextmenu-colored .blocklyContextMenu {\n background: var(--sa-contextmenu-bg) !important;\n border-color: var(--sa-contextmenu-border) !important;\n}\n.sa-contextmenu-colored .blocklyContextMenu .goog-menuitem-highlight,\n.sa-contextmenu-colored .s3dev-mi:hover {\n background-color: #0001;\n border-color: transparent !important;\n}\n.sa-contextmenu-colored .blocklyContextMenu .goog-menuitem[style*=\"border-top\"] {\n border-top-color: var(--sa-contextmenu-border) !important;\n}\n.sa-contextmenu-colored .blocklyContextMenu .goog-menuitem .goog-menuitem-content {\n color: var(--sa-contextmenu-text, #fff);\n}", ""]);
// exports
/***/ }),
/***/ "./src/addons/addons/editor-colored-context-menus/_runtime_entry.js":
/*!**************************************************************************!*\
!*** ./src/addons/addons/editor-colored-context-menus/_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/editor-colored-context-menus/userscript.js");
/* harmony import */ var _css_loader_userscript_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! css-loader!./userscript.css */ "./node_modules/css-loader/index.js!./src/addons/addons/editor-colored-context-menus/userscript.css");
/* harmony import */ var _css_loader_userscript_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_userscript_css__WEBPACK_IMPORTED_MODULE_1__);
/* generated by pull.js */
const resources = {
"userscript.js": _userscript_js__WEBPACK_IMPORTED_MODULE_0__["default"],
"userscript.css": _css_loader_userscript_css__WEBPACK_IMPORTED_MODULE_1___default.a
};
/***/ }),
/***/ "./src/addons/addons/editor-colored-context-menus/userscript.js":
/*!**********************************************************************!*\
!*** ./src/addons/addons/editor-colored-context-menus/userscript.js ***!
\**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _libraries_common_cs_text_color_esm_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../libraries/common/cs/text-color.esm.js */ "./src/addons/libraries/common/cs/text-color.esm.js");
/* harmony default export */ __webpack_exports__["default"] = (async function (_ref) {
let {
addon,
console
} = _ref;
const ScratchBlocks = await addon.tab.traps.getBlockly();
const fixupColor = color => {
// some extensions have SVG-gradient styled blocks
if (color.startsWith("url(#")) {
const gradientID = color.substring(5, color.length - 1);
const gradientCode = document.querySelector("svg [id=\"".concat(gradientID, "\"]"));
if (!gradientCode || gradientCode.tagName !== "linearGradient") return "#000000";
const parseCoord = v => parseFloat(v.replace("%", ""));
const x1 = parseCoord(gradientCode.getAttribute("x1") || "0");
const y1 = parseCoord(gradientCode.getAttribute("y1") || "0");
const x2 = parseCoord(gradientCode.getAttribute("x2") || "100");
const y2 = parseCoord(gradientCode.getAttribute("y2") || "0");
const dx = x2 - x1,
dy = y2 - y1;
const angleDeg = (Math.atan2(dy, dx) * 180 / Math.PI + 90 + 360) % 360;
const stops = Array.from(gradientCode.querySelectorAll("stop")).map(stop => {
const color = stop.getAttribute("stop-color") || "#000";
let offset = stop.getAttribute("offset");
if (!offset) offset = "0%";else if (!offset.endsWith("%")) offset = parseFloat(offset) * 100 + "%";
return "".concat(color, " ").concat(offset);
});
return "linear-gradient(".concat(angleDeg.toFixed(2), "deg, ").concat(stops.join(", "), ")");
} else {
return Object(_libraries_common_cs_text_color_esm_js__WEBPACK_IMPORTED_MODULE_0__["removeAlpha"])(color);
}
};
const applyContextMenuColor = block => {
var _block$textColour;
const widgetDiv = ScratchBlocks.WidgetDiv.DIV;
if (!widgetDiv) {
return;
}
const background = block.svgPath_;
if (!background) {
return;
}
const fill = fixupColor(background.getAttribute("fill"));
const border = background.getAttribute("stroke") || "#0003";
widgetDiv.classList.add("sa-contextmenu-colored");
widgetDiv.style.setProperty("--sa-contextmenu-bg", fill);
widgetDiv.style.setProperty("--sa-contextmenu-border", border);
widgetDiv.style.setProperty("--sa-contextmenu-text", (_block$textColour = block.textColour) !== null && _block$textColour !== void 0 ? _block$textColour : "#fff");
};
const originalHandleRightClick = ScratchBlocks.Gesture.prototype.handleRightClick;
ScratchBlocks.Gesture.prototype.handleRightClick = function () {
const block = this.targetBlock_;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
const ret = originalHandleRightClick.call(this, ...args);
if (block) {
applyContextMenuColor(block);
}
return ret;
};
const originalHide = ScratchBlocks.WidgetDiv.hide;
ScratchBlocks.WidgetDiv.hide = function () {
if (ScratchBlocks.WidgetDiv.DIV) {
ScratchBlocks.WidgetDiv.DIV.classList.remove("sa-contextmenu-colored");
}
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return originalHide.call(this, ...args);
};
});
/***/ })
}]);
//# sourceMappingURL=addon-entry-editor-colored-context-menus.js.map