File size: 6,930 Bytes
9ab1a44 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
(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 |