From 2424d56ff1679ce3849e987914cd5e3f113bc08c Mon Sep 17 00:00:00 2001 From: e016 Date: Thu, 11 Jun 2026 23:00:23 -0600 Subject: [PATCH 01/35] start adding Split! symbols to scratch3 theme --- scratch3/blocks.js | 28 ++++++------- scratch3/draw.js | 2 +- scratch3/style.js | 98 +++++++++++++++++++++++++++++----------------- 3 files changed, 77 insertions(+), 51 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 8b9ab9359..082586ebe 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -447,22 +447,22 @@ export class IconView { loop: { width: 24, height: 24, scale: 1 }, loopArrow: { alias: "loop" }, addInput: { - width: 5, + width: 10, height: 10, color: new Color(0, 0, 0), noShadow: true, }, delInput: { - width: 5, + width: 10, height: 10, color: new Color(0, 0, 0), noShadow: true, }, verticalEllipsis: { - width: 2, - height: 10, - dy: 0, - scale: 10 / 12, + width: 0, + height: 20, + dy: 10, + scale: 10 / 6, color: new Color(0, 0, 0), }, list: { width: 8, height: 10 }, @@ -553,17 +553,17 @@ export class IconView { cubeSolid: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, infinity: { width: 17.5, height: 10, fillAttribute: "stroke" }, - arrowUp: { width: 10, height: 10 }, - arrowUpOutline: { width: 10, height: 10, fillAttribute: "stroke" }, + arrowUp: {}, + arrowUpOutline: { fillAttribute: "stroke" }, arrowUpThin: { width: 10, height: 10, fillAttribute: "stroke" }, - arrowDown: { width: 10, height: 10 }, - arrowDownOutline: { width: 10, height: 10, fillAttribute: "stroke" }, + arrowDown: {}, + arrowDownOutline: { fillAttribute: "stroke" }, arrowDownThin: { width: 10, height: 10, fillAttribute: "stroke" }, - arrowLeft: { width: 10, height: 10 }, - arrowLeftOutline: { width: 10, height: 10, fillAttribute: "stroke" }, + arrowLeft: { }, + arrowLeftOutline: { fillAttribute: "stroke" }, arrowLeftThin: { width: 10, height: 10, fillAttribute: "stroke" }, - arrowRight: { width: 10, height: 10 }, - arrowRightOutline: { width: 10, height: 10, fillAttribute: "stroke" }, + arrowRight: {}, + arrowRightOutline: { fillAttribute: "stroke" }, arrowRightThin: { width: 10, height: 10, fillAttribute: "stroke" }, arrowUpDownThin: { width: 10, height: 10, fillAttribute: "stroke" }, arrowLeftRightThin: { width: 10, height: 10, fillAttribute: "stroke" }, diff --git a/scratch3/draw.js b/scratch3/draw.js index 73bde6267..a06110d0a 100644 --- a/scratch3/draw.js +++ b/scratch3/draw.js @@ -200,7 +200,7 @@ export default class SVG { if (child.isBlock && child.lines.length > 1) { r = Math.max( - child.lines[0].totalHeight, + Math.min(child.lines[0].totalHeight, Infinity ), child.lines[child.lines.length - 1].totalHeight, ) / 2 } diff --git a/scratch3/style.js b/scratch3/style.js index 54204d404..84aef6a1e 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -82,26 +82,15 @@ const highContrastIcons = new Set([ "blocks", "turtlePlus", - "arrowUp", - "arrowUpOutline", "arrowUpThin", - "arrowDown", - "arrowDownOutline", "arrowDownThin", - "arrowLeft", - "arrowLeftOutline", "arrowLeftThin", - "arrowRight", - "arrowRightOutline", "arrowRightThin", "arrowUpDownThin", "arrowLeftRightThin", ]) const snapIcons = new Set([ - "addInput", - "verticalEllipsis", - "delInput", "list", "cloud", "cloudGradient", @@ -167,16 +156,12 @@ const snapIcons = new Set([ "blocks", "turtlePlus", - "arrowUp", "arrowUpOutline", "arrowUpThin", - "arrowDown", "arrowDownOutline", "arrowDownThin", - "arrowLeft", "arrowLeftOutline", "arrowLeftThin", - "arrowRight", "arrowRightOutline", "arrowRightThin", "arrowUpDownThin", @@ -375,6 +360,7 @@ export default class Style { } static makeCommonIcons() { + let arrow; return [ SVG.setProps( SVG.group([ @@ -403,23 +389,51 @@ export default class Style { id: "sb3-octagon", }, ), - - SVG.el("path", { - d: "M 1 1 L 5 5 L 1 9 Z", - id: "sb3-addInput", - }), - SVG.el("path", { - d: "M 1 5 L 5 1 L 5 9 Z", - id: "sb3-delInput", - }), + SVG.setProps( + SVG.group([ + SVG.el("path", { + d: "M12.71,2.44A2.41,2.41,0,0,1,12,4.16L8.08,8.08a2.45,2.45,0,0,1-3.45,0L0.72,4.16A2.42,2.42,0,0,1,0,2.44,2.48,2.48,0,0,1,.71.71C1,0.47,1.43,0,6.36,0S11.75,0.46,12,.71A2.44,2.44,0,0,1,12.71,2.44Z", + fill: "#231f20", + opacity: 0.1, + }), + SVG.el("path", { + d: "M6.36,7.79a1.43,1.43,0,0,1-1-.42L1.42,3.45a1.44,1.44,0,0,1,0-2c0.56-.56,9.31-0.56,9.87,0a1.44,1.44,0,0,1,0,2L7.37,7.37A1.43,1.43,0,0,1,6.36,7.79Z", + }), + ]), + { + id: "sb3-delInput", + transform: + "translate(8.79, 0), rotate(90), translate(-1, 0)" + }, + ), + SVG.setProps( + SVG.group([ + SVG.el("path", { + d: "M12.71,2.44A2.41,2.41,0,0,1,12,4.16L8.08,8.08a2.45,2.45,0,0,1-3.45,0L0.72,4.16A2.42,2.42,0,0,1,0,2.44,2.48,2.48,0,0,1,.71.71C1,0.47,1.43,0,6.36,0S11.75,0.46,12,.71A2.44,2.44,0,0,1,12.71,2.44Z", + fill: "#231f20", + opacity: 0.1, + }), + SVG.el("path", { + d: "M6.36,7.79a1.43,1.43,0,0,1-1-.42L1.42,3.45a1.44,1.44,0,0,1,0-2c0.56-.56,9.31-0.56,9.87,0a1.44,1.44,0,0,1,0,2L7.37,7.37A1.43,1.43,0,0,1,6.36,7.79Z", + }), + ]), + { + id: "sb3-addInput", + transform: + "translate(0, 12.71), rotate(-90), translate(1, 0)" + }, + ), SVG.setProps( SVG.el("path", { - d: `M 2 1 A 1 1 0 1 1 1.9999995000000417 0.9990000001666661 - M 2 5 A 1 1 0 1 1 1.9999995000000417 4.999000000166666 - M 2 9 A 1 1 0 1 1 1.9999995000000417 8.999000000166665`, + // M x y, r r x,l,s x y + d: `M 0 1 A 1 1 0 1 0 1 1 + M 0 5 A 1 1 0 1 0 1 5 + M 0 9 A 1 1 0 1 0 1 9`, }), { id: "sb3-verticalEllipsis", + transform: + "translate(-1, -1)", }, ), SVG.setProps( @@ -811,14 +825,19 @@ export default class Style { }, ), - SVG.setProps( - SVG.el("path", { - d: "M 0.5 5 L 5 0.5 L 9.5 5 L 6.5 5 L 6.5 9.5 L 3.5 9.5 L 3.5 5 Z", - }), + ( + (arrow = SVG.el("path", { + d: "M23 16.7 18.7 21c-.4.3-.9.4-1.3.2s-.7-.6-.7-1.1v-1.6l-6-.8c-1-.1-1.7-.9-1.7-1.9v-.2c.1-.9.8-1.5 1.6-1.6l6-.9v-1.6c0-.5.3-.9.7-1.1.4-.2.9-.1 1.3.3L23 15c.2.2.3.5.3.8l-.3.9z", + stroke: "#000", + "stroke-opacity": 0.1, + "stroke-width": 2, + })), (arrow.style.paintOrder = "stroke"), (arrow.style.transformOrigin = "16px 16px"), SVG.setProps( + arrow, { id: "sb3-arrowUp", + transform: "matrix(0, -1, 1, 0, -10, -5)", }, - ), + )), SVG.setProps( SVG.el("path", { d: "M 0.5 5 L 5 0.5 L 9.5 5 L 6.5 5 L 6.5 9.5 L 3.5 9.5 L 3.5 5 Z", @@ -840,7 +859,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-arrowUp", - transform: "rotate(180 5 5)", + transform: "rotate(180 9 9)", }), { id: "sb3-arrowDown", @@ -867,7 +886,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-arrowUp", - transform: "rotate(-90 5 5)", + transform: "rotate(-90 9 9)", }), { id: "sb3-arrowLeft", @@ -894,7 +913,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-arrowUp", - transform: "rotate(90 5 5)", + transform: "rotate(90 9 9)", }), { id: "sb3-arrowRight", @@ -1977,7 +1996,6 @@ export default class Style { id: "sb3-dropdownArrow", }, ), - SVG.setProps( SVG.el("path", { d: "M6,9 C5.72520708,9 5.45163006,8.89695045 5.24127973,8.68965311 L2.31461357,5.80666227 C1.89512881,5.39326583 1.89512881,4.72464202 2.31461357,4.31004733 C2.73288244,3.89665089 9.26711756,3.89665089 9.68538643,4.31004733 C10.1048712,4.72344377 10.1048712,5.39326583 9.68538643,5.80666227 L6.75993617,8.68965311 C6.54958583,8.89695045 6.27600882,9 6,9", @@ -2216,6 +2234,14 @@ export default class Style { id: "sb3-dropdownArrow-high-contrast", }, ), + SVG.el("path", { + d: "M 1 1 L 5 5 L 1 9 Z", + id: "sb3-addInput", + }), + SVG.el("path", { + d: "M 1 5 L 5 1 L 5 9 Z", + id: "sb3-delInput", + }), SVG.setProps( SVG.el("path", { From 80c45b5839e9b63cdc446e78ec164ff53a9c2ef2 Mon Sep 17 00:00:00 2001 From: e016 Date: Fri, 12 Jun 2026 15:09:35 -0600 Subject: [PATCH 02/35] non-readonly dropdowns and slightly offset arrows --- scratch3/blocks.js | 17 ++++-- scratch3/draw.js | 10 +++- scratch3/style.css.js | 5 +- scratch3/style.js | 128 +++++++++++++++++------------------------- 4 files changed, 73 insertions(+), 87 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 082586ebe..4edd83a2f 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -130,7 +130,7 @@ export class LabelView { : /(boolean|dropdown)/.test(this.cls) ? options.isHighContrast ? new Color() - : new Color(255, 255, 255) + : /(readonly)/.test(this.cls) ? new Color(255, 255, 255) : Color.fromHexString("#575e75") : /literal/.test(this.cls) ? options.isHighContrast ? new Color() @@ -204,8 +204,13 @@ export class LabelView { class: `sb3-label ${cls}`, style: `font: ${font}`, }), - ) - lineGroup[lineGroup.length - 1].style.fill = this.color.toHexString() + ); + let lastLineGroupItem = lineGroup[lineGroup.length - 1] + if (lastLineGroupItem.getAttribute("--stroke")) { + lastLineGroupItem.style.stroke = this.color.toHexString() + } else { + lastLineGroupItem.style.fill = this.color.toHexString() + } x += wordInfo.width height = Math.max(height, wordHeight) first = false @@ -490,7 +495,7 @@ export class IconView { paintbucket: { width: 10, height: 10, fillAttribute: ["stroke", "fill"] }, eraser: { width: 10, height: 10, fillAttribute: ["stroke", "fill"] }, location: { width: 6, height: 10 }, - gears: { width: 10, height: 10 }, + gears: { width: 14, height: 10 }, gearPartial: { width: 10, height: 10 }, gearBig: { width: 10, height: 10 }, globe: { width: 10, height: 10, fillAttribute: "stroke" }, @@ -780,7 +785,7 @@ export class InputView { }) } else if (this.shape === "number-dropdown") { SVG.setProps(el, { - fill: color.secondary.toHexString(), + fill: this.isDarker ? color.secondary.toHexString() : "#FFF", }) } @@ -822,7 +827,7 @@ export class InputView { w - 24, Math.min(h - 20, 13), SVG.symbol( - options.isHighContrast + options.isHighContrast || (!options.isHighContrast && !this.isDarker) ? `#sb3-dropdownArrow-high-contrast-${options.id}` : `#sb3-dropdownArrow-${options.id}`, {}, diff --git a/scratch3/draw.js b/scratch3/draw.js index a06110d0a..229aa87aa 100644 --- a/scratch3/draw.js +++ b/scratch3/draw.js @@ -30,9 +30,13 @@ export default class SVG { return xml.createCDATASection(content) } - static el(name, props) { - const el = document.createElementNS("http://www.w3.org/2000/svg", name) - return SVG.setProps(el, props) + static el(name, props, styles) { + const el = document.createElementNS("http://www.w3.org/2000/svg", name), + withProps = SVG.setProps(el, props) + Object.keys(styles || {}).forEach((key) => { + withProps.style[key] = styles[key]; + }) + return withProps; } static setProps(el, props) { diff --git a/scratch3/style.css.js b/scratch3/style.css.js index 7c0d59927..68688014e 100644 --- a/scratch3/style.css.js +++ b/scratch3/style.css.js @@ -77,8 +77,9 @@ ${name} .sb3-input-string { fill: ${style.inputFill}; } ${name} .sb3-literal-number, -${name} .sb3-literal-string { - fill: ${style.literal}; +${name} .sb3-literal-string, +${name} .sb3-literal-number-dropdown, { + fill: ${style.literal} !important; } ${name} .sb3-custom-arg { diff --git a/scratch3/style.js b/scratch3/style.js index 84aef6a1e..cfde2d24b 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -31,7 +31,6 @@ const highContrastIcons = new Set([ "paintbucket", "eraser", "location", - "gears", "gearPartial", "gearBig", "globe", @@ -106,7 +105,6 @@ const snapIcons = new Set([ "paintbucket", "eraser", "location", - "gears", "gearPartial", "gearBig", "globe", @@ -156,13 +154,9 @@ const snapIcons = new Set([ "blocks", "turtlePlus", - "arrowUpOutline", "arrowUpThin", - "arrowDownOutline", "arrowDownThin", - "arrowLeftOutline", "arrowLeftThin", - "arrowRightOutline", "arrowRightThin", "arrowUpDownThin", "arrowLeftRightThin", @@ -362,6 +356,39 @@ export default class Style { static makeCommonIcons() { let arrow; return [ + SVG.setProps( + SVG.group([ + SVG.el("path", { + d: "M12.71,2.44A2.41,2.41,0,0,1,12,4.16L8.08,8.08a2.45,2.45,0,0,1-3.45,0L0.72,4.16A2.42,2.42,0,0,1,0,2.44,2.48,2.48,0,0,1,.71.71C1,0.47,1.43,0,6.36,0S11.75,0.46,12,.71A2.44,2.44,0,0,1,12.71,2.44Z", + fill: "#231f20", + opacity: ".1", + }), + SVG.el("path", { + d: "M6.36,7.79a1.43,1.43,0,0,1-1-.42L1.42,3.45a1.44,1.44,0,0,1,0-2c0.56-.56,9.31-0.56,9.87,0a1.44,1.44,0,0,1,0,2L7.37,7.37A1.43,1.43,0,0,1,6.36,7.79Z", + fill: "#fff", + }), + ]), + { + id: "sb3-dropdownArrow", + }, + ), + // https://github.com/scratchfoundation/scratch-gui/tree/beta/src/lib/themes/high-contrast/blocks-media + SVG.setProps( + SVG.group([ + SVG.el("path", { + d: "M12.71,2.44A2.41,2.41,0,0,1,12,4.16L8.08,8.08a2.45,2.45,0,0,1-3.45,0L0.72,4.16A2.42,2.42,0,0,1,0,2.44,2.48,2.48,0,0,1,.71.71C1,0.47,1.43,0,6.36,0S11.75,0.46,12,.71A2.44,2.44,0,0,1,12.71,2.44Z", + fill: "#231f20", + opacity: ".1", + }), + SVG.el("path", { + d: "M6.36,7.79a1.43,1.43,0,0,1-1-.42L1.42,3.45a1.44,1.44,0,0,1,0-2c0.56-.56,9.31-0.56,9.87,0a1.44,1.44,0,0,1,0,2L7.37,7.37A1.43,1.43,0,0,1,6.36,7.79Z", + fill: "#000", + }), + ]), + { + id: "sb3-dropdownArrow-high-contrast", + }, + ), SVG.setProps( SVG.group([ SVG.el("path", { @@ -699,37 +726,12 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - d: `M 10 5 - L 9.619397662556434 6.913417161825449 A 5 5 0 0 1 9.30814580220763 7.53769181480352 - L 7.867032155011471 7.007517527228661 A 3.5 3.5 0 0 1 7.007517527228661 7.867032155011471 - L 7.537691814803521 9.30814580220763 A 5 5 0 0 1 6.913417161825449 9.619397662556434 - L 6.913417161825449 9.619397662556434 A 5 5 0 0 1 6.251900020272208 9.840738201890538 - L 5.607768621834256 8.446827135542728 A 3.5 3.5 0 0 1 4.392231378165744 8.446827135542728 - L 3.748099979727793 9.840738201890538 A 5 5 0 0 1 3.0865828381745515 9.619397662556434 - L 3.0865828381745515 9.619397662556434 A 5 5 0 0 1 2.4623081851964783 9.30814580220763 - L 2.9924824727713397 7.867032155011472 A 3.5 3.5 0 0 1 2.1329678449885296 7.0075175272286625 - L 0.691854197792372 7.537691814803522 A 5 5 0 0 1 0.3806023374435661 6.91341716182545 - L 0.3806023374435661 6.91341716182545 A 5 5 0 0 1 0.15926179810946106 6.251900020272206 - L 1.553172864457272 5.607768621834256 A 3.5 3.5 0 0 1 1.553172864457272 4.392231378165743 - L 0.15926179810946106 3.748099979727792 A 5 5 0 0 1 0.3806023374435652 3.0865828381745537 - L 0.3806023374435652 3.0865828381745537 A 5 5 0 0 1 0.6918541977923702 2.4623081851964805 - L 2.132967844988528 2.9924824727713397 A 3.5 3.5 0 0 1 2.9924824727713375 2.1329678449885296 - L 2.4623081851964796 0.6918541977923711 A 5 5 0 0 1 3.0865828381745524 0.3806023374435661 - L 3.0865828381745524 0.3806023374435661 A 5 5 0 0 1 3.7480999797277907 0.15926179810946195 - L 4.392231378165744 1.553172864457272 A 3.5 3.5 0 0 1 5.607768621834255 1.5531728644572715 - L 6.251900020272207 0.15926179810946106 A 5 5 0 0 1 6.91341716182545 0.380602337443567 - L 6.91341716182545 0.380602337443567 A 5 5 0 0 1 7.537691814803523 0.6918541977923729 - L 7.007517527228661 2.1329678449885288 A 3.5 3.5 0 0 1 7.86703215501147 2.9924824727713375 - L 9.308145802207626 2.4623081851964757 A 5 5 0 0 1 9.619397662556434 3.086582838174552 - L 9.619397662556434 3.086582838174552 A 5 5 0 0 1 9.840738201890538 3.7480999797277903 - L 8.446827135542728 4.39223137816574 A 3.5 3.5 0 0 1 8.446827135542728 5.607768621834255 - L 9.840738201890538 6.251900020272208 A 5 5 0 0 1 9.619397662556434 6.913417161825446 - L 10 5 - L 6.5 5 A 1.5 1.5 0 1 1 6.499999250000062 4.998500000249999`, + d: `M8.27206 2.68377C8.40818 2.27543 8.79032 2 9.22075 2H10.7792C11.2097 2 11.5918 2.27543 11.7279 2.68377L12.3219 4.4658C12.7914 4.663 13.2304 4.91818 13.6302 5.22238L15.4721 4.84547C15.8938 4.75917 16.3234 4.9524 16.5386 5.32516L17.3178 6.67485C17.533 7.04761 17.4856 7.51627 17.2 7.83832L15.9529 9.24468C15.984 9.49208 16 9.74417 16 10C16 10.2558 15.984 10.5079 15.9529 10.7553L17.2 12.1617C17.4856 12.4837 17.533 12.9524 17.3178 13.3252L16.5386 14.6748C16.3234 15.0476 15.8938 15.2408 15.4721 15.1545L13.6302 14.7776C13.2304 15.0818 12.7914 15.337 12.3219 15.5342L11.7279 17.3162C11.5918 17.7246 11.2097 18 10.7792 18H9.22075C8.79032 18 8.40818 17.7246 8.27206 17.3162L7.67805 15.5342C7.20862 15.337 6.76955 15.0818 6.36982 14.7776L4.52792 15.1545C4.10623 15.2408 3.67663 15.0476 3.46141 14.6748L2.68217 13.3252C2.46696 12.9524 2.51442 12.4837 2.8 12.1617L4.04708 10.7553C4.016 10.5079 3.99999 10.2558 3.99999 10C3.99999 9.74416 4.016 9.49207 4.04707 9.24466L2.8 7.83832C2.51442 7.51627 2.46696 7.04761 2.68217 6.67485L3.46141 5.32516C3.67663 4.9524 4.10623 4.75917 4.52792 4.84547L6.3698 5.22238C6.76954 4.91818 7.20861 4.663 7.67805 4.4658L8.27206 2.68377ZM9.99999 8C8.89542 8 7.99999 8.89543 7.99999 10C7.99999 11.1046 8.89542 12 9.99999 12C11.1046 12 12 11.1046 12 10C12 8.89543 11.1046 8 9.99999 8Z`, "fill-rule": "evenodd", }), { id: "sb3-gears", + transform: "translate(-2, -4)" }, ), SVG.setProps( @@ -824,27 +826,34 @@ export default class Style { id: "sb3-robot", }, ), - - ( - (arrow = SVG.el("path", { + SVG.setProps( + SVG.el("path", { d: "M23 16.7 18.7 21c-.4.3-.9.4-1.3.2s-.7-.6-.7-1.1v-1.6l-6-.8c-1-.1-1.7-.9-1.7-1.9v-.2c.1-.9.8-1.5 1.6-1.6l6-.9v-1.6c0-.5.3-.9.7-1.1.4-.2.9-.1 1.3.3L23 15c.2.2.3.5.3.8l-.3.9z", stroke: "#000", "stroke-opacity": 0.1, "stroke-width": 2, - })), (arrow.style.paintOrder = "stroke"), (arrow.style.transformOrigin = "16px 16px"), SVG.setProps( - arrow, + }, { + paintOrder: "stroke", + transformOrigin: "13px 13px" + }), { id: "sb3-arrowUp", transform: "matrix(0, -1, 1, 0, -10, -5)", }, - )), + ), SVG.setProps( SVG.el("path", { - d: "M 0.5 5 L 5 0.5 L 9.5 5 L 6.5 5 L 6.5 9.5 L 3.5 9.5 L 3.5 5 Z", + d: "M22.6 16.3zM16.2 19l-5.6-.8a2.5 2.5 0 0 1-2.1-2.4v-.3c.2-1.1 1-1.9 2-2l5.6-.8v-1.1c0-.7.4-1.3 1-1.6.6-.3 1.3-.1 1.8.4l4.3 4.3c.3.3.5.7.5 1.2 0 .4-.2.9-.5 1.2L19 21.4c-.5.5-1.2.6-1.8.3-.6-.3-1-.9-1-1.5V19z", fill: "none", + "stroke-width": 1, + }, { + paintOrder: "stroke", + transformOrigin: "13px 13px" }), { id: "sb3-arrowUpOutline", + transform: "matrix(0, -1, 1, 0, -10, -5)", + "--stroke": true }, ), SVG.setProps( @@ -859,7 +868,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-arrowUp", - transform: "rotate(180 9 9)", + transform: "rotate(180 5 5)", }), { id: "sb3-arrowDown", @@ -886,7 +895,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-arrowUp", - transform: "rotate(-90 9 9)", + transform: "rotate(-90 5 5)", }), { id: "sb3-arrowLeft", @@ -913,7 +922,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-arrowUp", - transform: "rotate(90 9 9)", + transform: "rotate(90 5 5)", }), { id: "sb3-arrowRight", @@ -1980,22 +1989,6 @@ export default class Style { static makeOriginalIcons() { return [ ...Style.makeCommonIcons(), - SVG.setProps( - SVG.group([ - SVG.el("path", { - d: "M12.71,2.44A2.41,2.41,0,0,1,12,4.16L8.08,8.08a2.45,2.45,0,0,1-3.45,0L0.72,4.16A2.42,2.42,0,0,1,0,2.44,2.48,2.48,0,0,1,.71.71C1,0.47,1.43,0,6.36,0S11.75,0.46,12,.71A2.44,2.44,0,0,1,12.71,2.44Z", - fill: "#231f20", - opacity: ".1", - }), - SVG.el("path", { - d: "M6.36,7.79a1.43,1.43,0,0,1-1-.42L1.42,3.45a1.44,1.44,0,0,1,0-2c0.56-.56,9.31-0.56,9.87,0a1.44,1.44,0,0,1,0,2L7.37,7.37A1.43,1.43,0,0,1,6.36,7.79Z", - fill: "#fff", - }), - ]), - { - id: "sb3-dropdownArrow", - }, - ), SVG.setProps( SVG.el("path", { d: "M6,9 C5.72520708,9 5.45163006,8.89695045 5.24127973,8.68965311 L2.31461357,5.80666227 C1.89512881,5.39326583 1.89512881,4.72464202 2.31461357,4.31004733 C2.73288244,3.89665089 9.26711756,3.89665089 9.68538643,4.31004733 C10.1048712,4.72344377 10.1048712,5.39326583 9.68538643,5.80666227 L6.75993617,8.68965311 C6.54958583,8.89695045 6.27600882,9 6,9", @@ -2217,23 +2210,6 @@ export default class Style { // Make sure to update the highContrastIcons set above! return [ ...Style.makeCommonIcons(), - // https://github.com/scratchfoundation/scratch-gui/tree/beta/src/lib/themes/high-contrast/blocks-media - SVG.setProps( - SVG.group([ - SVG.el("path", { - d: "M12.71,2.44A2.41,2.41,0,0,1,12,4.16L8.08,8.08a2.45,2.45,0,0,1-3.45,0L0.72,4.16A2.42,2.42,0,0,1,0,2.44,2.48,2.48,0,0,1,.71.71C1,0.47,1.43,0,6.36,0S11.75,0.46,12,.71A2.44,2.44,0,0,1,12.71,2.44Z", - fill: "#231f20", - opacity: ".1", - }), - SVG.el("path", { - d: "M6.36,7.79a1.43,1.43,0,0,1-1-.42L1.42,3.45a1.44,1.44,0,0,1,0-2c0.56-.56,9.31-0.56,9.87,0a1.44,1.44,0,0,1,0,2L7.37,7.37A1.43,1.43,0,0,1,6.36,7.79Z", - fill: "#000", - }), - ]), - { - id: "sb3-dropdownArrow-high-contrast", - }, - ), SVG.el("path", { d: "M 1 1 L 5 5 L 1 9 Z", id: "sb3-addInput", From f9dabc3314544b07b2f4d3e7b110f0c75f50293b Mon Sep 17 00:00:00 2001 From: e016 <244850916+e016@users.noreply.github.com> Date: Fri, 12 Jun 2026 21:10:22 +0000 Subject: [PATCH 03/35] Format code using Prettier --- scratch3/blocks.js | 11 +++++---- scratch3/draw.js | 10 ++++---- scratch3/style.js | 57 +++++++++++++++++++++++++--------------------- 3 files changed, 43 insertions(+), 35 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 4edd83a2f..c840bb5be 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -130,7 +130,9 @@ export class LabelView { : /(boolean|dropdown)/.test(this.cls) ? options.isHighContrast ? new Color() - : /(readonly)/.test(this.cls) ? new Color(255, 255, 255) : Color.fromHexString("#575e75") + : /(readonly)/.test(this.cls) + ? new Color(255, 255, 255) + : Color.fromHexString("#575e75") : /literal/.test(this.cls) ? options.isHighContrast ? new Color() @@ -204,7 +206,7 @@ export class LabelView { class: `sb3-label ${cls}`, style: `font: ${font}`, }), - ); + ) let lastLineGroupItem = lineGroup[lineGroup.length - 1] if (lastLineGroupItem.getAttribute("--stroke")) { lastLineGroupItem.style.stroke = this.color.toHexString() @@ -564,7 +566,7 @@ export class IconView { arrowDown: {}, arrowDownOutline: { fillAttribute: "stroke" }, arrowDownThin: { width: 10, height: 10, fillAttribute: "stroke" }, - arrowLeft: { }, + arrowLeft: {}, arrowLeftOutline: { fillAttribute: "stroke" }, arrowLeftThin: { width: 10, height: 10, fillAttribute: "stroke" }, arrowRight: {}, @@ -827,7 +829,8 @@ export class InputView { w - 24, Math.min(h - 20, 13), SVG.symbol( - options.isHighContrast || (!options.isHighContrast && !this.isDarker) + options.isHighContrast || + (!options.isHighContrast && !this.isDarker) ? `#sb3-dropdownArrow-high-contrast-${options.id}` : `#sb3-dropdownArrow-${options.id}`, {}, diff --git a/scratch3/draw.js b/scratch3/draw.js index 229aa87aa..e4c279034 100644 --- a/scratch3/draw.js +++ b/scratch3/draw.js @@ -32,11 +32,11 @@ export default class SVG { static el(name, props, styles) { const el = document.createElementNS("http://www.w3.org/2000/svg", name), - withProps = SVG.setProps(el, props) - Object.keys(styles || {}).forEach((key) => { - withProps.style[key] = styles[key]; + withProps = SVG.setProps(el, props) + Object.keys(styles || {}).forEach(key => { + withProps.style[key] = styles[key] }) - return withProps; + return withProps } static setProps(el, props) { @@ -204,7 +204,7 @@ export default class SVG { if (child.isBlock && child.lines.length > 1) { r = Math.max( - Math.min(child.lines[0].totalHeight, Infinity ), + Math.min(child.lines[0].totalHeight, Infinity), child.lines[child.lines.length - 1].totalHeight, ) / 2 } diff --git a/scratch3/style.js b/scratch3/style.js index cfde2d24b..03bb111a6 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -354,7 +354,7 @@ export default class Style { } static makeCommonIcons() { - let arrow; + let arrow return [ SVG.setProps( SVG.group([ @@ -429,8 +429,7 @@ export default class Style { ]), { id: "sb3-delInput", - transform: - "translate(8.79, 0), rotate(90), translate(-1, 0)" + transform: "translate(8.79, 0), rotate(90), translate(-1, 0)", }, ), SVG.setProps( @@ -446,8 +445,7 @@ export default class Style { ]), { id: "sb3-addInput", - transform: - "translate(0, 12.71), rotate(-90), translate(1, 0)" + transform: "translate(0, 12.71), rotate(-90), translate(1, 0)", }, ), SVG.setProps( @@ -459,8 +457,7 @@ export default class Style { }), { id: "sb3-verticalEllipsis", - transform: - "translate(-1, -1)", + transform: "translate(-1, -1)", }, ), SVG.setProps( @@ -731,7 +728,7 @@ export default class Style { }), { id: "sb3-gears", - transform: "translate(-2, -4)" + transform: "translate(-2, -4)", }, ), SVG.setProps( @@ -827,33 +824,41 @@ export default class Style { }, ), SVG.setProps( - SVG.el("path", { - d: "M23 16.7 18.7 21c-.4.3-.9.4-1.3.2s-.7-.6-.7-1.1v-1.6l-6-.8c-1-.1-1.7-.9-1.7-1.9v-.2c.1-.9.8-1.5 1.6-1.6l6-.9v-1.6c0-.5.3-.9.7-1.1.4-.2.9-.1 1.3.3L23 15c.2.2.3.5.3.8l-.3.9z", - stroke: "#000", - "stroke-opacity": 0.1, - "stroke-width": 2, - }, { - paintOrder: "stroke", - transformOrigin: "13px 13px" - }), + SVG.el( + "path", + { + d: "M23 16.7 18.7 21c-.4.3-.9.4-1.3.2s-.7-.6-.7-1.1v-1.6l-6-.8c-1-.1-1.7-.9-1.7-1.9v-.2c.1-.9.8-1.5 1.6-1.6l6-.9v-1.6c0-.5.3-.9.7-1.1.4-.2.9-.1 1.3.3L23 15c.2.2.3.5.3.8l-.3.9z", + stroke: "#000", + "stroke-opacity": 0.1, + "stroke-width": 2, + }, + { + paintOrder: "stroke", + transformOrigin: "13px 13px", + }, + ), { id: "sb3-arrowUp", transform: "matrix(0, -1, 1, 0, -10, -5)", }, ), SVG.setProps( - SVG.el("path", { - d: "M22.6 16.3zM16.2 19l-5.6-.8a2.5 2.5 0 0 1-2.1-2.4v-.3c.2-1.1 1-1.9 2-2l5.6-.8v-1.1c0-.7.4-1.3 1-1.6.6-.3 1.3-.1 1.8.4l4.3 4.3c.3.3.5.7.5 1.2 0 .4-.2.9-.5 1.2L19 21.4c-.5.5-1.2.6-1.8.3-.6-.3-1-.9-1-1.5V19z", - fill: "none", - "stroke-width": 1, - }, { - paintOrder: "stroke", - transformOrigin: "13px 13px" - }), + SVG.el( + "path", + { + d: "M22.6 16.3zM16.2 19l-5.6-.8a2.5 2.5 0 0 1-2.1-2.4v-.3c.2-1.1 1-1.9 2-2l5.6-.8v-1.1c0-.7.4-1.3 1-1.6.6-.3 1.3-.1 1.8.4l4.3 4.3c.3.3.5.7.5 1.2 0 .4-.2.9-.5 1.2L19 21.4c-.5.5-1.2.6-1.8.3-.6-.3-1-.9-1-1.5V19z", + fill: "none", + "stroke-width": 1, + }, + { + paintOrder: "stroke", + transformOrigin: "13px 13px", + }, + ), { id: "sb3-arrowUpOutline", transform: "matrix(0, -1, 1, 0, -10, -5)", - "--stroke": true + "--stroke": true, }, ), SVG.setProps( From 8c6747d54fa5126f36a413e0b3fc53b9af7b9a65 Mon Sep 17 00:00:00 2001 From: e016 Date: Fri, 12 Jun 2026 17:09:27 -0600 Subject: [PATCH 04/35] add more Split! symbols --- scratch3/blocks.js | 19 ++++--- scratch3/style.js | 131 +++++++++++---------------------------------- 2 files changed, 39 insertions(+), 111 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index c840bb5be..190d423db 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -487,17 +487,16 @@ export class IconView { circle: { width: 10, height: 10, fillAttribute: "stroke" }, notes: { alias: "musicBlock" }, storage: { width: 10, height: 10, fillAttribute: ["stroke", "fill"] }, - brush: { width: 10, height: 10, fillAttribute: ["stroke", "fill"] }, + brush: { width: 14, height: 14, scale: 1.4 }, pipette: { - width: 10, - height: 10, - scale: 1, - fillAttribute: ["stroke", "fill"], + width: 16, + height: 14, + scale: 1.4 }, - paintbucket: { width: 10, height: 10, fillAttribute: ["stroke", "fill"] }, - eraser: { width: 10, height: 10, fillAttribute: ["stroke", "fill"] }, + paintbucket: { width: 14, height: 14, scale: 1.4 }, + eraser: { width: 14, height: 14, scale: 1.4 }, location: { width: 6, height: 10 }, - gears: { width: 14, height: 10 }, + gears: { width: 18, height: 10, scale: 1.2 }, gearPartial: { width: 10, height: 10 }, gearBig: { width: 10, height: 10 }, globe: { width: 10, height: 10, fillAttribute: "stroke" }, @@ -505,7 +504,7 @@ export class IconView { square: { width: 10, height: 10 }, robot: { width: 10, height: 10 }, stepForward: { width: 10, height: 10 }, - file: { width: 8, height: 10 }, + file: { width: 18, height: 18, scale: 1.2 }, fullScreen: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, grow: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, normalScreen: { @@ -554,7 +553,7 @@ export class IconView { height: 10, fillAttribute: ["fill", "stroke"], }, - trash: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, + trash: { width: 15, height: 15 }, trashFull: { width: 10, height: 10 }, cube: { width: 10, height: 10, fillAttribute: "stroke" }, cubeSolid: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, diff --git a/scratch3/style.js b/scratch3/style.js index 03bb111a6..61ed374b5 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -26,10 +26,6 @@ const highContrastIcons = new Set([ "circleSolid", "notes", "storage", - "brush", - "pipette", - "paintbucket", - "eraser", "location", "gearPartial", "gearBig", @@ -39,7 +35,6 @@ const highContrastIcons = new Set([ "robot", "pointRight", "stepForward", - "file", "fullScreen", "grow", "normalScreen", @@ -54,7 +49,6 @@ const highContrastIcons = new Set([ "rectangle", "rectangleSolid", "dot", - "line", "cross", "crosshairs", "speechBubble", @@ -72,7 +66,6 @@ const highContrastIcons = new Set([ "listNarrow", "flipHorizontal", "flipVertical", - "trash", "trashFull", "cube", "cubeSolid", @@ -100,10 +93,6 @@ const snapIcons = new Set([ "circle", "circleSolid", "storage", - "brush", - "pipette", - "paintbucket", - "eraser", "location", "gearPartial", "gearBig", @@ -113,7 +102,6 @@ const snapIcons = new Set([ "robot", "pointRight", "stepForward", - "file", "fullScreen", "grow", "normalScreen", @@ -145,7 +133,7 @@ const snapIcons = new Set([ "listNarrow", "flipHorizontal", "flipVertical", - "trash", + "trashFull", "cube", "cubeSolid", @@ -636,80 +624,39 @@ export default class Style { }, ), SVG.setProps( - SVG.group([ - SVG.el("path", { - d: "M 3.75 5 Q 0 5 0.5 9.5 Q 5 10 5 6.25 Z", - "stroke-width": 1, - }), - SVG.el("path", { - d: "M 3.75 5 L 7.5 0.5 Q 10 0 9.5 2.5 L 5 6.25", - "stroke-width": 1, - fill: "none", - "stroke-linejoin": "round", - "stroke-linecap": "round", - }), - ]), + SVG.el("path", { + d: "M12.5787225,11.2102026 C11.6196284,12.1692967 10.9129274,12.6614634 10.3576624,12.8507583 C10.1936069,12.3459719 9.91597437,11.8790445 9.52476494,11.4878351 C9.12093585,11.0966257 8.65400846,10.8189932 8.14922209,10.6423179 C8.35113664,10.0870529 8.84330335,9.38035203 9.78977778,8.43387759 C12.0613164,6.14971929 16.0996074,3.36077461 16.8694066,4.13057382 C17.6392058,4.90037303 14.8502611,8.93866396 12.5787225,11.2102026 Z M8.39124334,15.4120104 C8.01569197,15.7748657 7.53110955,15.9621459 7.04652713,15.9855559 L7.04652713,15.9972609 L6.92538153,15.9972609 C3.67867934,16.114311 2.26127577,12.4389379 3.37581533,12.8252032 C4.84167714,13.3285186 5.43650205,12.602808 5.45951972,12.579398 C6.27119527,11.8068673 7.57956779,11.8068673 8.39124334,12.579398 C9.20291889,13.3636337 9.20291889,14.6394798 8.39124334,15.4120104 Z", + }), { id: "sb3-brush", + transform: "translate(-2, -3)" }, ), SVG.setProps( - SVG.group([ - SVG.el("path", { - d: `M 0.5 9.5 Q 1.25 8.75 1.25 7.5 L 5 3.75 - M 0.5 9.5 Q 1.25 8.75 2.5 8.75 L 6.25 5 - M 5 2.5 L 7.5 5`, - "stroke-width": 1, - fill: "none", - }), - SVG.el("path", { - d: "M 9.5 2.5 A 2 2 0 1 1 9.499999000000084 2.4980000003333322", - stroke: "none", - }), - ]), + SVG.el("path", { + d: "M9.15334605,12.4824962 C9.03394044,12.6188737 8.88041895,12.7041096 8.60749186,12.7722983 C7.90811618,12.925723 7.24285639,13.5564688 7.03816107,14.2554033 C6.9699293,14.4770167 6.74817603,14.7156773 6.50936483,14.8350076 L4.73533871,15.6703196 C4.650049,15.704414 4.58181722,15.7214612 4.54770134,15.7214612 L4.27477424,15.4657534 C4.27477424,15.4487062 4.27477424,15.3805175 4.32594807,15.2611872 L5.1617873,13.4712329 C5.26413496,13.2496195 5.50294617,13.0280061 5.74175737,12.9598174 C6.44113305,12.738204 7.07227696,12.090411 7.25991433,11.2380518 C7.29403022,11.1016743 7.37931994,10.9652968 7.49872554,10.8289193 L11.4391105,6.90806697 L13.093731,8.56164384 L9.15334605,12.4824962 Z M16.6076673,5.28858447 C16.8635365,5.03287671 17,4.67488584 17,4.33394216 C17,3.99299848 16.8635365,3.65205479 16.6076673,3.39634703 C16.0788711,2.86788432 15.2430318,2.86788432 14.7142356,3.39634703 L13.2301945,4.87945205 L13.0596151,4.70898021 L12.5137609,4.16347032 C12.172602,3.82252664 11.6096899,3.82252664 11.268531,4.16347032 L10.6032712,4.81126332 C10.2791703,5.152207 10.2621124,5.64657534 10.5520974,5.98751903 L6.59465454,9.92541857 C6.30466951,10.2322679 6.09997418,10.5902588 5.98056858,11.1016743 C5.92939475,11.357382 5.63940971,11.6471842 5.36648262,11.7324201 C4.80357049,11.9028919 4.2577163,12.3802131 4.00184715,12.9427702 L3.16600792,14.7156773 C2.89308083,15.3123288 2.9613126,15.9260274 3.33658736,16.3181126 L3.67774623,16.6590563 C3.89949949,16.8806697 4.20654247,17 4.54770134,17 C4.7694546,17 5.02532375,16.9318113 5.26413496,16.8295282 L7.05521901,15.9942161 C7.61813114,15.7214612 8.09575356,15.1929985 8.26633299,14.6304414 C8.33456477,14.3576865 8.64160775,14.0678843 9.05099839,13.9826484 C9.4092152,13.8974125 9.76743201,13.6928463 10.057417,13.385997 L14.0148599,9.44809741 C14.3560188,9.73789954 14.8677571,9.70380518 15.1748001,9.37990868 L15.8400599,8.73211568 C16.1812187,8.39117199 16.1812187,7.82861492 15.8400599,7.48767123 L15.2600898,6.90806697 L15.1236262,6.7716895 L16.6076673,5.28858447 Z", + }), { id: "sb3-pipette", + transform: "translate(-2, -3)" }, ), SVG.setProps( - SVG.group([ - SVG.el("path", { - d: "M 4 2 L 8 6 L 6 8 Q 4 10 2 8 Q 0 6 2 4 Z", - "stroke-width": 1, - fill: "none", - }), - SVG.el("path", { - d: `M 4.5 5 A 0.5 0.5 0 1 1 4.499999750000021 4.999500000083333 - M 4 5 L 4 1.5 - M 4 1.5 A 1 1 0 1 0 2 1.5000000000000002 - M 2 1.5 L 2 4`, - "stroke-width": 0.5, - fill: "none", - }), - SVG.el("path", { - d: "M 7 7 Q 10 7 9.5 10 L 10 10 Q 10 4 5 3 L 8 6 Z", - "stroke-width": 0.5, - // stroke: "none", - }), - ]), + SVG.el("path", { + d: "M14.0450969,9.69349504 L14.0306818,9.67916207 C13.4396629,9.36383682 12.5170968,8.69018743 11.4215496,7.60088203 C11.0900024,7.27122381 10.7872854,6.95589857 10.5422288,6.65490628 C10.71521,6.4399118 10.8881911,6.22491731 11.0611722,6.00992282 C11.3783043,6.26791621 11.7242666,6.58324146 12.084644,6.9415656 C12.3152855,7.17089305 12.5026817,7.37155458 12.690078,7.5722161 C12.7189081,7.61521499 12.7621534,7.65821389 12.8198138,7.70121279 C13.6270591,8.6185226 14.1027573,9.36383682 14.3189837,9.7938258 C14.3189837,9.80815877 14.3333988,9.82249173 14.3333988,9.8368247 C14.2469082,9.7938258 14.1460025,9.7508269 14.0450969,9.69349504 M10.5998892,10.0661521 C9.7349835,10.53914 8.91332309,10.983462 7.61596455,10.6824697 C6.17445506,10.3528115 5.4825305,9.76515987 5.19422861,9.42116869 L8.3078891,5.40793826 C8.52411553,5.83792723 8.84124762,6.28224917 9.1727948,6.69790518 C8.82683252,7.21389195 8.55294572,7.64388093 8.42320986,7.84454245 C8.27905891,8.08820287 8.35113439,8.41786108 8.6106061,8.5755237 C8.69709667,8.63285557 8.79800233,8.6615215 8.8844929,8.6615215 C9.07188913,8.6615215 9.24487027,8.56119074 9.34577594,8.40352811 C9.50434198,8.13120176 9.69173821,7.84454245 9.89354954,7.55788313 C10.1962665,7.90187431 10.4701533,8.17420066 10.6575496,8.36052922 C11.0755873,8.77618523 11.4936251,9.14884234 11.8972477,9.47850055 C11.4215496,9.60749724 11.0035119,9.85115766 10.5998892,10.0661521 M10.2106816,5.33627343 C10.0953609,5.49393605 9.96562502,5.65159868 9.85030426,5.79492834 C9.50434198,5.33627343 9.28811556,4.96361632 9.1727948,4.70562293 C9.41785141,4.80595369 9.76381369,5.02094818 10.2106816,5.33627343 M13.5117384,4.07497244 C13.6703044,4.07497244 13.8432855,4.10363837 13.8721157,4.1753032 C14.0450969,4.49062845 13.6270591,5.49393605 13.0648704,6.3969129 L12.848644,6.18191841 C12.6180025,5.95259096 12.2287949,5.59426681 11.781927,5.20727674 C12.4450213,4.53362734 13.0504553,4.07497244 13.5117384,4.07497244 M16.5533234,12.1587652 C16.337097,11.5997795 15.9911347,11.0981257 15.587512,10.6681367 C15.5442667,10.6108049 15.4866064,10.567806 15.428946,10.5248071 C15.6740026,9.99448732 15.2703799,9.23484013 14.9244177,8.69018743 C14.6505309,8.24586549 14.2757384,7.74421169 13.8288705,7.24255788 C14.3910592,6.38257993 15.3568705,4.676957 14.8379271,3.67364939 C14.679361,3.37265711 14.3189837,3 13.5117384,3 L13.4973233,3 C12.6756629,3 11.7675119,3.65931643 10.9458515,4.51929438 C10.0232854,3.84564498 9.01422875,3.31532525 8.40879477,3.65931643 C8.35113439,3.68798236 8.27905891,3.71664829 8.23581363,3.77398015 C8.22139853,3.78831312 8.19256835,3.80264609 8.17815325,3.83131202 C8.16373816,3.84564498 8.14932306,3.85997795 8.13490797,3.88864388 L8.12049287,3.91730981 L4.12751158,9.04851158 C4.11309649,9.04851158 4.11309649,9.04851158 4.09868139,9.06284454 L3.20494551,10.2238148 L3.16170023,10.2668137 C3.11845494,10.3098126 3.08962475,10.3671444 3.07520966,10.4101433 L3.07520966,10.4244763 C2.62834171,11.3417861 4.28607763,13.1334068 5.06449275,13.92172 C5.75641731,14.6097023 7.28441737,16 8.23581363,16 C8.43762496,16 8.596191,15.9426681 8.74034195,15.8136714 L14.2613233,11.5567806 C14.2901535,11.5424476 14.3045686,11.5137817 14.3333988,11.4851158 C14.362229,11.5137817 14.3766441,11.5567806 14.3910592,11.5854465 C14.5640403,11.9294377 14.679361,12.2877619 14.6937761,12.6747519 C14.7370214,13.061742 14.7081912,13.463065 14.6505309,13.8500551 L14.6505309,13.8643881 C14.6361158,13.9790518 14.6361158,14.0793826 14.6505309,14.1940463 C14.7514365,14.8390298 15.3568705,15.2833517 15.9911347,15.1830209 C16.639814,15.0826902 17.0866819,14.4807056 16.9857762,13.8357222 C16.8992857,13.2767365 16.7839649,12.7034179 16.5533234,12.1587652", + }), { id: "sb3-paintbucket", + transform: "translate(-2, -3)" }, ), SVG.setProps( - SVG.group([ - SVG.el("path", { - d: "M 7.5 0.5 L 0.5 7.5 Q 2.5 10 5 7.5 L 9.5 2.5 Z", - "stroke-width": 1, - fill: "none", - }), - SVG.el("path", { - d: "M 7.5 0 L 3.75 3.75 L 6.25 6.25 L 10 2.5 Z", - stroke: "none", - }), - ]), + SVG.el("path", { + d: "M13.5370061,14.8291597 L10.9660545,14.8291597 L8.3016138,12.164719 L11.1686144,9.29771842 L15.1263216,13.2554257 L13.5370061,14.8291597 Z M16.7779633,12.6944908 L11.1686144,7.10072343 L8.3016138,4.23372287 C8.00556483,3.92209238 7.50695604,3.92209238 7.19532554,4.23372287 L3.22203673,8.20701169 C2.92598776,8.50306066 2.92598776,9.00166945 3.22203673,9.29771842 L6.10461881,12.164719 L10.0934891,16.1535893 C10.2337229,16.3094046 10.4362827,16.3873122 10.6388425,16.3873122 L13.8642181,16.3873122 C14.066778,16.3873122 14.2693378,16.3094046 14.4095715,16.1535893 L16.7779633,13.8007791 C17.0740122,13.5047301 17.0740122,13.0061213 16.7779633,12.6944908 L16.7779633,12.6944908 Z", + }), { id: "sb3-eraser", + transform: "translate(-2, -3)" }, ), SVG.setProps( @@ -728,7 +675,7 @@ export default class Style { }), { id: "sb3-gears", - transform: "translate(-2, -4)", + transform: "translate(-2, -5)", }, ), SVG.setProps( @@ -986,17 +933,14 @@ export default class Style { }, ), SVG.setProps( - SVG.group([ - SVG.el("path", { - d: "M 0 0 L 4 0 L 4 4 L 8 4 L 8 10 L 0 10 Z", - }), - SVG.el("path", { - d: "M 4 0 L 8 4 L 4 4 L 4 0 Z", - filter: "brightness(0.75)", - }), - ]), + SVG.el("path", { + d: "M4.98116 1H15.0196C16.4042 1 17.6158 2.21154 17.6158 3.59615V10.8654H13.635C11.385 10.8654 9.65424 12.7692 9.65424 14.8462V18.8269H4.98116C3.59655 18.8269 2.38501 17.6154 2.38501 16.2308V3.59615C2.38501 2.21154 3.59655 1 4.98116 1ZM6.01963 9.82692H8.78886C9.48116 9.82692 10.0004 9.48077 10.0004 8.78846C10.0004 8.09615 9.48116 7.75 8.96193 7.75H6.01963C5.50039 7.75 4.98116 8.26923 4.98116 8.78846C4.98116 9.30769 5.50039 9.82692 6.01963 9.82692ZM14.1542 5.84615H6.01963C5.32732 5.84615 4.98116 5.32692 4.98116 4.80769C4.98116 4.28846 5.50039 3.76923 6.01963 3.76923H14.1542C14.6735 3.76923 15.1927 4.28846 15.1927 4.80769C15.0196 5.32692 14.6735 5.84615 14.1542 5.84615ZM17.4427 12.25H13.4619C12.0773 12.25 10.8658 13.4615 10.8658 15.0192V19L17.4427 12.25Z", + "fill-rule": "evenodd", + "clip-rule": "evenodd", + }), { id: "sb3-file", + transform: "translate(-1, 0)", }, ), SVG.setProps( @@ -1229,9 +1173,9 @@ export default class Style { ), SVG.setProps( SVG.el("line", { - x1: 0.5, + x1: 9.5, y1: 0.5, - x2: 9.5, + x2: 0.5, y2: 9.5, "stroke-width": 1, "stroke-linecap": "round", @@ -1538,27 +1482,12 @@ export default class Style { }, ), SVG.setProps( - SVG.group([ - SVG.el("path", { - d: `M 1 2.5 L 1.5 9.5 L 2.5 10 L 7.5 10 L 8.5 9.5 L 9 2.5 L 1 2.5 - M 2.5 4 A 0.5 0.5 0 0 1 3.5 4 L 3.5 8.5 A 0.5 0.5 0 0 1 2.5 8.5 L 2.5 4 - M 4.5 4 A 0.5 0.5 0 0 1 5.5 4 L 5.5 8.5 A 0.5 0.5 0 0 1 4.5 8.5 L 4.5 4 - M 6.5 4 A 0.5 0.5 0 0 1 7.5 4 L 7.5 8.5 A 0.5 0.5 0 0 1 6.5 8.5 L 6.5 4`, - stroke: "none", - }), - SVG.el("path", { - d: `M 0.5 1.5 L 9.5 1.5`, - "stroke-width": 1, - fill: "none", - }), - SVG.el("path", { - d: `M 3 1.5 L 4 0.25 L 6 0.25 L 7 1.5`, - "stroke-width": 0.5, - fill: "none", - }), - ]), + SVG.el("path", { + d: `M2,3.25 L14,3.25 C14.4437164,3.25 14.7904293,3.63311343 14.7462779,4.07462779 L13.6363275,15.1741315 C13.5468672,16.0687347 12.7940775,16.75 11.8950124,16.75 L4.10498756,16.75 C3.20592253,16.75 2.45313279,16.0687347 2.36367248,15.1741315 L1.25372211,4.07462779 C1.20957067,3.63311343 1.55628356,3.25 2,3.25 Z M8.75,12 L8.75,7 C8.75,6.58578644 8.41421356,6.25 8,6.25 C7.58578644,6.25 7.25,6.58578644 7.25,7 L7.25,12 C7.25,12.4142136 7.58578644,12.75 8,12.75 C8.41421356,12.75 8.75,12.4142136 8.75,12 Z M11.25,12 L11.25,7 C11.25,6.58578644 10.9142136,6.25 10.5,6.25 C10.0857864,6.25 9.75,6.58578644 9.75,7 L9.75,12 C9.75,12.4142136 10.0857864,12.75 10.5,12.75 C10.9142136,12.75 11.25,12.4142136 11.25,12 Z M6.25,12 L6.25,7 C6.25,6.58578644 5.91421356,6.25 5.5,6.25 C5.08578644,6.25 4.75,6.58578644 4.75,7 L4.75,12 C4.75,12.4142136 5.08578644,12.75 5.5,12.75 C5.91421356,12.75 6.25,12.4142136 6.25,12 Z M1.5,4 L14.5,4 L1.5,4 Z M1.5,3 L14.5,3 C15.0522847,3 15.5,3.44771525 15.5,4 C15.5,4.55228475 15.0522847,5 14.5,5 L1.5,5 C0.94771525,5 0.5,4.55228475 0.5,4 C0.5,3.44771525 0.94771525,3 1.5,3 Z M9.25,3.25 L9.25,2 C9.25,1.86192881 9.13807119,1.75 9,1.75 L7,1.75 C6.86192881,1.75 6.75,1.86192881 6.75,2 L6.75,3.25 L9.25,3.25 Z M7,0.25 L9,0.25 C9.96649831,0.25 10.75,1.03350169 10.75,2 L10.75,4.75 L5.25,4.75 L5.25,2 C5.25,1.03350169 6.03350169,0.25 7,0.25 Z`, + }), { id: "sb3-trash", + transform: "scale(1.1, 1.1), translate(0, -1.5)" }, ), SVG.setProps( From 259211447569519b010495cfb8354e3d319f5df1 Mon Sep 17 00:00:00 2001 From: e016 <244850916+e016@users.noreply.github.com> Date: Fri, 12 Jun 2026 23:10:06 +0000 Subject: [PATCH 05/35] Format code using Prettier --- scratch3/blocks.js | 2 +- scratch3/style.js | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 190d423db..606f50876 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -491,7 +491,7 @@ export class IconView { pipette: { width: 16, height: 14, - scale: 1.4 + scale: 1.4, }, paintbucket: { width: 14, height: 14, scale: 1.4 }, eraser: { width: 14, height: 14, scale: 1.4 }, diff --git a/scratch3/style.js b/scratch3/style.js index 61ed374b5..833728176 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -133,7 +133,7 @@ const snapIcons = new Set([ "listNarrow", "flipHorizontal", "flipVertical", - + "trashFull", "cube", "cubeSolid", @@ -629,7 +629,7 @@ export default class Style { }), { id: "sb3-brush", - transform: "translate(-2, -3)" + transform: "translate(-2, -3)", }, ), SVG.setProps( @@ -638,7 +638,7 @@ export default class Style { }), { id: "sb3-pipette", - transform: "translate(-2, -3)" + transform: "translate(-2, -3)", }, ), SVG.setProps( @@ -647,7 +647,7 @@ export default class Style { }), { id: "sb3-paintbucket", - transform: "translate(-2, -3)" + transform: "translate(-2, -3)", }, ), SVG.setProps( @@ -656,7 +656,7 @@ export default class Style { }), { id: "sb3-eraser", - transform: "translate(-2, -3)" + transform: "translate(-2, -3)", }, ), SVG.setProps( @@ -1487,7 +1487,7 @@ export default class Style { }), { id: "sb3-trash", - transform: "scale(1.1, 1.1), translate(0, -1.5)" + transform: "scale(1.1, 1.1), translate(0, -1.5)", }, ), SVG.setProps( From 7748e5244029239b0482b25008665b904e0006cc Mon Sep 17 00:00:00 2001 From: e016 Date: Fri, 12 Jun 2026 17:42:09 -0600 Subject: [PATCH 06/35] better reporter rounding --- scratch3/blocks.js | 6 +++--- scratch3/draw.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 190d423db..06c0dca3a 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -580,7 +580,7 @@ export class IconView { musicBlock: { width: 40, height: 40 }, penBlock: { width: 40, height: 40 }, videoBlock: { width: 40, height: 40, dy: 10 }, - facesensingBlock: { width: 40, height: 40, dy: 3.9932885906 }, // 40 - 21.46 * (40 / 23.84), expcept this is still slightly off? + facesensingBlock: { width: 40, height: 40, dy: 1.9932885906 }, ttsBlock: { width: 40, height: 40 }, translateBlock: { width: 40, height: 40 }, wedoBlock: { width: 40, height: 40 }, @@ -939,7 +939,7 @@ class BlockView { SVG.getRoundedTop( w, h, - Math.max( + lines.length > 1 ? 22.5 : Math.max( lines[0].totalHeight, lines[lines.length - 1].totalHeight, ) / 2, @@ -1000,7 +1000,7 @@ class BlockView { SVG.getRoundedBottom( w, y, - Math.max( + lines.length > 1 ? 22.5 : Math.max( lines[0].totalHeight, lines[lines.length - 1].totalHeight, ) / 2, diff --git a/scratch3/draw.js b/scratch3/draw.js index e4c279034..12b0a1330 100644 --- a/scratch3/draw.js +++ b/scratch3/draw.js @@ -203,7 +203,7 @@ export default class SVG { let r = h / 2 if (child.isBlock && child.lines.length > 1) { r = - Math.max( + child.lines.length > 1 ? 22.5 : Math.max( Math.min(child.lines[0].totalHeight, Infinity), child.lines[child.lines.length - 1].totalHeight, ) / 2 From a6f6fe3bb546a5037b15493f9cef2d3f440a885e Mon Sep 17 00:00:00 2001 From: e016 <244850916+e016@users.noreply.github.com> Date: Fri, 12 Jun 2026 23:42:47 +0000 Subject: [PATCH 07/35] Format code using Prettier --- scratch3/blocks.js | 20 ++++++++++++-------- scratch3/draw.js | 10 ++++++---- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 0208ae3e4..3efde656e 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -939,10 +939,12 @@ class BlockView { SVG.getRoundedTop( w, h, - lines.length > 1 ? 22.5 : Math.max( - lines[0].totalHeight, - lines[lines.length - 1].totalHeight, - ) / 2, + lines.length > 1 + ? 22.5 + : Math.max( + lines[0].totalHeight, + lines[lines.length - 1].totalHeight, + ) / 2, ), ) } else if (this.info.shape === "boolean") { @@ -1000,10 +1002,12 @@ class BlockView { SVG.getRoundedBottom( w, y, - lines.length > 1 ? 22.5 : Math.max( - lines[0].totalHeight, - lines[lines.length - 1].totalHeight, - ) / 2, + lines.length > 1 + ? 22.5 + : Math.max( + lines[0].totalHeight, + lines[lines.length - 1].totalHeight, + ) / 2, ), ) } else if (this.info.shape === "boolean") { diff --git a/scratch3/draw.js b/scratch3/draw.js index 12b0a1330..963b333bb 100644 --- a/scratch3/draw.js +++ b/scratch3/draw.js @@ -203,10 +203,12 @@ export default class SVG { let r = h / 2 if (child.isBlock && child.lines.length > 1) { r = - child.lines.length > 1 ? 22.5 : Math.max( - Math.min(child.lines[0].totalHeight, Infinity), - child.lines[child.lines.length - 1].totalHeight, - ) / 2 + child.lines.length > 1 + ? 22.5 + : Math.max( + Math.min(child.lines[0].totalHeight, Infinity), + child.lines[child.lines.length - 1].totalHeight, + ) / 2 } return [SVG.getRoundedTop(w, h, r), SVG.getRoundedBottom(w, h, r)] From 978f61236cd285ced3d50f573a492b691d4b1d53 Mon Sep 17 00:00:00 2001 From: e016 Date: Fri, 12 Jun 2026 22:23:41 -0600 Subject: [PATCH 08/35] improve scratch3 arrows --- scratch3/blocks.js | 38 ++++++------- scratch3/style.js | 134 +++++++++++++++++++++++---------------------- 2 files changed, 87 insertions(+), 85 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 3efde656e..c26dc35c0 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -482,7 +482,7 @@ export class IconView { cloudOutline: { width: 16, height: 10, fillAttribute: "stroke" }, flash: { width: 8, height: 10 }, blitz: { alias: "flash", scale: 1 }, - camera: { width: 10, height: 10 }, + camera: { width: 15, height: 15, scale: 1.3 }, circleSolid: { width: 10, height: 10 }, circle: { width: 10, height: 10, fillAttribute: "stroke" }, notes: { alias: "musicBlock" }, @@ -528,8 +528,8 @@ export class IconView { crosshairs: { width: 10, height: 10, fillAttribute: "stroke" }, speechBubble: { width: 10, height: 10 }, speechBubbleOutline: { width: 10, height: 10, fillAttribute: "stroke" }, - turnBack: { width: 16, height: 10, fillAttribute: ["fill", "stroke"] }, - turnForward: { width: 16, height: 10, fillAttribute: ["fill", "stroke"] }, + turnBack: { width: 20, height: 10, scale: 1.2 }, + turnForward: { width: 20, height: 10, scale: 1.2 }, magnifyingGlass: { width: 10, height: 10, @@ -544,14 +544,14 @@ export class IconView { keyboardFilled: { width: 16, height: 10 }, listNarrow: { width: 5, height: 10 }, flipHorizontal: { - width: 10, - height: 10, - fillAttribute: ["fill", "stroke"], + width: 20, + height: 14, + scale: 1.2 }, flipVertical: { - width: 10, - height: 10, - fillAttribute: ["fill", "stroke"], + width: 20, + height: 14, + scale: 1.2 }, trash: { width: 15, height: 15 }, trashFull: { width: 10, height: 10 }, @@ -559,22 +559,22 @@ export class IconView { cubeSolid: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, infinity: { width: 17.5, height: 10, fillAttribute: "stroke" }, - arrowUp: {}, - arrowUpOutline: { fillAttribute: "stroke" }, + arrowUp: { width: 18, height: 18, }, + arrowUpOutline: { width: 18, height: 18, fillAttribute: "stroke" }, arrowUpThin: { width: 10, height: 10, fillAttribute: "stroke" }, - arrowDown: {}, - arrowDownOutline: { fillAttribute: "stroke" }, + arrowDown: { width: 18, height: 18, }, + arrowDownOutline: { width: 18, height: 18, fillAttribute: "stroke" }, arrowDownThin: { width: 10, height: 10, fillAttribute: "stroke" }, - arrowLeft: {}, - arrowLeftOutline: { fillAttribute: "stroke" }, + arrowLeft: { width: 18, height: 18 }, + arrowLeftOutline: { width: 18, height: 18, fillAttribute: "stroke" }, arrowLeftThin: { width: 10, height: 10, fillAttribute: "stroke" }, - arrowRight: {}, - arrowRightOutline: { fillAttribute: "stroke" }, + arrowRight: { width: 18, height: 18, }, + arrowRightOutline: { width: 18, height: 18, fillAttribute: "stroke" }, arrowRightThin: { width: 10, height: 10, fillAttribute: "stroke" }, arrowUpDownThin: { width: 10, height: 10, fillAttribute: "stroke" }, arrowLeftRightThin: { width: 10, height: 10, fillAttribute: "stroke" }, - speaker: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, - blocks: { width: 10, height: 10, fillAttribute: ["fill"] }, + speaker: { width: 14, height: 11, scale: 1.3 }, + blocks: { width: 14, height: 10, scale: 1 }, turtlePlus: { width: 13, height: 10, fillAttribute: ["fill", "stroke"] }, musicBlock: { width: 40, height: 40 }, diff --git a/scratch3/style.js b/scratch3/style.js index 833728176..6f7c568e5 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -21,7 +21,6 @@ const highContrastIcons = new Set([ "turtle", "turtleOutline", "flash", - "camera", "circle", "circleSolid", "notes", @@ -53,8 +52,6 @@ const highContrastIcons = new Set([ "crosshairs", "speechBubble", "speechBubbleOutline", - "turnBack", - "turnForward", "magnifyingGlass", "magnifierOutline", "selection", @@ -64,13 +61,10 @@ const highContrastIcons = new Set([ "keyboard", "keyboardFilled", "listNarrow", - "flipHorizontal", - "flipVertical", "trashFull", "cube", "cubeSolid", "infinity", - "speaker", "blocks", "turtlePlus", @@ -89,7 +83,6 @@ const snapIcons = new Set([ "turtle", "turtleOutline", "flash", - "camera", "circle", "circleSolid", "storage", @@ -121,8 +114,6 @@ const snapIcons = new Set([ "crosshairs", "speechBubble", "speechBubbleOutline", - "turnBack", - "turnForward", "magnifyingGlass", "magnifierOutline", "selection", @@ -131,14 +122,11 @@ const snapIcons = new Set([ "keyboard", "keyboardFilled", "listNarrow", - "flipHorizontal", - "flipVertical", "trashFull", "cube", "cubeSolid", "infinity", - "speaker", "blocks", "turtlePlus", @@ -573,12 +561,12 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - d: `M 0.5 8.333333333333334 L 9.5 8.333333333333334 L 9.5 2.5 L 7.5 2.5 L 6.25 0.5 L 3.75 0.5 L 2.5 2.5 L 0.5 2.5 L 0.5 8.333333333333334 Z - M 6.6 5 A 1.6 1.6 0 1 1 6.599999200000067 4.998400000266666 Z`, + d: `M10,14.5 C8.3485,14.5 7,13.1515 7,11.5 C7,9.8365 8.3485,8.5 10,8.5 C11.6635,8.5 13,9.8365 13,11.5 C13,13.1515 11.6635,14.5 10,14.5 M16,6.25 L14.95,6.25 C14.6635,6.25 14.425,6.1 14.2885,5.86 L13.2835,4.0315 C13.015,3.55 12.52,3.25 11.965,3.25 L8.05,3.25 C7.495,3.25 7,3.55 6.7285,4.0315 L5.71,5.86 C5.575,6.1 5.335,6.25 5.065,6.25 L4,6.25 C3.175,6.25 2.5,6.925 2.5,7.75 L2.5,15.25 C2.5,16.0765 3.175,16.75 4,16.75 L16,16.75 C16.825,16.75 17.5,16.0765 17.5,15.25 L17.5,7.75 C17.5,6.925 16.825,6.25 16,6.25`, + "fill-rule": "evenodd" }), { id: "sb3-camera", - "stroke-width": 1, + transform: "translate(0, -2.5)" }, ), SVG.setProps( @@ -786,7 +774,7 @@ export default class Style { ), { id: "sb3-arrowUp", - transform: "matrix(0, -1, 1, 0, -10, -5)", + transform: "matrix(0, -1, 1, 0, -10, -5), translate(-2, 2)", }, ), SVG.setProps( @@ -804,8 +792,7 @@ export default class Style { ), { id: "sb3-arrowUpOutline", - transform: "matrix(0, -1, 1, 0, -10, -5)", - "--stroke": true, + transform: "matrix(0, -1, 1, 0, -10, -5), translate(-2, 2)", }, ), SVG.setProps( @@ -820,7 +807,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-arrowUp", - transform: "rotate(180 5 5)", + transform: "translate(16.5, 15), rotate(180)", }), { id: "sb3-arrowDown", @@ -829,7 +816,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-arrowUpOutline", - transform: "rotate(180 5 5)", + transform: "translate(16.5, 15), rotate(180)", }), { id: "sb3-arrowDownOutline", @@ -847,7 +834,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-arrowUp", - transform: "rotate(-90 5 5)", + transform: "translate(0, 15.5), rotate(-90)", }), { id: "sb3-arrowLeft", @@ -856,7 +843,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-arrowUpOutline", - transform: "rotate(-90 5 5)", + transform: "translate(0, 15.5), rotate(-90)", }), { id: "sb3-arrowLeftOutline", @@ -874,7 +861,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-arrowUp", - transform: "rotate(90 5 5)", + transform: "translate(-6, 0), rotate(90 10 10)", }), { id: "sb3-arrowRight", @@ -883,7 +870,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-arrowUpOutline", - transform: "rotate(90 5 5)", + transform: "translate(-6, 0), rotate(90 5 5)", }), { id: "sb3-arrowRightOutline", @@ -1223,33 +1210,19 @@ export default class Style { }, ), SVG.setProps( - SVG.group([ - SVG.el("path", { - d: "M 0 5 L 8 0 L 8 10 Z", - stroke: "none", - }), - SVG.el("path", { - d: "M 13 10 A 5 5 0 0 0 8 5", - fill: "none", - "stroke-width": 2.4, - }), - ]), + SVG.el("path", { + d: "M15.5581635,12.7700651 L11.8403972,16.4941315 C11.5610922,16.7671364 11.1830854,16.9211391 10.7903784,16.9211391 C10.3990715,16.9211391 10.0210647,16.7671364 9.74035971,16.4941315 L6.02399342,12.7700651 C5.5969858,12.3430574 5.47098355,11.7060461 5.70198767,11.1530362 C5.93299179,10.6000263 6.46500128,10.24302 7.06701202,10.24302 L8.40403587,10.24302 C8.36903525,9.92101423 8.27803362,9.55700774 8.12403088,9.17200087 C8.07573002,9.05999887 8.02602913,8.94799688 7.97002813,8.83599488 C7.89302676,8.70999263 7.90072689,8.67499201 7.79502501,8.52098926 C7.62702201,8.26898476 7.47301926,8.07998139 7.29031601,7.86297752 C6.9200094,7.4639704 6.47200141,7.12096429 5.99599292,6.86895979 C5.5129843,6.6169553 5.00897531,6.46295255 4.56096732,6.37895105 C4.11995945,6.30194968 3.71395221,6.29494955 3.47594796,6.29494955 C3.35694584,6.28794943 3.2029431,6.31594993 3.12594172,6.32295005 C3.04194022,6.32995018 2.99293935,6.3369503 2.99293935,6.3369503 C2.49593048,6.38595117 2.04792249,6.02194468 1.99892162,5.52493582 C1.95692087,5.10492832 2.20192524,4.72692158 2.57293186,4.58691908 C2.57293186,4.58691908 2.62193273,4.56591871 2.6989341,4.53791821 C2.78993573,4.50991771 2.87393723,4.46091684 3.06994072,4.40491584 C3.46194772,4.28591371 3.95895658,4.15991147 4.60996819,4.09691034 C5.25397968,4.04090934 6.03099354,4.05490959 6.85070816,4.22291259 C7.66902276,4.39791571 8.53003812,4.72692158 9.32805235,5.20293007 C9.7060591,5.44793444 10.1120663,5.73493956 10.427072,6.01494456 C10.5670745,6.11994643 10.8050787,6.35795068 10.9450812,6.5049533 C11.1060841,6.67295629 11.2530867,6.84095929 11.4007893,7.01596241 C11.9670994,7.7159749 12.3871069,8.47198839 12.6601118,9.15800062 C12.8211147,9.55000762 12.9331167,9.92101423 13.0171182,10.24302 L14.5151449,10.24302 C15.1171556,10.24302 15.6491651,10.6000263 15.8801692,11.1530362 C16.1111734,11.7060461 15.9851711,12.3430574 15.5581635,12.7700651", + transform: "translate(5, 4.5) scale(-1, 1) rotate(-45.000000) translate(-11.994247, -10.494247) " + }), { id: "sb3-turnBack", }, ), SVG.setProps( - SVG.group([ - SVG.el("path", { - d: "M 16 5 L 8 0 L 8 10 Z", - stroke: "none", - }), - SVG.el("path", { - d: "M 3 10 A 5 5 0 0 1 8 5", - fill: "none", - "stroke-width": 2.4, - }), - ]), + SVG.el("path", { + d: "M17.5581635,12.7700651 L13.8403972,16.4941315 C13.5610922,16.7671364 13.1830854,16.9211391 12.7903784,16.9211391 C12.3990715,16.9211391 12.0210647,16.7671364 11.7403597,16.4941315 L8.02399342,12.7700651 C7.5969858,12.3430574 7.47098355,11.7060461 7.70198767,11.1530362 C7.93299179,10.6000263 8.46500128,10.24302 9.06701202,10.24302 L10.4040359,10.24302 C10.3690352,9.92101423 10.2780336,9.55700774 10.1240309,9.17200087 C10.07573,9.05999887 10.0260291,8.94799688 9.97002813,8.83599488 C9.89302676,8.70999263 9.90072689,8.67499201 9.79502501,8.52098926 C9.62702201,8.26898476 9.47301926,8.07998139 9.29031601,7.86297752 C8.9200094,7.4639704 8.47200141,7.12096429 7.99599292,6.86895979 C7.5129843,6.6169553 7.00897531,6.46295255 6.56096732,6.37895105 C6.11995945,6.30194968 5.71395221,6.29494955 5.47594796,6.29494955 C5.35694584,6.28794943 5.2029431,6.31594993 5.12594172,6.32295005 C5.04194022,6.32995018 4.99293935,6.3369503 4.99293935,6.3369503 C4.49593048,6.38595117 4.04792249,6.02194468 3.99892162,5.52493582 C3.95692087,5.10492832 4.20192524,4.72692158 4.57293186,4.58691908 C4.57293186,4.58691908 4.62193273,4.56591871 4.6989341,4.53791821 C4.78993573,4.50991771 4.87393723,4.46091684 5.06994072,4.40491584 C5.46194772,4.28591371 5.95895658,4.15991147 6.60996819,4.09691034 C7.25397968,4.04090934 8.03099354,4.05490959 8.85070816,4.22291259 C9.66902276,4.39791571 10.5300381,4.72692158 11.3280524,5.20293007 C11.7060591,5.44793444 12.1120663,5.73493956 12.427072,6.01494456 C12.5670745,6.11994643 12.8050787,6.35795068 12.9450812,6.5049533 C13.1060841,6.67295629 13.2530867,6.84095929 13.4007893,7.01596241 C13.9670994,7.7159749 14.3871069,8.47198839 14.6601118,9.15800062 C14.8211147,9.55000762 14.9331167,9.92101423 15.0171182,10.24302 L16.5151449,10.24302 C17.1171556,10.24302 17.6491651,10.6000263 17.8801692,11.1530362 C18.1111734,11.7060461 17.9851711,12.3430574 17.5581635,12.7700651", + transform: "translate(5, 4.5) rotate(-45.000000) translate(-6.994247, -5.494247) " + }), { id: "sb3-turnForward", }, @@ -1459,7 +1432,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-flipHorizontal", - transform: "translate(0 10) rotate(-90)", + transform: "translate(1 15) rotate(-90)", }), { id: "sb3-flipVertical", @@ -1467,18 +1440,53 @@ export default class Style { ), SVG.setProps( SVG.group([ + SVG.el("circle", { + fill: "#575E75", + opacity: 0.5, + cx: 8, + cy: 0.7, + r: 1 + }), + SVG.el("circle", { + fill: "#575E75", + opacity: 0.5, + cx: 8, + cy: 3.875, + r: 1 + }), + SVG.el("circle", { + fill: "#575E75", + opacity: 0.5, + cx: 8, + cy: 7, + r: 1 + }), + SVG.el("circle", { + fill: "#575E75", + opacity: 0.5, + cx: 8, + cy: 10.125, + r: 1 + }), + SVG.el("circle", { + fill: "#575E75", + opacity: 0.5, + cx: 8, + cy: 13.25, + r: 1 + }), + SVG.el("path", { - d: "M 0.6666666666666666 9.666666666666666 L 4.2 9.666666666666666 L 4.2 1.3333333333333333 Z", - "stroke-width": 10 / 15, - fill: "none", + d: "M0,10.9157458 L0,3.08425423 C0,2.56573745 0.742550911,2.30430042 1.17470525,2.67176469 L5.79807074,6.58896289 C6.06730975,6.81554165 6.06730975,7.18591078 5.79807074,7.41248954 L1.17470525,11.3282353 C0.742550911,11.6956996 0,11.4342626 0,10.9157458", }), SVG.el("path", { - d: "M 9.333333333333334 9.666666666666666 L 5.8 9.666666666666666 L 5.8 1.3333333333333333 Z", - "stroke-width": 10 / 15, + d: "M16,3.08425423 L16,10.9157458 C16,11.4342626 15.2574491,11.6956996 14.8235798,11.3282353 L10.2019293,7.41103711 C9.93269025,7.18445835 9.93269025,6.81408922 10.2019293,6.58751046 L14.8235798,2.67176469 C15.2574491,2.30430042 16,2.56573745 16,3.08425423", + opacity: 0.5 }), ]), { id: "sb3-flipHorizontal", + transform: "translate(1, 0)" }, ), SVG.setProps( @@ -1546,29 +1554,23 @@ export default class Style { }, ), SVG.setProps( - SVG.group([ - SVG.el("path", { - d: `M 0 3.3333333333333335 L 3.3333333333333335 3.3333333333333335 L 6.666666666666667 0 L 6.666666666666667 10 L 3.3333333333333335 6.666666666666667 L 0 6.666666666666667 Z`, - stroke: "none", - }), - SVG.el("path", { - d: `M 8.299831645537221 8.299831645537221 A 4.666666666666667 4.666666666666667 0 0 0 8.299831645537221 1.7001683544627784 - M 7.29809703885628 7.298097038856279 A 3.25 3.25 0 0 0 7.29809703885628 2.7019029611437206`, - fill: "none", - "stroke-width": 0.6666666666666666, - }), - ]), + SVG.el("path", { + d: `M12.63 12.637a.886.886 0 0 1-.755-1.333 2.569 2.569 0 0 0 0-2.6.888.888 0 0 1 .31-1.213.878.878 0 0 1 1.204.311 4.346 4.346 0 0 1 0 4.401.875.875 0 0 1-.758.434zm2.627 1.418a.886.886 0 0 1-.755-1.333 5.367 5.367 0 0 0 0-5.437.888.888 0 0 1 .309-1.212.88.88 0 0 1 1.204.31 7.138 7.138 0 0 1 0 7.238.877.877 0 0 1-.758.434zM10.379 5.68v8.641c0 1.024-1.207 1.56-1.96.87l-1.624-1.492a3.112 3.112 0 0 0-2.104-.82h-.284A1.41 1.41 0 0 1 3 11.464V8.55c0-.781.63-1.414 1.407-1.414h.268c.78 0 1.529-.293 2.104-.82L8.42 4.81c.753-.69 1.96-.154 1.96.869Z`, + stroke: "none", + transform: "translate(-3, -5)" + }), { id: "sb3-speaker", }, ), SVG.setProps( SVG.el("path", { - d: `M 0 0 L 2 0 L 3 1 L 5 1 L 6 0 L 9 0 L 9 4 L 6 4 L 5 5 L 3 5 L 2 4 L 0 4 Z - M 0 5 L 2 5 L 3 6 L 5 6 L 6 5 L 10 5 L 10 9 L 6 9 L 5 10 L 3 10 L 2 9 L 0 9 Z`, + d: `M15 13.51a.5.5 0 0 1-.5.5H9.197a.495.495 0 0 0-.353.146l-.698.698a.5.5 0 0 1-.353.146H6.207a.5.5 0 0 1-.353-.146l-.698-.698a.497.497 0 0 0-.353-.146H3.5a.5.5 0 0 1-.5-.5V10.5a.5.5 0 0 1 .5-.5h1.293a.5.5 0 0 1 .353.146l.708.708a.5.5 0 0 0 .353.146h1.586a.5.5 0 0 0 .353-.146l.708-.708A.5.5 0 0 1 9.207 10H14.5a.5.5 0 0 1 .5.5zm2-5a.5.5 0 0 1-.5.5H9.197a.495.495 0 0 0-.353.146l-.698.698a.5.5 0 0 1-.353.146H6.207a.5.5 0 0 1-.353-.146l-.698-.698a.497.497 0 0 0-.353-.146H3.5a.5.5 0 0 1-.5-.5V5.5a.5.5 0 0 1 .5-.5h1.293a.5.5 0 0 1 .353.146l.708.708A.5.5 0 0 0 6.207 6h1.586a.5.5 0 0 0 .353-.146l.708-.708A.5.5 0 0 1 9.207 5H16.5a.5.5 0 0 1 .5.5Z`, + "clip-path": "evenodd" }), { id: "sb3-blocks", + transform: "scale(0.7, 0.7), translate(1, -3)" }, ), SVG.setProps( From 65a2d339e7cc070236a3f1bd9191fba46adcdf71 Mon Sep 17 00:00:00 2001 From: e016 <244850916+e016@users.noreply.github.com> Date: Sat, 13 Jun 2026 04:24:20 +0000 Subject: [PATCH 09/35] Format code using Prettier --- scratch3/blocks.js | 12 ++++++------ scratch3/style.js | 30 ++++++++++++++++-------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index c26dc35c0..231c2ca33 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -546,12 +546,12 @@ export class IconView { flipHorizontal: { width: 20, height: 14, - scale: 1.2 + scale: 1.2, }, flipVertical: { width: 20, height: 14, - scale: 1.2 + scale: 1.2, }, trash: { width: 15, height: 15 }, trashFull: { width: 10, height: 10 }, @@ -559,22 +559,22 @@ export class IconView { cubeSolid: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, infinity: { width: 17.5, height: 10, fillAttribute: "stroke" }, - arrowUp: { width: 18, height: 18, }, + arrowUp: { width: 18, height: 18 }, arrowUpOutline: { width: 18, height: 18, fillAttribute: "stroke" }, arrowUpThin: { width: 10, height: 10, fillAttribute: "stroke" }, - arrowDown: { width: 18, height: 18, }, + arrowDown: { width: 18, height: 18 }, arrowDownOutline: { width: 18, height: 18, fillAttribute: "stroke" }, arrowDownThin: { width: 10, height: 10, fillAttribute: "stroke" }, arrowLeft: { width: 18, height: 18 }, arrowLeftOutline: { width: 18, height: 18, fillAttribute: "stroke" }, arrowLeftThin: { width: 10, height: 10, fillAttribute: "stroke" }, - arrowRight: { width: 18, height: 18, }, + arrowRight: { width: 18, height: 18 }, arrowRightOutline: { width: 18, height: 18, fillAttribute: "stroke" }, arrowRightThin: { width: 10, height: 10, fillAttribute: "stroke" }, arrowUpDownThin: { width: 10, height: 10, fillAttribute: "stroke" }, arrowLeftRightThin: { width: 10, height: 10, fillAttribute: "stroke" }, speaker: { width: 14, height: 11, scale: 1.3 }, - blocks: { width: 14, height: 10, scale: 1 }, + blocks: { width: 14, height: 10, scale: 1 }, turtlePlus: { width: 13, height: 10, fillAttribute: ["fill", "stroke"] }, musicBlock: { width: 40, height: 40 }, diff --git a/scratch3/style.js b/scratch3/style.js index 6f7c568e5..9efb98c5f 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -562,11 +562,11 @@ export default class Style { SVG.setProps( SVG.el("path", { d: `M10,14.5 C8.3485,14.5 7,13.1515 7,11.5 C7,9.8365 8.3485,8.5 10,8.5 C11.6635,8.5 13,9.8365 13,11.5 C13,13.1515 11.6635,14.5 10,14.5 M16,6.25 L14.95,6.25 C14.6635,6.25 14.425,6.1 14.2885,5.86 L13.2835,4.0315 C13.015,3.55 12.52,3.25 11.965,3.25 L8.05,3.25 C7.495,3.25 7,3.55 6.7285,4.0315 L5.71,5.86 C5.575,6.1 5.335,6.25 5.065,6.25 L4,6.25 C3.175,6.25 2.5,6.925 2.5,7.75 L2.5,15.25 C2.5,16.0765 3.175,16.75 4,16.75 L16,16.75 C16.825,16.75 17.5,16.0765 17.5,15.25 L17.5,7.75 C17.5,6.925 16.825,6.25 16,6.25`, - "fill-rule": "evenodd" + "fill-rule": "evenodd", }), { id: "sb3-camera", - transform: "translate(0, -2.5)" + transform: "translate(0, -2.5)", }, ), SVG.setProps( @@ -1212,7 +1212,8 @@ export default class Style { SVG.setProps( SVG.el("path", { d: "M15.5581635,12.7700651 L11.8403972,16.4941315 C11.5610922,16.7671364 11.1830854,16.9211391 10.7903784,16.9211391 C10.3990715,16.9211391 10.0210647,16.7671364 9.74035971,16.4941315 L6.02399342,12.7700651 C5.5969858,12.3430574 5.47098355,11.7060461 5.70198767,11.1530362 C5.93299179,10.6000263 6.46500128,10.24302 7.06701202,10.24302 L8.40403587,10.24302 C8.36903525,9.92101423 8.27803362,9.55700774 8.12403088,9.17200087 C8.07573002,9.05999887 8.02602913,8.94799688 7.97002813,8.83599488 C7.89302676,8.70999263 7.90072689,8.67499201 7.79502501,8.52098926 C7.62702201,8.26898476 7.47301926,8.07998139 7.29031601,7.86297752 C6.9200094,7.4639704 6.47200141,7.12096429 5.99599292,6.86895979 C5.5129843,6.6169553 5.00897531,6.46295255 4.56096732,6.37895105 C4.11995945,6.30194968 3.71395221,6.29494955 3.47594796,6.29494955 C3.35694584,6.28794943 3.2029431,6.31594993 3.12594172,6.32295005 C3.04194022,6.32995018 2.99293935,6.3369503 2.99293935,6.3369503 C2.49593048,6.38595117 2.04792249,6.02194468 1.99892162,5.52493582 C1.95692087,5.10492832 2.20192524,4.72692158 2.57293186,4.58691908 C2.57293186,4.58691908 2.62193273,4.56591871 2.6989341,4.53791821 C2.78993573,4.50991771 2.87393723,4.46091684 3.06994072,4.40491584 C3.46194772,4.28591371 3.95895658,4.15991147 4.60996819,4.09691034 C5.25397968,4.04090934 6.03099354,4.05490959 6.85070816,4.22291259 C7.66902276,4.39791571 8.53003812,4.72692158 9.32805235,5.20293007 C9.7060591,5.44793444 10.1120663,5.73493956 10.427072,6.01494456 C10.5670745,6.11994643 10.8050787,6.35795068 10.9450812,6.5049533 C11.1060841,6.67295629 11.2530867,6.84095929 11.4007893,7.01596241 C11.9670994,7.7159749 12.3871069,8.47198839 12.6601118,9.15800062 C12.8211147,9.55000762 12.9331167,9.92101423 13.0171182,10.24302 L14.5151449,10.24302 C15.1171556,10.24302 15.6491651,10.6000263 15.8801692,11.1530362 C16.1111734,11.7060461 15.9851711,12.3430574 15.5581635,12.7700651", - transform: "translate(5, 4.5) scale(-1, 1) rotate(-45.000000) translate(-11.994247, -10.494247) " + transform: + "translate(5, 4.5) scale(-1, 1) rotate(-45.000000) translate(-11.994247, -10.494247) ", }), { id: "sb3-turnBack", @@ -1221,7 +1222,8 @@ export default class Style { SVG.setProps( SVG.el("path", { d: "M17.5581635,12.7700651 L13.8403972,16.4941315 C13.5610922,16.7671364 13.1830854,16.9211391 12.7903784,16.9211391 C12.3990715,16.9211391 12.0210647,16.7671364 11.7403597,16.4941315 L8.02399342,12.7700651 C7.5969858,12.3430574 7.47098355,11.7060461 7.70198767,11.1530362 C7.93299179,10.6000263 8.46500128,10.24302 9.06701202,10.24302 L10.4040359,10.24302 C10.3690352,9.92101423 10.2780336,9.55700774 10.1240309,9.17200087 C10.07573,9.05999887 10.0260291,8.94799688 9.97002813,8.83599488 C9.89302676,8.70999263 9.90072689,8.67499201 9.79502501,8.52098926 C9.62702201,8.26898476 9.47301926,8.07998139 9.29031601,7.86297752 C8.9200094,7.4639704 8.47200141,7.12096429 7.99599292,6.86895979 C7.5129843,6.6169553 7.00897531,6.46295255 6.56096732,6.37895105 C6.11995945,6.30194968 5.71395221,6.29494955 5.47594796,6.29494955 C5.35694584,6.28794943 5.2029431,6.31594993 5.12594172,6.32295005 C5.04194022,6.32995018 4.99293935,6.3369503 4.99293935,6.3369503 C4.49593048,6.38595117 4.04792249,6.02194468 3.99892162,5.52493582 C3.95692087,5.10492832 4.20192524,4.72692158 4.57293186,4.58691908 C4.57293186,4.58691908 4.62193273,4.56591871 4.6989341,4.53791821 C4.78993573,4.50991771 4.87393723,4.46091684 5.06994072,4.40491584 C5.46194772,4.28591371 5.95895658,4.15991147 6.60996819,4.09691034 C7.25397968,4.04090934 8.03099354,4.05490959 8.85070816,4.22291259 C9.66902276,4.39791571 10.5300381,4.72692158 11.3280524,5.20293007 C11.7060591,5.44793444 12.1120663,5.73493956 12.427072,6.01494456 C12.5670745,6.11994643 12.8050787,6.35795068 12.9450812,6.5049533 C13.1060841,6.67295629 13.2530867,6.84095929 13.4007893,7.01596241 C13.9670994,7.7159749 14.3871069,8.47198839 14.6601118,9.15800062 C14.8211147,9.55000762 14.9331167,9.92101423 15.0171182,10.24302 L16.5151449,10.24302 C17.1171556,10.24302 17.6491651,10.6000263 17.8801692,11.1530362 C18.1111734,11.7060461 17.9851711,12.3430574 17.5581635,12.7700651", - transform: "translate(5, 4.5) rotate(-45.000000) translate(-6.994247, -5.494247) " + transform: + "translate(5, 4.5) rotate(-45.000000) translate(-6.994247, -5.494247) ", }), { id: "sb3-turnForward", @@ -1445,35 +1447,35 @@ export default class Style { opacity: 0.5, cx: 8, cy: 0.7, - r: 1 + r: 1, }), SVG.el("circle", { fill: "#575E75", opacity: 0.5, cx: 8, cy: 3.875, - r: 1 + r: 1, }), SVG.el("circle", { fill: "#575E75", opacity: 0.5, cx: 8, cy: 7, - r: 1 + r: 1, }), SVG.el("circle", { fill: "#575E75", opacity: 0.5, cx: 8, cy: 10.125, - r: 1 + r: 1, }), SVG.el("circle", { fill: "#575E75", opacity: 0.5, cx: 8, cy: 13.25, - r: 1 + r: 1, }), SVG.el("path", { @@ -1481,12 +1483,12 @@ export default class Style { }), SVG.el("path", { d: "M16,3.08425423 L16,10.9157458 C16,11.4342626 15.2574491,11.6956996 14.8235798,11.3282353 L10.2019293,7.41103711 C9.93269025,7.18445835 9.93269025,6.81408922 10.2019293,6.58751046 L14.8235798,2.67176469 C15.2574491,2.30430042 16,2.56573745 16,3.08425423", - opacity: 0.5 + opacity: 0.5, }), ]), { id: "sb3-flipHorizontal", - transform: "translate(1, 0)" + transform: "translate(1, 0)", }, ), SVG.setProps( @@ -1557,7 +1559,7 @@ export default class Style { SVG.el("path", { d: `M12.63 12.637a.886.886 0 0 1-.755-1.333 2.569 2.569 0 0 0 0-2.6.888.888 0 0 1 .31-1.213.878.878 0 0 1 1.204.311 4.346 4.346 0 0 1 0 4.401.875.875 0 0 1-.758.434zm2.627 1.418a.886.886 0 0 1-.755-1.333 5.367 5.367 0 0 0 0-5.437.888.888 0 0 1 .309-1.212.88.88 0 0 1 1.204.31 7.138 7.138 0 0 1 0 7.238.877.877 0 0 1-.758.434zM10.379 5.68v8.641c0 1.024-1.207 1.56-1.96.87l-1.624-1.492a3.112 3.112 0 0 0-2.104-.82h-.284A1.41 1.41 0 0 1 3 11.464V8.55c0-.781.63-1.414 1.407-1.414h.268c.78 0 1.529-.293 2.104-.82L8.42 4.81c.753-.69 1.96-.154 1.96.869Z`, stroke: "none", - transform: "translate(-3, -5)" + transform: "translate(-3, -5)", }), { id: "sb3-speaker", @@ -1566,11 +1568,11 @@ export default class Style { SVG.setProps( SVG.el("path", { d: `M15 13.51a.5.5 0 0 1-.5.5H9.197a.495.495 0 0 0-.353.146l-.698.698a.5.5 0 0 1-.353.146H6.207a.5.5 0 0 1-.353-.146l-.698-.698a.497.497 0 0 0-.353-.146H3.5a.5.5 0 0 1-.5-.5V10.5a.5.5 0 0 1 .5-.5h1.293a.5.5 0 0 1 .353.146l.708.708a.5.5 0 0 0 .353.146h1.586a.5.5 0 0 0 .353-.146l.708-.708A.5.5 0 0 1 9.207 10H14.5a.5.5 0 0 1 .5.5zm2-5a.5.5 0 0 1-.5.5H9.197a.495.495 0 0 0-.353.146l-.698.698a.5.5 0 0 1-.353.146H6.207a.5.5 0 0 1-.353-.146l-.698-.698a.497.497 0 0 0-.353-.146H3.5a.5.5 0 0 1-.5-.5V5.5a.5.5 0 0 1 .5-.5h1.293a.5.5 0 0 1 .353.146l.708.708A.5.5 0 0 0 6.207 6h1.586a.5.5 0 0 0 .353-.146l.708-.708A.5.5 0 0 1 9.207 5H16.5a.5.5 0 0 1 .5.5Z`, - "clip-path": "evenodd" + "clip-path": "evenodd", }), { id: "sb3-blocks", - transform: "scale(0.7, 0.7), translate(1, -3)" + transform: "scale(0.7, 0.7), translate(1, -3)", }, ), SVG.setProps( From fdd87167dd5d7e7beedf7d264786b8e5b1177e8a Mon Sep 17 00:00:00 2001 From: e016 Date: Sat, 13 Jun 2026 12:43:46 -0600 Subject: [PATCH 10/35] turnBack fix, add new robot symbol --- scratch3/blocks.js | 2 +- scratch3/style.js | 78 +++++++++++++++++++++++++++++++++++++++------- 2 files changed, 68 insertions(+), 12 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 231c2ca33..f93aaa732 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -502,7 +502,7 @@ export class IconView { globe: { width: 10, height: 10, fillAttribute: "stroke" }, globeBig: { width: 10, height: 10, fillAttribute: "stroke" }, square: { width: 10, height: 10 }, - robot: { width: 10, height: 10 }, + robot: { width: 13, height: 17, fillAttribute: ["fill", "stroke"], scale: 1.2 }, stepForward: { width: 10, height: 10 }, file: { width: 18, height: 18, scale: 1.2 }, fullScreen: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, diff --git a/scratch3/style.js b/scratch3/style.js index 9efb98c5f..ff8c121d0 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -31,7 +31,6 @@ const highContrastIcons = new Set([ "globe", "globeBig", "square", - "robot", "pointRight", "stepForward", "fullScreen", @@ -92,7 +91,6 @@ const snapIcons = new Set([ "globe", "globeBig", "square", - "robot", "pointRight", "stepForward", "fullScreen", @@ -746,16 +744,62 @@ export default class Style { }, ), SVG.setProps( - SVG.el("path", { - d: `M 2.166666666666667 1.6666666666666667 L 3.3333333333333335 1.6666666666666667 L 4.166666666666667 2.5 L 5.833333333333334 2.5 L 6.666666666666667 1.6666666666666667 L 7.833333333333334 1.6666666666666667 L 6.666666666666667 5 L 6.666666666666667 6.166666666666667 L 3.3333333333333335 6.166666666666667 L 3.3333333333333335 5 Z - M 4.583333333333334 2.166666666666667 L 4 1.6666666666666667 L 3.666666666666667 0 L 6.333333333333333 0 L 6 1.6666666666666667 L 5.416666666666667 2.166666666666667 Z - M 4.166666666666667 6.666666666666667 L 1.6666666666666667 6.666666666666667 L 1.3333333333333335 10 L 3.3333333333333335 10 Z - M 5.833333333333334 6.666666666666667 L 8.333333333333334 6.666666666666667 L 8.666666666666666 10 L 6.666666666666667 10 Z - M 1.6666666666666667 1.6666666666666667 L 0.5 2.5 L 0.5 5.416666666666667 L 2.5 5.833333333333334 Z - M 8.333333333333334 1.6666666666666667 L 9.5 2.5 L 9.5 5.416666666666667 L 7.5 5.833333333333334 Z`, - }), + SVG.group([ + SVG.group([ + SVG.el("path", { + d: "M6.75652727,15.5218 L6.75652727,1.2698", + "stroke-width": 0.75, + fill: "none", + }), + SVG.el("path", { + d: "M1.51161818,13.2809091 C1.51161818,10.3841818 3.8598,8.036 6.75652727,8.036 C9.65198182,8.036 12.0001636,10.3841818 12.0001636,13.2809091", + "stroke-width": 0.75, + "stroke-linecap": "round", + "stroke-linejoin": "round", + fill: "none", + }), + SVG.el("path", { + d: "M10.9663273,14.315 C10.9663273,13.7435455 11.4296,13.2815455 11.9997818,13.2815455 C12.5725091,13.2815455 13.0345091,13.7435455 13.0345091,14.315", + "stroke-width": 0.75, + "stroke-linecap": "round", + "stroke-linejoin": "round", + fill: "none", + }), + SVG.el("path", { + d: "M0.477527273,14.315 C0.477527273,13.7435455 0.939527273,13.2815455 1.51098182,13.2815455 C2.08243636,13.2815455 2.54570909,13.7435455 2.54570909,14.315", + "stroke-width": 0.75, + "stroke-linecap": "round", + "stroke-linejoin": "round", + fill: "none", + }), + ]), + SVG.group([ + SVG.el("path", { + d: "M9.60527273,8.03587273 L3.906,8.03587273 C3.20345455,8.03587273 2.63327273,7.46696364 2.63327273,6.76314545 L2.63327273,4.63641818 C2.63327273,3.93387273 3.20345455,3.36369091 3.906,3.36369091 L9.60527273,3.36369091 C10.3090909,3.36369091 10.878,3.93387273 10.878,4.63641818 L10.878,6.76314545 C10.878,7.46696364 10.3090909,8.03587273 9.60527273,8.03587273", + stroke: "none" + }), + SVG.el("path", { + d: "M9.11310909,13.0782909 L4.39892727,13.0782909 C3.77147273,13.0782909 3.26238182,12.5692 3.26238182,11.9404727 L3.26238182,11.0126545 C3.26238182,9.0832 4.82656364,7.51901818 6.75601818,7.51901818 C8.68547273,7.51901818 10.2496545,9.0832 10.2496545,11.0126545 L10.2496545,11.9404727 C10.2496545,12.5692 9.74056364,13.0782909 9.11310909,13.0782909", + stroke: "none" + }), + SVG.el("path", { + d: "M7.777,15.5218 C7.777,16.0843455 7.32009091,16.5425273 6.75627273,16.5425273 C6.19245455,16.5425273 5.73554545,16.0843455 5.73554545,15.5218 C5.73554545,14.9579818 6.19245455,14.4998 6.75627273,14.4998 C7.32009091,14.4998 7.777,14.9579818 7.777,15.5218", + stroke: "none" + }), + SVG.el("path", { + d: "M8.03052727,1.27450909 C8.03052727,1.9796 7.46034545,2.54978182 6.75652727,2.54978182 C6.05143636,2.54978182 5.48125455,1.9796 5.48125455,1.27450909 C5.48125455,0.570690909 6.05143636,0.000509090909 6.75652727,0.000509090909 C7.46034545,0.000509090909 8.03052727,0.570690909 8.03052727,1.27450909", + stroke: "none" + }), + SVG.el("path", { + d: "M8.75636364,6.40398182 L4.75490909,6.40398182 C4.36672727,6.40398182 4.05236364,6.08961818 4.05236364,5.70016364 C4.05236364,5.31198182 4.36672727,4.99634545 4.75490909,4.99634545 L8.75636364,4.99634545 C9.14581818,4.99634545 9.46145455,5.31198182 9.46145455,5.70016364 C9.46145455,6.08961818 9.14581818,6.40398182 8.75636364,6.40398182", + fill: "#575e75", + stroke: "none" + }), + ]), + ]), { id: "sb3-robot", + transform: "translate(-1, 1)" }, ), SVG.setProps( @@ -1213,7 +1257,13 @@ export default class Style { SVG.el("path", { d: "M15.5581635,12.7700651 L11.8403972,16.4941315 C11.5610922,16.7671364 11.1830854,16.9211391 10.7903784,16.9211391 C10.3990715,16.9211391 10.0210647,16.7671364 9.74035971,16.4941315 L6.02399342,12.7700651 C5.5969858,12.3430574 5.47098355,11.7060461 5.70198767,11.1530362 C5.93299179,10.6000263 6.46500128,10.24302 7.06701202,10.24302 L8.40403587,10.24302 C8.36903525,9.92101423 8.27803362,9.55700774 8.12403088,9.17200087 C8.07573002,9.05999887 8.02602913,8.94799688 7.97002813,8.83599488 C7.89302676,8.70999263 7.90072689,8.67499201 7.79502501,8.52098926 C7.62702201,8.26898476 7.47301926,8.07998139 7.29031601,7.86297752 C6.9200094,7.4639704 6.47200141,7.12096429 5.99599292,6.86895979 C5.5129843,6.6169553 5.00897531,6.46295255 4.56096732,6.37895105 C4.11995945,6.30194968 3.71395221,6.29494955 3.47594796,6.29494955 C3.35694584,6.28794943 3.2029431,6.31594993 3.12594172,6.32295005 C3.04194022,6.32995018 2.99293935,6.3369503 2.99293935,6.3369503 C2.49593048,6.38595117 2.04792249,6.02194468 1.99892162,5.52493582 C1.95692087,5.10492832 2.20192524,4.72692158 2.57293186,4.58691908 C2.57293186,4.58691908 2.62193273,4.56591871 2.6989341,4.53791821 C2.78993573,4.50991771 2.87393723,4.46091684 3.06994072,4.40491584 C3.46194772,4.28591371 3.95895658,4.15991147 4.60996819,4.09691034 C5.25397968,4.04090934 6.03099354,4.05490959 6.85070816,4.22291259 C7.66902276,4.39791571 8.53003812,4.72692158 9.32805235,5.20293007 C9.7060591,5.44793444 10.1120663,5.73493956 10.427072,6.01494456 C10.5670745,6.11994643 10.8050787,6.35795068 10.9450812,6.5049533 C11.1060841,6.67295629 11.2530867,6.84095929 11.4007893,7.01596241 C11.9670994,7.7159749 12.3871069,8.47198839 12.6601118,9.15800062 C12.8211147,9.55000762 12.9331167,9.92101423 13.0171182,10.24302 L14.5151449,10.24302 C15.1171556,10.24302 15.6491651,10.6000263 15.8801692,11.1530362 C16.1111734,11.7060461 15.9851711,12.3430574 15.5581635,12.7700651", transform: - "translate(5, 4.5) scale(-1, 1) rotate(-45.000000) translate(-11.994247, -10.494247) ", + "translate(5, 3) scale(-1, 1) rotate(-45.000000) translate(-11.994247, -10.494247) ", + stroke: "#000", + "stroke-opacity": 0.1, + "stroke-width": 2, + }, + { + paintOrder: "stroke", }), { id: "sb3-turnBack", @@ -1224,6 +1274,12 @@ export default class Style { d: "M17.5581635,12.7700651 L13.8403972,16.4941315 C13.5610922,16.7671364 13.1830854,16.9211391 12.7903784,16.9211391 C12.3990715,16.9211391 12.0210647,16.7671364 11.7403597,16.4941315 L8.02399342,12.7700651 C7.5969858,12.3430574 7.47098355,11.7060461 7.70198767,11.1530362 C7.93299179,10.6000263 8.46500128,10.24302 9.06701202,10.24302 L10.4040359,10.24302 C10.3690352,9.92101423 10.2780336,9.55700774 10.1240309,9.17200087 C10.07573,9.05999887 10.0260291,8.94799688 9.97002813,8.83599488 C9.89302676,8.70999263 9.90072689,8.67499201 9.79502501,8.52098926 C9.62702201,8.26898476 9.47301926,8.07998139 9.29031601,7.86297752 C8.9200094,7.4639704 8.47200141,7.12096429 7.99599292,6.86895979 C7.5129843,6.6169553 7.00897531,6.46295255 6.56096732,6.37895105 C6.11995945,6.30194968 5.71395221,6.29494955 5.47594796,6.29494955 C5.35694584,6.28794943 5.2029431,6.31594993 5.12594172,6.32295005 C5.04194022,6.32995018 4.99293935,6.3369503 4.99293935,6.3369503 C4.49593048,6.38595117 4.04792249,6.02194468 3.99892162,5.52493582 C3.95692087,5.10492832 4.20192524,4.72692158 4.57293186,4.58691908 C4.57293186,4.58691908 4.62193273,4.56591871 4.6989341,4.53791821 C4.78993573,4.50991771 4.87393723,4.46091684 5.06994072,4.40491584 C5.46194772,4.28591371 5.95895658,4.15991147 6.60996819,4.09691034 C7.25397968,4.04090934 8.03099354,4.05490959 8.85070816,4.22291259 C9.66902276,4.39791571 10.5300381,4.72692158 11.3280524,5.20293007 C11.7060591,5.44793444 12.1120663,5.73493956 12.427072,6.01494456 C12.5670745,6.11994643 12.8050787,6.35795068 12.9450812,6.5049533 C13.1060841,6.67295629 13.2530867,6.84095929 13.4007893,7.01596241 C13.9670994,7.7159749 14.3871069,8.47198839 14.6601118,9.15800062 C14.8211147,9.55000762 14.9331167,9.92101423 15.0171182,10.24302 L16.5151449,10.24302 C17.1171556,10.24302 17.6491651,10.6000263 17.8801692,11.1530362 C18.1111734,11.7060461 17.9851711,12.3430574 17.5581635,12.7700651", transform: "translate(5, 4.5) rotate(-45.000000) translate(-6.994247, -5.494247) ", + stroke: "#000", + "stroke-opacity": 0.1, + "stroke-width": 2, + }, + { + paintOrder: "stroke", }), { id: "sb3-turnForward", From 0b69880aec23c9fade3bf105987d7b8ebb4104c6 Mon Sep 17 00:00:00 2001 From: e016 <244850916+e016@users.noreply.github.com> Date: Sat, 13 Jun 2026 18:44:30 +0000 Subject: [PATCH 11/35] Format code using Prettier --- scratch3/blocks.js | 7 +++++- scratch3/style.js | 62 +++++++++++++++++++++++++--------------------- 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index f93aaa732..0b3c70e4b 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -502,7 +502,12 @@ export class IconView { globe: { width: 10, height: 10, fillAttribute: "stroke" }, globeBig: { width: 10, height: 10, fillAttribute: "stroke" }, square: { width: 10, height: 10 }, - robot: { width: 13, height: 17, fillAttribute: ["fill", "stroke"], scale: 1.2 }, + robot: { + width: 13, + height: 17, + fillAttribute: ["fill", "stroke"], + scale: 1.2, + }, stepForward: { width: 10, height: 10 }, file: { width: 18, height: 18, scale: 1.2 }, fullScreen: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, diff --git a/scratch3/style.js b/scratch3/style.js index ff8c121d0..bc1434c53 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -776,30 +776,30 @@ export default class Style { SVG.group([ SVG.el("path", { d: "M9.60527273,8.03587273 L3.906,8.03587273 C3.20345455,8.03587273 2.63327273,7.46696364 2.63327273,6.76314545 L2.63327273,4.63641818 C2.63327273,3.93387273 3.20345455,3.36369091 3.906,3.36369091 L9.60527273,3.36369091 C10.3090909,3.36369091 10.878,3.93387273 10.878,4.63641818 L10.878,6.76314545 C10.878,7.46696364 10.3090909,8.03587273 9.60527273,8.03587273", - stroke: "none" + stroke: "none", }), SVG.el("path", { d: "M9.11310909,13.0782909 L4.39892727,13.0782909 C3.77147273,13.0782909 3.26238182,12.5692 3.26238182,11.9404727 L3.26238182,11.0126545 C3.26238182,9.0832 4.82656364,7.51901818 6.75601818,7.51901818 C8.68547273,7.51901818 10.2496545,9.0832 10.2496545,11.0126545 L10.2496545,11.9404727 C10.2496545,12.5692 9.74056364,13.0782909 9.11310909,13.0782909", - stroke: "none" + stroke: "none", }), SVG.el("path", { d: "M7.777,15.5218 C7.777,16.0843455 7.32009091,16.5425273 6.75627273,16.5425273 C6.19245455,16.5425273 5.73554545,16.0843455 5.73554545,15.5218 C5.73554545,14.9579818 6.19245455,14.4998 6.75627273,14.4998 C7.32009091,14.4998 7.777,14.9579818 7.777,15.5218", - stroke: "none" + stroke: "none", }), SVG.el("path", { d: "M8.03052727,1.27450909 C8.03052727,1.9796 7.46034545,2.54978182 6.75652727,2.54978182 C6.05143636,2.54978182 5.48125455,1.9796 5.48125455,1.27450909 C5.48125455,0.570690909 6.05143636,0.000509090909 6.75652727,0.000509090909 C7.46034545,0.000509090909 8.03052727,0.570690909 8.03052727,1.27450909", - stroke: "none" + stroke: "none", }), SVG.el("path", { d: "M8.75636364,6.40398182 L4.75490909,6.40398182 C4.36672727,6.40398182 4.05236364,6.08961818 4.05236364,5.70016364 C4.05236364,5.31198182 4.36672727,4.99634545 4.75490909,4.99634545 L8.75636364,4.99634545 C9.14581818,4.99634545 9.46145455,5.31198182 9.46145455,5.70016364 C9.46145455,6.08961818 9.14581818,6.40398182 8.75636364,6.40398182", fill: "#575e75", - stroke: "none" + stroke: "none", }), ]), ]), { id: "sb3-robot", - transform: "translate(-1, 1)" + transform: "translate(-1, 1)", }, ), SVG.setProps( @@ -1254,33 +1254,39 @@ export default class Style { }, ), SVG.setProps( - SVG.el("path", { - d: "M15.5581635,12.7700651 L11.8403972,16.4941315 C11.5610922,16.7671364 11.1830854,16.9211391 10.7903784,16.9211391 C10.3990715,16.9211391 10.0210647,16.7671364 9.74035971,16.4941315 L6.02399342,12.7700651 C5.5969858,12.3430574 5.47098355,11.7060461 5.70198767,11.1530362 C5.93299179,10.6000263 6.46500128,10.24302 7.06701202,10.24302 L8.40403587,10.24302 C8.36903525,9.92101423 8.27803362,9.55700774 8.12403088,9.17200087 C8.07573002,9.05999887 8.02602913,8.94799688 7.97002813,8.83599488 C7.89302676,8.70999263 7.90072689,8.67499201 7.79502501,8.52098926 C7.62702201,8.26898476 7.47301926,8.07998139 7.29031601,7.86297752 C6.9200094,7.4639704 6.47200141,7.12096429 5.99599292,6.86895979 C5.5129843,6.6169553 5.00897531,6.46295255 4.56096732,6.37895105 C4.11995945,6.30194968 3.71395221,6.29494955 3.47594796,6.29494955 C3.35694584,6.28794943 3.2029431,6.31594993 3.12594172,6.32295005 C3.04194022,6.32995018 2.99293935,6.3369503 2.99293935,6.3369503 C2.49593048,6.38595117 2.04792249,6.02194468 1.99892162,5.52493582 C1.95692087,5.10492832 2.20192524,4.72692158 2.57293186,4.58691908 C2.57293186,4.58691908 2.62193273,4.56591871 2.6989341,4.53791821 C2.78993573,4.50991771 2.87393723,4.46091684 3.06994072,4.40491584 C3.46194772,4.28591371 3.95895658,4.15991147 4.60996819,4.09691034 C5.25397968,4.04090934 6.03099354,4.05490959 6.85070816,4.22291259 C7.66902276,4.39791571 8.53003812,4.72692158 9.32805235,5.20293007 C9.7060591,5.44793444 10.1120663,5.73493956 10.427072,6.01494456 C10.5670745,6.11994643 10.8050787,6.35795068 10.9450812,6.5049533 C11.1060841,6.67295629 11.2530867,6.84095929 11.4007893,7.01596241 C11.9670994,7.7159749 12.3871069,8.47198839 12.6601118,9.15800062 C12.8211147,9.55000762 12.9331167,9.92101423 13.0171182,10.24302 L14.5151449,10.24302 C15.1171556,10.24302 15.6491651,10.6000263 15.8801692,11.1530362 C16.1111734,11.7060461 15.9851711,12.3430574 15.5581635,12.7700651", - transform: - "translate(5, 3) scale(-1, 1) rotate(-45.000000) translate(-11.994247, -10.494247) ", - stroke: "#000", - "stroke-opacity": 0.1, - "stroke-width": 2, - }, - { - paintOrder: "stroke", - }), + SVG.el( + "path", + { + d: "M15.5581635,12.7700651 L11.8403972,16.4941315 C11.5610922,16.7671364 11.1830854,16.9211391 10.7903784,16.9211391 C10.3990715,16.9211391 10.0210647,16.7671364 9.74035971,16.4941315 L6.02399342,12.7700651 C5.5969858,12.3430574 5.47098355,11.7060461 5.70198767,11.1530362 C5.93299179,10.6000263 6.46500128,10.24302 7.06701202,10.24302 L8.40403587,10.24302 C8.36903525,9.92101423 8.27803362,9.55700774 8.12403088,9.17200087 C8.07573002,9.05999887 8.02602913,8.94799688 7.97002813,8.83599488 C7.89302676,8.70999263 7.90072689,8.67499201 7.79502501,8.52098926 C7.62702201,8.26898476 7.47301926,8.07998139 7.29031601,7.86297752 C6.9200094,7.4639704 6.47200141,7.12096429 5.99599292,6.86895979 C5.5129843,6.6169553 5.00897531,6.46295255 4.56096732,6.37895105 C4.11995945,6.30194968 3.71395221,6.29494955 3.47594796,6.29494955 C3.35694584,6.28794943 3.2029431,6.31594993 3.12594172,6.32295005 C3.04194022,6.32995018 2.99293935,6.3369503 2.99293935,6.3369503 C2.49593048,6.38595117 2.04792249,6.02194468 1.99892162,5.52493582 C1.95692087,5.10492832 2.20192524,4.72692158 2.57293186,4.58691908 C2.57293186,4.58691908 2.62193273,4.56591871 2.6989341,4.53791821 C2.78993573,4.50991771 2.87393723,4.46091684 3.06994072,4.40491584 C3.46194772,4.28591371 3.95895658,4.15991147 4.60996819,4.09691034 C5.25397968,4.04090934 6.03099354,4.05490959 6.85070816,4.22291259 C7.66902276,4.39791571 8.53003812,4.72692158 9.32805235,5.20293007 C9.7060591,5.44793444 10.1120663,5.73493956 10.427072,6.01494456 C10.5670745,6.11994643 10.8050787,6.35795068 10.9450812,6.5049533 C11.1060841,6.67295629 11.2530867,6.84095929 11.4007893,7.01596241 C11.9670994,7.7159749 12.3871069,8.47198839 12.6601118,9.15800062 C12.8211147,9.55000762 12.9331167,9.92101423 13.0171182,10.24302 L14.5151449,10.24302 C15.1171556,10.24302 15.6491651,10.6000263 15.8801692,11.1530362 C16.1111734,11.7060461 15.9851711,12.3430574 15.5581635,12.7700651", + transform: + "translate(5, 3) scale(-1, 1) rotate(-45.000000) translate(-11.994247, -10.494247) ", + stroke: "#000", + "stroke-opacity": 0.1, + "stroke-width": 2, + }, + { + paintOrder: "stroke", + }, + ), { id: "sb3-turnBack", }, ), SVG.setProps( - SVG.el("path", { - d: "M17.5581635,12.7700651 L13.8403972,16.4941315 C13.5610922,16.7671364 13.1830854,16.9211391 12.7903784,16.9211391 C12.3990715,16.9211391 12.0210647,16.7671364 11.7403597,16.4941315 L8.02399342,12.7700651 C7.5969858,12.3430574 7.47098355,11.7060461 7.70198767,11.1530362 C7.93299179,10.6000263 8.46500128,10.24302 9.06701202,10.24302 L10.4040359,10.24302 C10.3690352,9.92101423 10.2780336,9.55700774 10.1240309,9.17200087 C10.07573,9.05999887 10.0260291,8.94799688 9.97002813,8.83599488 C9.89302676,8.70999263 9.90072689,8.67499201 9.79502501,8.52098926 C9.62702201,8.26898476 9.47301926,8.07998139 9.29031601,7.86297752 C8.9200094,7.4639704 8.47200141,7.12096429 7.99599292,6.86895979 C7.5129843,6.6169553 7.00897531,6.46295255 6.56096732,6.37895105 C6.11995945,6.30194968 5.71395221,6.29494955 5.47594796,6.29494955 C5.35694584,6.28794943 5.2029431,6.31594993 5.12594172,6.32295005 C5.04194022,6.32995018 4.99293935,6.3369503 4.99293935,6.3369503 C4.49593048,6.38595117 4.04792249,6.02194468 3.99892162,5.52493582 C3.95692087,5.10492832 4.20192524,4.72692158 4.57293186,4.58691908 C4.57293186,4.58691908 4.62193273,4.56591871 4.6989341,4.53791821 C4.78993573,4.50991771 4.87393723,4.46091684 5.06994072,4.40491584 C5.46194772,4.28591371 5.95895658,4.15991147 6.60996819,4.09691034 C7.25397968,4.04090934 8.03099354,4.05490959 8.85070816,4.22291259 C9.66902276,4.39791571 10.5300381,4.72692158 11.3280524,5.20293007 C11.7060591,5.44793444 12.1120663,5.73493956 12.427072,6.01494456 C12.5670745,6.11994643 12.8050787,6.35795068 12.9450812,6.5049533 C13.1060841,6.67295629 13.2530867,6.84095929 13.4007893,7.01596241 C13.9670994,7.7159749 14.3871069,8.47198839 14.6601118,9.15800062 C14.8211147,9.55000762 14.9331167,9.92101423 15.0171182,10.24302 L16.5151449,10.24302 C17.1171556,10.24302 17.6491651,10.6000263 17.8801692,11.1530362 C18.1111734,11.7060461 17.9851711,12.3430574 17.5581635,12.7700651", - transform: - "translate(5, 4.5) rotate(-45.000000) translate(-6.994247, -5.494247) ", - stroke: "#000", - "stroke-opacity": 0.1, - "stroke-width": 2, - }, - { - paintOrder: "stroke", - }), + SVG.el( + "path", + { + d: "M17.5581635,12.7700651 L13.8403972,16.4941315 C13.5610922,16.7671364 13.1830854,16.9211391 12.7903784,16.9211391 C12.3990715,16.9211391 12.0210647,16.7671364 11.7403597,16.4941315 L8.02399342,12.7700651 C7.5969858,12.3430574 7.47098355,11.7060461 7.70198767,11.1530362 C7.93299179,10.6000263 8.46500128,10.24302 9.06701202,10.24302 L10.4040359,10.24302 C10.3690352,9.92101423 10.2780336,9.55700774 10.1240309,9.17200087 C10.07573,9.05999887 10.0260291,8.94799688 9.97002813,8.83599488 C9.89302676,8.70999263 9.90072689,8.67499201 9.79502501,8.52098926 C9.62702201,8.26898476 9.47301926,8.07998139 9.29031601,7.86297752 C8.9200094,7.4639704 8.47200141,7.12096429 7.99599292,6.86895979 C7.5129843,6.6169553 7.00897531,6.46295255 6.56096732,6.37895105 C6.11995945,6.30194968 5.71395221,6.29494955 5.47594796,6.29494955 C5.35694584,6.28794943 5.2029431,6.31594993 5.12594172,6.32295005 C5.04194022,6.32995018 4.99293935,6.3369503 4.99293935,6.3369503 C4.49593048,6.38595117 4.04792249,6.02194468 3.99892162,5.52493582 C3.95692087,5.10492832 4.20192524,4.72692158 4.57293186,4.58691908 C4.57293186,4.58691908 4.62193273,4.56591871 4.6989341,4.53791821 C4.78993573,4.50991771 4.87393723,4.46091684 5.06994072,4.40491584 C5.46194772,4.28591371 5.95895658,4.15991147 6.60996819,4.09691034 C7.25397968,4.04090934 8.03099354,4.05490959 8.85070816,4.22291259 C9.66902276,4.39791571 10.5300381,4.72692158 11.3280524,5.20293007 C11.7060591,5.44793444 12.1120663,5.73493956 12.427072,6.01494456 C12.5670745,6.11994643 12.8050787,6.35795068 12.9450812,6.5049533 C13.1060841,6.67295629 13.2530867,6.84095929 13.4007893,7.01596241 C13.9670994,7.7159749 14.3871069,8.47198839 14.6601118,9.15800062 C14.8211147,9.55000762 14.9331167,9.92101423 15.0171182,10.24302 L16.5151449,10.24302 C17.1171556,10.24302 17.6491651,10.6000263 17.8801692,11.1530362 C18.1111734,11.7060461 17.9851711,12.3430574 17.5581635,12.7700651", + transform: + "translate(5, 4.5) rotate(-45.000000) translate(-6.994247, -5.494247) ", + stroke: "#000", + "stroke-opacity": 0.1, + "stroke-width": 2, + }, + { + paintOrder: "stroke", + }, + ), { id: "sb3-turnForward", }, From 183195b8385cdda2ddf3c625daba2f303e9d2526 Mon Sep 17 00:00:00 2001 From: e016 Date: Sat, 13 Jun 2026 13:11:20 -0600 Subject: [PATCH 12/35] new scratch3 flash symbol, better undefined symbol font weight --- scratch3/blocks.js | 4 ++-- scratch3/style.js | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index f93aaa732..1ef527bde 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -146,7 +146,7 @@ export class LabelView { this._fontSize = "12pt" } - let fontWeight = /comment-label/.test(this.cls) ? "500" : "400" + let fontWeight = this.modified ? "700" : /comment-label/.test(this.cls) ? "500" : "400" let scaledFontSize = scaleFontSize(this.fontSize, this.scale) let fontSizeData = splitFontSize(this.fontSize, this.scale) @@ -480,7 +480,7 @@ export class IconView { cloud: { width: 16, height: 10 }, cloudGradient: { width: 16, height: 10 }, cloudOutline: { width: 16, height: 10, fillAttribute: "stroke" }, - flash: { width: 8, height: 10 }, + flash: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, blitz: { alias: "flash", scale: 1 }, camera: { width: 15, height: 15, scale: 1.3 }, circleSolid: { width: 10, height: 10 }, diff --git a/scratch3/style.js b/scratch3/style.js index ff8c121d0..9620b1ae5 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -20,7 +20,6 @@ const highContrastIcons = new Set([ "cloudGradient", "turtle", "turtleOutline", - "flash", "circle", "circleSolid", "notes", @@ -81,7 +80,6 @@ const snapIcons = new Set([ "cloudGradient", "turtle", "turtleOutline", - "flash", "circle", "circleSolid", "storage", @@ -551,7 +549,9 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - d: "M 2.6666666666666665 0 L 0 3.3333333333333335 L 2.6666666666666665 3.3333333333333335 L 0 6.666666666666667 L 2.6666666666666665 6.666666666666667 L 0 10 L 8 5.555555555555555 L 5.333333333333333 5.555555555555555 L 8 2.2222222222222223 L 5.333333333333333 2.2222222222222223 L 8 0 Z", + d: `M6.1919265,9.97041267 C6.39817578,10.4827993 6.8451296,10.5515418 7.19456044,10.1185825 L7.4614448,9.78790167 C7.80893496,9.35734694 8.43422564,9.28545516 8.87346661,9.63974521 L11.68656,11.9087754 C12.118908,12.2575055 12.3030858,12.1265903 12.0962705,11.6122341 L9.74921575,5.77503453 C9.54314462,5.26252912 9.09584472,5.19401738 8.7458012,5.62738515 L8.4784489,5.9583779 C8.13034947,6.38933881 7.50456486,6.46155987 7.06532389,6.10726982 L4.25223048,3.83823967 C3.81988252,3.48950949 3.63584851,3.62032891 3.84284261,4.13456591 L6.1919265,9.97041267 Z`, + transform: "translate(3, 5.873508) rotate(69.000000) translate(-7.969395, -7.873508)", + "stroke-width": 1, }), { id: "sb3-flash", From 5f612567dab7f153bf7e7385b1a12253bf8d9842 Mon Sep 17 00:00:00 2001 From: e016 <244850916+e016@users.noreply.github.com> Date: Sat, 13 Jun 2026 19:12:00 +0000 Subject: [PATCH 13/35] Format code using Prettier --- scratch3/blocks.js | 6 +++++- scratch3/style.js | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 3fe9b1d69..3fbfa7510 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -146,7 +146,11 @@ export class LabelView { this._fontSize = "12pt" } - let fontWeight = this.modified ? "700" : /comment-label/.test(this.cls) ? "500" : "400" + let fontWeight = this.modified + ? "700" + : /comment-label/.test(this.cls) + ? "500" + : "400" let scaledFontSize = scaleFontSize(this.fontSize, this.scale) let fontSizeData = splitFontSize(this.fontSize, this.scale) diff --git a/scratch3/style.js b/scratch3/style.js index 48fa9cf81..d3306c3e8 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -550,7 +550,8 @@ export default class Style { SVG.setProps( SVG.el("path", { d: `M6.1919265,9.97041267 C6.39817578,10.4827993 6.8451296,10.5515418 7.19456044,10.1185825 L7.4614448,9.78790167 C7.80893496,9.35734694 8.43422564,9.28545516 8.87346661,9.63974521 L11.68656,11.9087754 C12.118908,12.2575055 12.3030858,12.1265903 12.0962705,11.6122341 L9.74921575,5.77503453 C9.54314462,5.26252912 9.09584472,5.19401738 8.7458012,5.62738515 L8.4784489,5.9583779 C8.13034947,6.38933881 7.50456486,6.46155987 7.06532389,6.10726982 L4.25223048,3.83823967 C3.81988252,3.48950949 3.63584851,3.62032891 3.84284261,4.13456591 L6.1919265,9.97041267 Z`, - transform: "translate(3, 5.873508) rotate(69.000000) translate(-7.969395, -7.873508)", + transform: + "translate(3, 5.873508) rotate(69.000000) translate(-7.969395, -7.873508)", "stroke-width": 1, }), { From e590e603b4ac471bbddefb4dad3e185e3bde36ed Mon Sep 17 00:00:00 2001 From: e016 Date: Sat, 13 Jun 2026 16:08:27 -0600 Subject: [PATCH 14/35] fix sb3-loop outline --- scratch3/style.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scratch3/style.js b/scratch3/style.js index d3306c3e8..ea63575d8 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -2046,7 +2046,7 @@ export default class Style { SVG.group([ SVG.el("path", { d: "M23.3,11c-0.3,0.6-0.9,1-1.5,1h-1.6c-0.1,1.3-0.5,2.5-1.1,3.6c-0.9,1.7-2.3,3.2-4.1,4.1 c-1.7,0.9-3.6,1.2-5.5,0.9c-1.8-0.3-3.5-1.1-4.9-2.3c-0.7-0.7-0.7-1.9,0-2.6c0.6-0.6,1.6-0.7,2.3-0.2H7c0.9,0.6,1.9,0.9,2.9,0.9 s1.9-0.3,2.7-0.9c1.1-0.8,1.8-2.1,1.8-3.5h-1.5c-0.9,0-1.7-0.7-1.7-1.7c0-0.4,0.2-0.9,0.5-1.2l4.4-4.4c0.7-0.6,1.7-0.6,2.4,0L23,9.2 C23.5,9.7,23.6,10.4,23.3,11z", - fill: "#231f20", + fill: "#cf8b17", }), SVG.el("path", { d: "M21.8,11h-2.6c0,1.5-0.3,2.9-1,4.2c-0.8,1.6-2.1,2.8-3.7,3.6c-1.5,0.8-3.3,1.1-4.9,0.8c-1.6-0.2-3.2-1-4.4-2.1 c-0.4-0.3-0.4-0.9-0.1-1.2c0.3-0.4,0.9-0.4,1.2-0.1l0,0c1,0.7,2.2,1.1,3.4,1.1s2.3-0.3,3.3-1c0.9-0.6,1.6-1.5,2-2.6 c0.3-0.9,0.4-1.8,0.2-2.8h-2.4c-0.4,0-0.7-0.3-0.7-0.7c0-0.2,0.1-0.3,0.2-0.4l4.4-4.4c0.3-0.3,0.7-0.3,0.9,0L22,9.8 c0.3,0.3,0.4,0.6,0.3,0.9S22,11,21.8,11z", From 7053eb8dc5c99165ad285dedfa9ee4db3be3b73f Mon Sep 17 00:00:00 2001 From: e016 Date: Sat, 13 Jun 2026 16:26:16 -0600 Subject: [PATCH 15/35] rounded thin arrows --- scratch3/blocks.js | 6 +----- scratch3/style.js | 6 +++++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 3fbfa7510..9fe82e7ae 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -212,11 +212,7 @@ export class LabelView { }), ) let lastLineGroupItem = lineGroup[lineGroup.length - 1] - if (lastLineGroupItem.getAttribute("--stroke")) { - lastLineGroupItem.style.stroke = this.color.toHexString() - } else { - lastLineGroupItem.style.fill = this.color.toHexString() - } + lastLineGroupItem.style.fill = this.color.toHexString() x += wordInfo.width height = Math.max(height, wordHeight) first = false diff --git a/scratch3/style.js b/scratch3/style.js index ea63575d8..79d1fa522 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -843,6 +843,8 @@ export default class Style { SVG.setProps( SVG.el("path", { d: "M 6.666666666666666 3.3333333333333335 L 5 1 L 3.3333333333333335 3.3333333333333335 M 5 1 L 5 9.5", + "stroke-linecap": "round", + "stroke-linejoin": "round", fill: "none", }), { @@ -934,6 +936,8 @@ export default class Style { SVG.el("path", { d: "M 6.666666666666666 3.3333333333333335 L 5 1 L 3.3333333333333335 3.3333333333333335 M 6.666666666666666 6.666666666666666 L 5 9 L 3.3333333333333335 6.666666666666666 M 5 1 L 5 9", fill: "none", + "stroke-linecap": "round", + "stroke-linejoin": "round", }), { id: "sb3-arrowUpDownThin", @@ -2011,7 +2015,7 @@ export default class Style { id: "sb3-commentArrowUp", }, ), - + // TODO: Make the outlines match the block outlines SVG.setProps( SVG.group([ SVG.el("path", { From edbfafe9ac142e489ab5208c9f6c72c824fece5e Mon Sep 17 00:00:00 2001 From: e016 Date: Sat, 13 Jun 2026 17:08:34 -0600 Subject: [PATCH 16/35] add scratch3 turnAround symbol --- scratch3/blocks.js | 2 +- scratch3/style.js | 39 ++++++++++++++++++++++----------------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 9fe82e7ae..3907d9c6e 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -521,7 +521,7 @@ export class IconView { smallStage: { width: 12, height: 10 }, normalStage: { width: 12, height: 10 }, stage: { width: 13, height: 10 }, - turnAround: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, + turnAround: { width: 24, height: 24 }, poster: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, tick: { width: 10, height: 10 }, checkedBox: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, diff --git a/scratch3/style.js b/scratch3/style.js index 79d1fa522..f17b83b09 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -98,7 +98,6 @@ const snapIcons = new Set([ "smallStage", "normalStage", "stage", - "turnAround", "poster", "tick", "checkedBox", @@ -1116,22 +1115,6 @@ export default class Style { id: "sb3-stage", }, ), - SVG.setProps( - SVG.group([ - SVG.el("path", { - d: `M 8.181980515339465 1.8180194846605362 A 4.5 4.5 0 1 1 1.8180194846605353 1.8180194846605362`, - fill: "none", - "stroke-width": 1, - }), - SVG.el("path", { - d: `M 0 0.5 L 4 0 L 3.5 3.5 Z`, - stroke: "none", - }), - ]), - { - id: "sb3-turnAround", - }, - ), SVG.setProps( SVG.group([ SVG.el("path", { @@ -2045,6 +2028,17 @@ export default class Style { id: "sb3-turnLeft", }, ), + SVG.setProps( + SVG.group([ + SVG.el("path", { + d: "M11.1795886,5.69863689 C10.0344146,5.50396503 8.8909358,5.87638076 8.11109855,6.59582023 L9.1028481,7.58526111 C9.48429024,7.97460483 9.2130425,8.63564275 8.66207052,8.63564275 L4.61878391,8.63564275 C4.27972423,8.63564275 4,8.35633095 4,8.0169248 L4,3.98044614 C4,3.42944014 4.66116637,3.15943873 5.05108499,3.53947206 L5.89873418,4.38587144 C6.67009494,3.78492788 7.56860307,3.35326419 8.50949367,3.15012834 C9.60296112,2.91398291 10.7379634,2.95630288 11.7814195,3.27793465 C13.8835895,3.91273418 15.5110759,5.6732449 15.977283,7.68767544 C16.0874774,8.17012309 15.7823237,8.66103473 15.2991637,8.77106665 C14.8499096,8.88109857 14.409132,8.62717876 14.2480787,8.21244306 L14.2480787,8.20397906 C13.7310127,6.85735764 12.4849684,5.89246235 11.1795886,5.69863689 Z M8.82041139,14.3015249 C9.96473779,14.4953503 11.1090642,14.123781 11.8889014,13.4043415 L10.8971519,12.4140542 C10.5157098,12.0247105 10.7861099,11.364519 11.3379295,11.364519 L15.3803684,11.364519 C15.7202758,11.364519 16,11.6438308 16,11.9823906 L16,16.0197156 C16,16.5698752 15.337986,16.840723 14.9480674,16.4598433 L14.1004182,15.6134439 C13.3290574,16.2143875 12.4313969,16.6460512 11.4896587,16.849187 C10.3961912,17.0861788 9.26118897,17.0438589 8.21858047,16.7222271 C6.11641049,16.0874276 4.48892405,14.3269169 4.022717,12.3124863 C3.9125226,11.8300387 4.21682866,11.339127 4.70083635,11.2290951 C5.15009042,11.1190632 5.59002034,11.372983 5.75192134,11.7877187 L5.75192134,11.7961827 C6.26813969,13.1419577 7.51503165,14.106853 8.82041139,14.3015249 Z", + transform: "translate(10.000000, 10.000000) rotate(90.000000) translate(-12.000000, -15.000000) scale(1.4, 1.4)", + }), + ]), + { + id: "sb3-turnAround", + }, + ), SVG.setProps( SVG.group([ @@ -2267,6 +2261,17 @@ export default class Style { id: "sb3-turnLeft-high-contrast", }, ), + SVG.setProps( + SVG.group([ + SVG.el("path", { + d: "M11.1795886,5.69863689 C10.0344146,5.50396503 8.8909358,5.87638076 8.11109855,6.59582023 L9.1028481,7.58526111 C9.48429024,7.97460483 9.2130425,8.63564275 8.66207052,8.63564275 L4.61878391,8.63564275 C4.27972423,8.63564275 4,8.35633095 4,8.0169248 L4,3.98044614 C4,3.42944014 4.66116637,3.15943873 5.05108499,3.53947206 L5.89873418,4.38587144 C6.67009494,3.78492788 7.56860307,3.35326419 8.50949367,3.15012834 C9.60296112,2.91398291 10.7379634,2.95630288 11.7814195,3.27793465 C13.8835895,3.91273418 15.5110759,5.6732449 15.977283,7.68767544 C16.0874774,8.17012309 15.7823237,8.66103473 15.2991637,8.77106665 C14.8499096,8.88109857 14.409132,8.62717876 14.2480787,8.21244306 L14.2480787,8.20397906 C13.7310127,6.85735764 12.4849684,5.89246235 11.1795886,5.69863689 Z M8.82041139,14.3015249 C9.96473779,14.4953503 11.1090642,14.123781 11.8889014,13.4043415 L10.8971519,12.4140542 C10.5157098,12.0247105 10.7861099,11.364519 11.3379295,11.364519 L15.3803684,11.364519 C15.7202758,11.364519 16,11.6438308 16,11.9823906 L16,16.0197156 C16,16.5698752 15.337986,16.840723 14.9480674,16.4598433 L14.1004182,15.6134439 C13.3290574,16.2143875 12.4313969,16.6460512 11.4896587,16.849187 C10.3961912,17.0861788 9.26118897,17.0438589 8.21858047,16.7222271 C6.11641049,16.0874276 4.48892405,14.3269169 4.022717,12.3124863 C3.9125226,11.8300387 4.21682866,11.339127 4.70083635,11.2290951 C5.15009042,11.1190632 5.59002034,11.372983 5.75192134,11.7877187 L5.75192134,11.7961827 C6.26813969,13.1419577 7.51503165,14.106853 8.82041139,14.3015249 Z", + transform: "translate(10.000000, 10.000000) rotate(90.000000) translate(-12.000000, -15.000000) scale(1.4, 1.4)", + }), + ]), + { + id: "sb3-turnAround-high-contrast", + }, + ), SVG.setProps( SVG.group([ SVG.el("path", { From 44aafe3710c3091cd787ef10c9c1f2e2d2d31811 Mon Sep 17 00:00:00 2001 From: e016 <244850916+e016@users.noreply.github.com> Date: Sat, 13 Jun 2026 23:09:15 +0000 Subject: [PATCH 17/35] Format code using Prettier --- scratch3/style.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scratch3/style.js b/scratch3/style.js index f17b83b09..298e29cb1 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -2032,7 +2032,8 @@ export default class Style { SVG.group([ SVG.el("path", { d: "M11.1795886,5.69863689 C10.0344146,5.50396503 8.8909358,5.87638076 8.11109855,6.59582023 L9.1028481,7.58526111 C9.48429024,7.97460483 9.2130425,8.63564275 8.66207052,8.63564275 L4.61878391,8.63564275 C4.27972423,8.63564275 4,8.35633095 4,8.0169248 L4,3.98044614 C4,3.42944014 4.66116637,3.15943873 5.05108499,3.53947206 L5.89873418,4.38587144 C6.67009494,3.78492788 7.56860307,3.35326419 8.50949367,3.15012834 C9.60296112,2.91398291 10.7379634,2.95630288 11.7814195,3.27793465 C13.8835895,3.91273418 15.5110759,5.6732449 15.977283,7.68767544 C16.0874774,8.17012309 15.7823237,8.66103473 15.2991637,8.77106665 C14.8499096,8.88109857 14.409132,8.62717876 14.2480787,8.21244306 L14.2480787,8.20397906 C13.7310127,6.85735764 12.4849684,5.89246235 11.1795886,5.69863689 Z M8.82041139,14.3015249 C9.96473779,14.4953503 11.1090642,14.123781 11.8889014,13.4043415 L10.8971519,12.4140542 C10.5157098,12.0247105 10.7861099,11.364519 11.3379295,11.364519 L15.3803684,11.364519 C15.7202758,11.364519 16,11.6438308 16,11.9823906 L16,16.0197156 C16,16.5698752 15.337986,16.840723 14.9480674,16.4598433 L14.1004182,15.6134439 C13.3290574,16.2143875 12.4313969,16.6460512 11.4896587,16.849187 C10.3961912,17.0861788 9.26118897,17.0438589 8.21858047,16.7222271 C6.11641049,16.0874276 4.48892405,14.3269169 4.022717,12.3124863 C3.9125226,11.8300387 4.21682866,11.339127 4.70083635,11.2290951 C5.15009042,11.1190632 5.59002034,11.372983 5.75192134,11.7877187 L5.75192134,11.7961827 C6.26813969,13.1419577 7.51503165,14.106853 8.82041139,14.3015249 Z", - transform: "translate(10.000000, 10.000000) rotate(90.000000) translate(-12.000000, -15.000000) scale(1.4, 1.4)", + transform: + "translate(10.000000, 10.000000) rotate(90.000000) translate(-12.000000, -15.000000) scale(1.4, 1.4)", }), ]), { @@ -2265,7 +2266,8 @@ export default class Style { SVG.group([ SVG.el("path", { d: "M11.1795886,5.69863689 C10.0344146,5.50396503 8.8909358,5.87638076 8.11109855,6.59582023 L9.1028481,7.58526111 C9.48429024,7.97460483 9.2130425,8.63564275 8.66207052,8.63564275 L4.61878391,8.63564275 C4.27972423,8.63564275 4,8.35633095 4,8.0169248 L4,3.98044614 C4,3.42944014 4.66116637,3.15943873 5.05108499,3.53947206 L5.89873418,4.38587144 C6.67009494,3.78492788 7.56860307,3.35326419 8.50949367,3.15012834 C9.60296112,2.91398291 10.7379634,2.95630288 11.7814195,3.27793465 C13.8835895,3.91273418 15.5110759,5.6732449 15.977283,7.68767544 C16.0874774,8.17012309 15.7823237,8.66103473 15.2991637,8.77106665 C14.8499096,8.88109857 14.409132,8.62717876 14.2480787,8.21244306 L14.2480787,8.20397906 C13.7310127,6.85735764 12.4849684,5.89246235 11.1795886,5.69863689 Z M8.82041139,14.3015249 C9.96473779,14.4953503 11.1090642,14.123781 11.8889014,13.4043415 L10.8971519,12.4140542 C10.5157098,12.0247105 10.7861099,11.364519 11.3379295,11.364519 L15.3803684,11.364519 C15.7202758,11.364519 16,11.6438308 16,11.9823906 L16,16.0197156 C16,16.5698752 15.337986,16.840723 14.9480674,16.4598433 L14.1004182,15.6134439 C13.3290574,16.2143875 12.4313969,16.6460512 11.4896587,16.849187 C10.3961912,17.0861788 9.26118897,17.0438589 8.21858047,16.7222271 C6.11641049,16.0874276 4.48892405,14.3269169 4.022717,12.3124863 C3.9125226,11.8300387 4.21682866,11.339127 4.70083635,11.2290951 C5.15009042,11.1190632 5.59002034,11.372983 5.75192134,11.7877187 L5.75192134,11.7961827 C6.26813969,13.1419577 7.51503165,14.106853 8.82041139,14.3015249 Z", - transform: "translate(10.000000, 10.000000) rotate(90.000000) translate(-12.000000, -15.000000) scale(1.4, 1.4)", + transform: + "translate(10.000000, 10.000000) rotate(90.000000) translate(-12.000000, -15.000000) scale(1.4, 1.4)", }), ]), { From 73306477c265723783e858ef3f73c9ca4f2f9eb9 Mon Sep 17 00:00:00 2001 From: e016 Date: Sat, 13 Jun 2026 17:54:43 -0600 Subject: [PATCH 18/35] add stroke to turnAround --- scratch3/style.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scratch3/style.js b/scratch3/style.js index 298e29cb1..ce04184fc 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -2034,6 +2034,12 @@ export default class Style { d: "M11.1795886,5.69863689 C10.0344146,5.50396503 8.8909358,5.87638076 8.11109855,6.59582023 L9.1028481,7.58526111 C9.48429024,7.97460483 9.2130425,8.63564275 8.66207052,8.63564275 L4.61878391,8.63564275 C4.27972423,8.63564275 4,8.35633095 4,8.0169248 L4,3.98044614 C4,3.42944014 4.66116637,3.15943873 5.05108499,3.53947206 L5.89873418,4.38587144 C6.67009494,3.78492788 7.56860307,3.35326419 8.50949367,3.15012834 C9.60296112,2.91398291 10.7379634,2.95630288 11.7814195,3.27793465 C13.8835895,3.91273418 15.5110759,5.6732449 15.977283,7.68767544 C16.0874774,8.17012309 15.7823237,8.66103473 15.2991637,8.77106665 C14.8499096,8.88109857 14.409132,8.62717876 14.2480787,8.21244306 L14.2480787,8.20397906 C13.7310127,6.85735764 12.4849684,5.89246235 11.1795886,5.69863689 Z M8.82041139,14.3015249 C9.96473779,14.4953503 11.1090642,14.123781 11.8889014,13.4043415 L10.8971519,12.4140542 C10.5157098,12.0247105 10.7861099,11.364519 11.3379295,11.364519 L15.3803684,11.364519 C15.7202758,11.364519 16,11.6438308 16,11.9823906 L16,16.0197156 C16,16.5698752 15.337986,16.840723 14.9480674,16.4598433 L14.1004182,15.6134439 C13.3290574,16.2143875 12.4313969,16.6460512 11.4896587,16.849187 C10.3961912,17.0861788 9.26118897,17.0438589 8.21858047,16.7222271 C6.11641049,16.0874276 4.48892405,14.3269169 4.022717,12.3124863 C3.9125226,11.8300387 4.21682866,11.339127 4.70083635,11.2290951 C5.15009042,11.1190632 5.59002034,11.372983 5.75192134,11.7877187 L5.75192134,11.7961827 C6.26813969,13.1419577 7.51503165,14.106853 8.82041139,14.3015249 Z", transform: "translate(10.000000, 10.000000) rotate(90.000000) translate(-12.000000, -15.000000) scale(1.4, 1.4)", + stroke: "#000", + "stroke-opacity": 0.1, + "stroke-width": 2, + }, + { + paintOrder: "stroke", }), ]), { From 39f889ff6c88940adb672df21dd2534c4c529d8e Mon Sep 17 00:00:00 2001 From: e016 <244850916+e016@users.noreply.github.com> Date: Sat, 13 Jun 2026 23:55:23 +0000 Subject: [PATCH 19/35] Format code using Prettier --- scratch3/style.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/scratch3/style.js b/scratch3/style.js index ce04184fc..3ec7cdfdc 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -2030,17 +2030,20 @@ export default class Style { ), SVG.setProps( SVG.group([ - SVG.el("path", { - d: "M11.1795886,5.69863689 C10.0344146,5.50396503 8.8909358,5.87638076 8.11109855,6.59582023 L9.1028481,7.58526111 C9.48429024,7.97460483 9.2130425,8.63564275 8.66207052,8.63564275 L4.61878391,8.63564275 C4.27972423,8.63564275 4,8.35633095 4,8.0169248 L4,3.98044614 C4,3.42944014 4.66116637,3.15943873 5.05108499,3.53947206 L5.89873418,4.38587144 C6.67009494,3.78492788 7.56860307,3.35326419 8.50949367,3.15012834 C9.60296112,2.91398291 10.7379634,2.95630288 11.7814195,3.27793465 C13.8835895,3.91273418 15.5110759,5.6732449 15.977283,7.68767544 C16.0874774,8.17012309 15.7823237,8.66103473 15.2991637,8.77106665 C14.8499096,8.88109857 14.409132,8.62717876 14.2480787,8.21244306 L14.2480787,8.20397906 C13.7310127,6.85735764 12.4849684,5.89246235 11.1795886,5.69863689 Z M8.82041139,14.3015249 C9.96473779,14.4953503 11.1090642,14.123781 11.8889014,13.4043415 L10.8971519,12.4140542 C10.5157098,12.0247105 10.7861099,11.364519 11.3379295,11.364519 L15.3803684,11.364519 C15.7202758,11.364519 16,11.6438308 16,11.9823906 L16,16.0197156 C16,16.5698752 15.337986,16.840723 14.9480674,16.4598433 L14.1004182,15.6134439 C13.3290574,16.2143875 12.4313969,16.6460512 11.4896587,16.849187 C10.3961912,17.0861788 9.26118897,17.0438589 8.21858047,16.7222271 C6.11641049,16.0874276 4.48892405,14.3269169 4.022717,12.3124863 C3.9125226,11.8300387 4.21682866,11.339127 4.70083635,11.2290951 C5.15009042,11.1190632 5.59002034,11.372983 5.75192134,11.7877187 L5.75192134,11.7961827 C6.26813969,13.1419577 7.51503165,14.106853 8.82041139,14.3015249 Z", - transform: - "translate(10.000000, 10.000000) rotate(90.000000) translate(-12.000000, -15.000000) scale(1.4, 1.4)", - stroke: "#000", - "stroke-opacity": 0.1, - "stroke-width": 2, - }, - { - paintOrder: "stroke", - }), + SVG.el( + "path", + { + d: "M11.1795886,5.69863689 C10.0344146,5.50396503 8.8909358,5.87638076 8.11109855,6.59582023 L9.1028481,7.58526111 C9.48429024,7.97460483 9.2130425,8.63564275 8.66207052,8.63564275 L4.61878391,8.63564275 C4.27972423,8.63564275 4,8.35633095 4,8.0169248 L4,3.98044614 C4,3.42944014 4.66116637,3.15943873 5.05108499,3.53947206 L5.89873418,4.38587144 C6.67009494,3.78492788 7.56860307,3.35326419 8.50949367,3.15012834 C9.60296112,2.91398291 10.7379634,2.95630288 11.7814195,3.27793465 C13.8835895,3.91273418 15.5110759,5.6732449 15.977283,7.68767544 C16.0874774,8.17012309 15.7823237,8.66103473 15.2991637,8.77106665 C14.8499096,8.88109857 14.409132,8.62717876 14.2480787,8.21244306 L14.2480787,8.20397906 C13.7310127,6.85735764 12.4849684,5.89246235 11.1795886,5.69863689 Z M8.82041139,14.3015249 C9.96473779,14.4953503 11.1090642,14.123781 11.8889014,13.4043415 L10.8971519,12.4140542 C10.5157098,12.0247105 10.7861099,11.364519 11.3379295,11.364519 L15.3803684,11.364519 C15.7202758,11.364519 16,11.6438308 16,11.9823906 L16,16.0197156 C16,16.5698752 15.337986,16.840723 14.9480674,16.4598433 L14.1004182,15.6134439 C13.3290574,16.2143875 12.4313969,16.6460512 11.4896587,16.849187 C10.3961912,17.0861788 9.26118897,17.0438589 8.21858047,16.7222271 C6.11641049,16.0874276 4.48892405,14.3269169 4.022717,12.3124863 C3.9125226,11.8300387 4.21682866,11.339127 4.70083635,11.2290951 C5.15009042,11.1190632 5.59002034,11.372983 5.75192134,11.7877187 L5.75192134,11.7961827 C6.26813969,13.1419577 7.51503165,14.106853 8.82041139,14.3015249 Z", + transform: + "translate(10.000000, 10.000000) rotate(90.000000) translate(-12.000000, -15.000000) scale(1.4, 1.4)", + stroke: "#000", + "stroke-opacity": 0.1, + "stroke-width": 2, + }, + { + paintOrder: "stroke", + }, + ), ]), { id: "sb3-turnAround", From 5df9882a98161acbf51b2e922db19dc6a6922cac Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 16:26:13 -0600 Subject: [PATCH 20/35] Revert `verticalEllipsis` because the circles didn't change in size and weren't full circles --- scratch3/blocks.js | 3 +-- scratch3/style.js | 9 ++++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 3907d9c6e..5d02daa61 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -467,8 +467,7 @@ export class IconView { }, verticalEllipsis: { width: 0, - height: 20, - dy: 10, + height: 10, scale: 10 / 6, color: new Color(0, 0, 0), }, diff --git a/scratch3/style.js b/scratch3/style.js index 3ec7cdfdc..8d05dd0e6 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -421,14 +421,13 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - // M x y, r r x,l,s x y - d: `M 0 1 A 1 1 0 1 0 1 1 - M 0 5 A 1 1 0 1 0 1 5 - M 0 9 A 1 1 0 1 0 1 9`, + // M x y, r r x,l,s x y + d: `M 2 1 A 1 1 0 1 1 1.9999995000000417 0.9990000001666661 + M 2 5 A 1 1 0 1 1 1.9999995000000417 4.999000000166666 + M 2 9 A 1 1 0 1 1 1.9999995000000417 8.999000000166665`, }), { id: "sb3-verticalEllipsis", - transform: "translate(-1, -1)", }, ), SVG.setProps( From 56f92582a52455a39b5c4b5c376c57595b734d96 Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 16:47:05 -0600 Subject: [PATCH 21/35] Fix up the camera icon --- scratch3/blocks.js | 2 +- scratch3/style.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 5d02daa61..d3e8b7197 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -481,7 +481,7 @@ export class IconView { cloudOutline: { width: 16, height: 10, fillAttribute: "stroke" }, flash: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, blitz: { alias: "flash", scale: 1 }, - camera: { width: 15, height: 15, scale: 1.3 }, + camera: { width: 17, height: 15, scale: 1.3 }, circleSolid: { width: 10, height: 10 }, circle: { width: 10, height: 10, fillAttribute: "stroke" }, notes: { alias: "musicBlock" }, diff --git a/scratch3/style.js b/scratch3/style.js index 8d05dd0e6..74ad43f61 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -558,12 +558,11 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - d: `M10,14.5 C8.3485,14.5 7,13.1515 7,11.5 C7,9.8365 8.3485,8.5 10,8.5 C11.6635,8.5 13,9.8365 13,11.5 C13,13.1515 11.6635,14.5 10,14.5 M16,6.25 L14.95,6.25 C14.6635,6.25 14.425,6.1 14.2885,5.86 L13.2835,4.0315 C13.015,3.55 12.52,3.25 11.965,3.25 L8.05,3.25 C7.495,3.25 7,3.55 6.7285,4.0315 L5.71,5.86 C5.575,6.1 5.335,6.25 5.065,6.25 L4,6.25 C3.175,6.25 2.5,6.925 2.5,7.75 L2.5,15.25 C2.5,16.0765 3.175,16.75 4,16.75 L16,16.75 C16.825,16.75 17.5,16.0765 17.5,15.25 L17.5,7.75 C17.5,6.925 16.825,6.25 16,6.25`, + d: `M 8.5 12 C 6.8485 12 5.5 10.6515 5.5 9 C 5.5 7.3365 6.8485 6 8.5 6 C 10.1635 6 11.5 7.3365 11.5 9 C 11.5 10.6515 10.1635 12 8.5 12 M 14.5 3.75 L 13.45 3.75 C 13.1635 3.75 12.925 3.6 12.7885 3.36 L 11.7835 1.5315 C 11.515 1.05 11.02 0.75 10.465 0.75 L 6.55 0.75 C 5.995 0.75 5.5 1.05 5.2285 1.5315 L 4.21 3.36 C 4.075 3.6 3.835 3.75 3.565 3.75 L 2.5 3.75 C 1.675 3.75 1 4.425 1 5.25 L 1 12.75 C 1 13.5765 1.675 14.25 2.5 14.25 L 14.5 14.25 C 15.325 14.25 16 13.5765 16 12.75 L 16 5.25 C 16 4.425 15.325 3.75 14.5 3.75`, "fill-rule": "evenodd", }), { id: "sb3-camera", - transform: "translate(0, -2.5)", }, ), SVG.setProps( From 6f0cb65ef6ef8d9cda5e92006fc6e6762d084305 Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 16:49:08 -0600 Subject: [PATCH 22/35] Fix up `brush` icon --- scratch3/blocks.js | 2 +- scratch3/style.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index d3e8b7197..1d0789f7b 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -486,7 +486,7 @@ export class IconView { circle: { width: 10, height: 10, fillAttribute: "stroke" }, notes: { alias: "musicBlock" }, storage: { width: 10, height: 10, fillAttribute: ["stroke", "fill"] }, - brush: { width: 14, height: 14, scale: 1.4 }, + brush: { width: 16, height: 14, scale: 1.4 }, pipette: { width: 16, height: 14, diff --git a/scratch3/style.js b/scratch3/style.js index 74ad43f61..c69ddc42b 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -609,11 +609,10 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - d: "M12.5787225,11.2102026 C11.6196284,12.1692967 10.9129274,12.6614634 10.3576624,12.8507583 C10.1936069,12.3459719 9.91597437,11.8790445 9.52476494,11.4878351 C9.12093585,11.0966257 8.65400846,10.8189932 8.14922209,10.6423179 C8.35113664,10.0870529 8.84330335,9.38035203 9.78977778,8.43387759 C12.0613164,6.14971929 16.0996074,3.36077461 16.8694066,4.13057382 C17.6392058,4.90037303 14.8502611,8.93866396 12.5787225,11.2102026 Z M8.39124334,15.4120104 C8.01569197,15.7748657 7.53110955,15.9621459 7.04652713,15.9855559 L7.04652713,15.9972609 L6.92538153,15.9972609 C3.67867934,16.114311 2.26127577,12.4389379 3.37581533,12.8252032 C4.84167714,13.3285186 5.43650205,12.602808 5.45951972,12.579398 C6.27119527,11.8068673 7.57956779,11.8068673 8.39124334,12.579398 C9.20291889,13.3636337 9.20291889,14.6394798 8.39124334,15.4120104 Z", + d: "M 10.5787 8.2102 C 9.6196 9.1693 8.9129 9.6615 8.3577 9.8508 C 8.1936 9.346 7.916 8.879 7.5248 8.4878 C 7.1209 8.0966 6.654 7.819 6.1492 7.6423 C 6.3511 7.0871 6.8433 6.3804 7.7898 5.4339 C 10.0613 3.1497 14.0996 0.3608 14.8694 1.1306 C 15.6392 1.9004 12.8503 5.9387 10.5787 8.2102 Z M 6.3912 12.412 C 6.0157 12.7749 5.5311 12.9621 5.0465 12.9856 L 5.0465 12.9973 L 4.9254 12.9973 C 1.6787 13.1143 0.2613 9.4389 1.3758 9.8252 C 2.8417 10.3285 3.4365 9.6028 3.4595 9.5794 C 4.2712 8.8069 5.5796 8.8069 6.3912 9.5794 C 7.2029 10.3636 7.2029 11.6395 6.3912 12.412 Z", }), { id: "sb3-brush", - transform: "translate(-2, -3)", }, ), SVG.setProps( From cb347eefb904cf94326d11e8cdd668214fcea3b0 Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 16:53:50 -0600 Subject: [PATCH 23/35] Fix up `pipette` icon --- scratch3/blocks.js | 2 +- scratch3/style.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 1d0789f7b..0d46144cc 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -489,7 +489,7 @@ export class IconView { brush: { width: 16, height: 14, scale: 1.4 }, pipette: { width: 16, - height: 14, + height: 16, scale: 1.4, }, paintbucket: { width: 14, height: 14, scale: 1.4 }, diff --git a/scratch3/style.js b/scratch3/style.js index c69ddc42b..d07e1fe7e 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -617,11 +617,10 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - d: "M9.15334605,12.4824962 C9.03394044,12.6188737 8.88041895,12.7041096 8.60749186,12.7722983 C7.90811618,12.925723 7.24285639,13.5564688 7.03816107,14.2554033 C6.9699293,14.4770167 6.74817603,14.7156773 6.50936483,14.8350076 L4.73533871,15.6703196 C4.650049,15.704414 4.58181722,15.7214612 4.54770134,15.7214612 L4.27477424,15.4657534 C4.27477424,15.4487062 4.27477424,15.3805175 4.32594807,15.2611872 L5.1617873,13.4712329 C5.26413496,13.2496195 5.50294617,13.0280061 5.74175737,12.9598174 C6.44113305,12.738204 7.07227696,12.090411 7.25991433,11.2380518 C7.29403022,11.1016743 7.37931994,10.9652968 7.49872554,10.8289193 L11.4391105,6.90806697 L13.093731,8.56164384 L9.15334605,12.4824962 Z M16.6076673,5.28858447 C16.8635365,5.03287671 17,4.67488584 17,4.33394216 C17,3.99299848 16.8635365,3.65205479 16.6076673,3.39634703 C16.0788711,2.86788432 15.2430318,2.86788432 14.7142356,3.39634703 L13.2301945,4.87945205 L13.0596151,4.70898021 L12.5137609,4.16347032 C12.172602,3.82252664 11.6096899,3.82252664 11.268531,4.16347032 L10.6032712,4.81126332 C10.2791703,5.152207 10.2621124,5.64657534 10.5520974,5.98751903 L6.59465454,9.92541857 C6.30466951,10.2322679 6.09997418,10.5902588 5.98056858,11.1016743 C5.92939475,11.357382 5.63940971,11.6471842 5.36648262,11.7324201 C4.80357049,11.9028919 4.2577163,12.3802131 4.00184715,12.9427702 L3.16600792,14.7156773 C2.89308083,15.3123288 2.9613126,15.9260274 3.33658736,16.3181126 L3.67774623,16.6590563 C3.89949949,16.8806697 4.20654247,17 4.54770134,17 C4.7694546,17 5.02532375,16.9318113 5.26413496,16.8295282 L7.05521901,15.9942161 C7.61813114,15.7214612 8.09575356,15.1929985 8.26633299,14.6304414 C8.33456477,14.3576865 8.64160775,14.0678843 9.05099839,13.9826484 C9.4092152,13.8974125 9.76743201,13.6928463 10.057417,13.385997 L14.0148599,9.44809741 C14.3560188,9.73789954 14.8677571,9.70380518 15.1748001,9.37990868 L15.8400599,8.73211568 C16.1812187,8.39117199 16.1812187,7.82861492 15.8400599,7.48767123 L15.2600898,6.90806697 L15.1236262,6.7716895 L16.6076673,5.28858447 Z", + d: "M 7.1533 10.4825 C 7.0339 10.6189 6.8804 10.7041 6.6075 10.7723 C 5.9081 10.9257 5.2429 11.5565 5.0382 12.2554 C 4.9699 12.477 4.7482 12.7157 4.5094 12.835 L 2.7353 13.6703 C 2.65 13.7044 2.5818 13.7215 2.5477 13.7215 L 2.2748 13.4658 C 2.2748 13.4487 2.2748 13.3805 2.3259 13.2612 L 3.1618 11.4712 C 3.2641 11.2496 3.5029 11.028 3.7418 10.9598 C 4.4411 10.7382 5.0723 10.0904 5.2599 9.2381 C 5.294 9.1017 5.3793 8.9653 5.4987 8.8289 L 9.4391 4.9081 L 11.0937 6.5616 L 7.1533 10.4825 Z M 14.6077 3.2886 C 14.8635 3.0329 15 2.6749 15 2.3339 C 15 1.993 14.8635 1.6521 14.6077 1.3963 C 14.0789 0.8679 13.243 0.8679 12.7142 1.3963 L 11.2302 2.8795 L 11.0596 2.709 L 10.5138 2.1635 C 10.1726 1.8225 9.6097 1.8225 9.2685 2.1635 L 8.6033 2.8113 C 8.2792 3.1522 8.2621 3.6466 8.5521 3.9875 L 4.5947 7.9254 C 4.3047 8.2323 4.1 8.5903 3.9806 9.1017 C 3.9294 9.3574 3.6394 9.6472 3.3665 9.7324 C 2.8036 9.9029 2.2577 10.3802 2.0018 10.9428 L 1.166 12.7157 C 0.8931 13.3123 0.9613 13.926 1.3366 14.3181 L 1.6777 14.6591 C 1.8995 14.8807 2.2065 15 2.5477 15 C 2.7695 15 3.0253 14.9318 3.2641 14.8295 L 5.0552 13.9942 C 5.6181 13.7215 6.0958 13.193 6.2663 12.6304 C 6.3346 12.3577 6.6416 12.0679 7.051 11.9826 C 7.4092 11.8974 7.7674 11.6928 8.0574 11.386 L 12.0149 7.4481 C 12.356 7.7379 12.8678 7.7038 13.1748 7.3799 L 13.8401 6.7321 C 14.1812 6.3912 14.1812 5.8286 13.8401 5.4877 L 13.2601 4.9081 L 13.1236 4.7717 L 14.6077 3.2886 Z", }), { id: "sb3-pipette", - transform: "translate(-2, -3)", }, ), SVG.setProps( From b3314fc0275a7bce278462e56938a03ad1e4df63 Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 16:55:34 -0600 Subject: [PATCH 24/35] Clean up `paintbucket` icon --- scratch3/blocks.js | 2 +- scratch3/style.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 0d46144cc..7000639d2 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -492,7 +492,7 @@ export class IconView { height: 16, scale: 1.4, }, - paintbucket: { width: 14, height: 14, scale: 1.4 }, + paintbucket: { width: 16, height: 15, scale: 1.4 }, eraser: { width: 14, height: 14, scale: 1.4 }, location: { width: 6, height: 10 }, gears: { width: 18, height: 10, scale: 1.2 }, diff --git a/scratch3/style.js b/scratch3/style.js index d07e1fe7e..235993275 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -625,11 +625,10 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - d: "M14.0450969,9.69349504 L14.0306818,9.67916207 C13.4396629,9.36383682 12.5170968,8.69018743 11.4215496,7.60088203 C11.0900024,7.27122381 10.7872854,6.95589857 10.5422288,6.65490628 C10.71521,6.4399118 10.8881911,6.22491731 11.0611722,6.00992282 C11.3783043,6.26791621 11.7242666,6.58324146 12.084644,6.9415656 C12.3152855,7.17089305 12.5026817,7.37155458 12.690078,7.5722161 C12.7189081,7.61521499 12.7621534,7.65821389 12.8198138,7.70121279 C13.6270591,8.6185226 14.1027573,9.36383682 14.3189837,9.7938258 C14.3189837,9.80815877 14.3333988,9.82249173 14.3333988,9.8368247 C14.2469082,9.7938258 14.1460025,9.7508269 14.0450969,9.69349504 M10.5998892,10.0661521 C9.7349835,10.53914 8.91332309,10.983462 7.61596455,10.6824697 C6.17445506,10.3528115 5.4825305,9.76515987 5.19422861,9.42116869 L8.3078891,5.40793826 C8.52411553,5.83792723 8.84124762,6.28224917 9.1727948,6.69790518 C8.82683252,7.21389195 8.55294572,7.64388093 8.42320986,7.84454245 C8.27905891,8.08820287 8.35113439,8.41786108 8.6106061,8.5755237 C8.69709667,8.63285557 8.79800233,8.6615215 8.8844929,8.6615215 C9.07188913,8.6615215 9.24487027,8.56119074 9.34577594,8.40352811 C9.50434198,8.13120176 9.69173821,7.84454245 9.89354954,7.55788313 C10.1962665,7.90187431 10.4701533,8.17420066 10.6575496,8.36052922 C11.0755873,8.77618523 11.4936251,9.14884234 11.8972477,9.47850055 C11.4215496,9.60749724 11.0035119,9.85115766 10.5998892,10.0661521 M10.2106816,5.33627343 C10.0953609,5.49393605 9.96562502,5.65159868 9.85030426,5.79492834 C9.50434198,5.33627343 9.28811556,4.96361632 9.1727948,4.70562293 C9.41785141,4.80595369 9.76381369,5.02094818 10.2106816,5.33627343 M13.5117384,4.07497244 C13.6703044,4.07497244 13.8432855,4.10363837 13.8721157,4.1753032 C14.0450969,4.49062845 13.6270591,5.49393605 13.0648704,6.3969129 L12.848644,6.18191841 C12.6180025,5.95259096 12.2287949,5.59426681 11.781927,5.20727674 C12.4450213,4.53362734 13.0504553,4.07497244 13.5117384,4.07497244 M16.5533234,12.1587652 C16.337097,11.5997795 15.9911347,11.0981257 15.587512,10.6681367 C15.5442667,10.6108049 15.4866064,10.567806 15.428946,10.5248071 C15.6740026,9.99448732 15.2703799,9.23484013 14.9244177,8.69018743 C14.6505309,8.24586549 14.2757384,7.74421169 13.8288705,7.24255788 C14.3910592,6.38257993 15.3568705,4.676957 14.8379271,3.67364939 C14.679361,3.37265711 14.3189837,3 13.5117384,3 L13.4973233,3 C12.6756629,3 11.7675119,3.65931643 10.9458515,4.51929438 C10.0232854,3.84564498 9.01422875,3.31532525 8.40879477,3.65931643 C8.35113439,3.68798236 8.27905891,3.71664829 8.23581363,3.77398015 C8.22139853,3.78831312 8.19256835,3.80264609 8.17815325,3.83131202 C8.16373816,3.84564498 8.14932306,3.85997795 8.13490797,3.88864388 L8.12049287,3.91730981 L4.12751158,9.04851158 C4.11309649,9.04851158 4.11309649,9.04851158 4.09868139,9.06284454 L3.20494551,10.2238148 L3.16170023,10.2668137 C3.11845494,10.3098126 3.08962475,10.3671444 3.07520966,10.4101433 L3.07520966,10.4244763 C2.62834171,11.3417861 4.28607763,13.1334068 5.06449275,13.92172 C5.75641731,14.6097023 7.28441737,16 8.23581363,16 C8.43762496,16 8.596191,15.9426681 8.74034195,15.8136714 L14.2613233,11.5567806 C14.2901535,11.5424476 14.3045686,11.5137817 14.3333988,11.4851158 C14.362229,11.5137817 14.3766441,11.5567806 14.3910592,11.5854465 C14.5640403,11.9294377 14.679361,12.2877619 14.6937761,12.6747519 C14.7370214,13.061742 14.7081912,13.463065 14.6505309,13.8500551 L14.6505309,13.8643881 C14.6361158,13.9790518 14.6361158,14.0793826 14.6505309,14.1940463 C14.7514365,14.8390298 15.3568705,15.2833517 15.9911347,15.1830209 C16.639814,15.0826902 17.0866819,14.4807056 16.9857762,13.8357222 C16.8992857,13.2767365 16.7839649,12.7034179 16.5533234,12.1587652", + d: "M 12.0451 7.6935 L 12.0307 7.6792 C 11.4397 7.3638 10.5171 6.6902 9.4215 5.6009 C 9.09 5.2712 8.7873 4.9559 8.5422 4.6549 C 8.7152 4.4399 8.8882 4.2249 9.0612 4.0099 C 9.3783 4.2679 9.7243 4.5832 10.0846 4.9416 C 10.3153 5.1709 10.5027 5.3716 10.6901 5.5722 C 10.7189 5.6152 10.7622 5.6582 10.8198 5.7012 C 11.6271 6.6185 12.1028 7.3638 12.319 7.7938 C 12.319 7.8082 12.3334 7.8225 12.3334 7.8368 C 12.2469 7.7938 12.146 7.7508 12.0451 7.6935 M 8.5999 8.0662 C 7.735 8.5391 6.9133 8.9835 5.616 8.6825 C 4.1745 8.3528 3.4825 7.7652 3.1942 7.4212 L 6.3079 3.4079 C 6.5241 3.8379 6.8412 4.2822 7.1728 4.6979 C 6.8268 5.2139 6.5529 5.6439 6.4232 5.8445 C 6.2791 6.0882 6.3511 6.4179 6.6106 6.5755 C 6.6971 6.6329 6.798 6.6615 6.8845 6.6615 C 7.0719 6.6615 7.2449 6.5612 7.3458 6.4035 C 7.5043 6.1312 7.6917 5.8445 7.8935 5.5579 C 8.1963 5.9019 8.4702 6.1742 8.6575 6.3605 C 9.0756 6.7762 9.4936 7.1488 9.8972 7.4785 C 9.4215 7.6075 9.0035 7.8512 8.5999 8.0662 M 8.2107 3.3363 C 8.0954 3.4939 7.9656 3.6516 7.8503 3.7949 C 7.5043 3.3363 7.2881 2.9636 7.1728 2.7056 C 7.4179 2.806 7.7638 3.0209 8.2107 3.3363 M 11.5117 2.075 C 11.6703 2.075 11.8433 2.1036 11.8721 2.1753 C 12.0451 2.4906 11.6271 3.4939 11.0649 4.3969 L 10.8486 4.1819 C 10.618 3.9526 10.2288 3.5943 9.7819 3.2073 C 10.445 2.5336 11.0505 2.075 11.5117 2.075 M 14.5533 10.1588 C 14.3371 9.5998 13.9911 9.0981 13.5875 8.6681 C 13.5443 8.6108 13.4866 8.5678 13.4289 8.5248 C 13.674 7.9945 13.2704 7.2348 12.9244 6.6902 C 12.6505 6.2459 12.2757 5.7442 11.8289 5.2426 C 12.3911 4.3826 13.3569 2.677 12.8379 1.6736 C 12.6794 1.3727 12.319 1 11.5117 1 L 11.4973 1 C 10.6757 1 9.7675 1.6593 8.9459 2.5193 C 8.0233 1.8456 7.0142 1.3153 6.4088 1.6593 C 6.3511 1.688 6.2791 1.7166 6.2358 1.774 C 6.2214 1.7883 6.1926 1.8026 6.1782 1.8313 C 6.1637 1.8456 6.1493 1.86 6.1349 1.8886 L 6.1205 1.9173 L 2.1275 7.0485 C 2.1131 7.0485 2.1131 7.0485 2.0987 7.0628 L 1.2049 8.2238 L 1.1617 8.2668 C 1.1185 8.3098 1.0896 8.3671 1.0752 8.4101 L 1.0752 8.4245 C 0.6283 9.3418 2.2861 11.1334 3.0645 11.9217 C 3.7564 12.6097 5.2844 14 6.2358 14 C 6.4376 14 6.5962 13.9427 6.7403 13.8137 L 12.2613 9.5568 C 12.2902 9.5424 12.3046 9.5138 12.3334 9.4851 C 12.3622 9.5138 12.3766 9.5568 12.3911 9.5854 C 12.564 9.9294 12.6794 10.2878 12.6938 10.6748 C 12.737 11.0617 12.7082 11.4631 12.6505 11.8501 L 12.6505 11.8644 C 12.6361 11.9791 12.6361 12.0794 12.6505 12.194 C 12.7514 12.839 13.3569 13.2834 13.9911 13.183 C 14.6398 13.0827 15.0867 12.4807 14.9858 11.8357 C 14.8993 11.2767 14.784 10.7034 14.5533 10.1588", }), { id: "sb3-paintbucket", - transform: "translate(-2, -3)", }, ), SVG.setProps( From 03b84f79b0d1acd4c77c5a160b62a8ad1e1af5b4 Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 16:57:13 -0600 Subject: [PATCH 25/35] Fix up `eraser` icon --- scratch3/blocks.js | 2 +- scratch3/style.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 7000639d2..da69ebdb3 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -493,7 +493,7 @@ export class IconView { scale: 1.4, }, paintbucket: { width: 16, height: 15, scale: 1.4 }, - eraser: { width: 14, height: 14, scale: 1.4 }, + eraser: { width: 16, height: 15, scale: 1.4 }, location: { width: 6, height: 10 }, gears: { width: 18, height: 10, scale: 1.2 }, gearPartial: { width: 10, height: 10 }, diff --git a/scratch3/style.js b/scratch3/style.js index 235993275..59e728f5d 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -633,11 +633,10 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - d: "M13.5370061,14.8291597 L10.9660545,14.8291597 L8.3016138,12.164719 L11.1686144,9.29771842 L15.1263216,13.2554257 L13.5370061,14.8291597 Z M16.7779633,12.6944908 L11.1686144,7.10072343 L8.3016138,4.23372287 C8.00556483,3.92209238 7.50695604,3.92209238 7.19532554,4.23372287 L3.22203673,8.20701169 C2.92598776,8.50306066 2.92598776,9.00166945 3.22203673,9.29771842 L6.10461881,12.164719 L10.0934891,16.1535893 C10.2337229,16.3094046 10.4362827,16.3873122 10.6388425,16.3873122 L13.8642181,16.3873122 C14.066778,16.3873122 14.2693378,16.3094046 14.4095715,16.1535893 L16.7779633,13.8007791 C17.0740122,13.5047301 17.0740122,13.0061213 16.7779633,12.6944908 L16.7779633,12.6944908 Z", + d: "M 11.537 11.8292 L 8.9661 11.8292 L 6.3016 9.1647 L 9.1686 6.2977 L 13.1263 10.2554 L 11.537 11.8292 Z M 14.778 9.6945 L 9.1686 4.1007 L 6.3016 1.2337 C 6.0056 0.9221 5.507 0.9221 5.1953 1.2337 L 1.222 5.207 C 0.926 5.5031 0.926 6.0017 1.222 6.2977 L 4.1046 9.1647 L 8.0935 13.1536 C 8.2337 13.3094 8.4363 13.3873 8.6388 13.3873 L 11.8642 13.3873 C 12.0668 13.3873 12.2693 13.3094 12.4096 13.1536 L 14.778 10.8008 C 15.074 10.5047 15.074 10.0061 14.778 9.6945 L 14.778 9.6945 Z", }), { id: "sb3-eraser", - transform: "translate(-2, -3)", }, ), SVG.setProps( From 6b115521b8eb898cc46eecb457ff3ee558b68cf5 Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 17:04:57 -0600 Subject: [PATCH 26/35] Clean up `gears` icon --- scratch3/blocks.js | 2 +- scratch3/style.js | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index da69ebdb3..184c0e9fa 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -495,7 +495,7 @@ export class IconView { paintbucket: { width: 16, height: 15, scale: 1.4 }, eraser: { width: 16, height: 15, scale: 1.4 }, location: { width: 6, height: 10 }, - gears: { width: 18, height: 10, scale: 1.2 }, + gears: { width: 18, height: 18, scale: 1.2 }, gearPartial: { width: 10, height: 10 }, gearBig: { width: 10, height: 10 }, globe: { width: 10, height: 10, fillAttribute: "stroke" }, diff --git a/scratch3/style.js b/scratch3/style.js index 59e728f5d..0138824bb 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -650,12 +650,10 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - d: `M8.27206 2.68377C8.40818 2.27543 8.79032 2 9.22075 2H10.7792C11.2097 2 11.5918 2.27543 11.7279 2.68377L12.3219 4.4658C12.7914 4.663 13.2304 4.91818 13.6302 5.22238L15.4721 4.84547C15.8938 4.75917 16.3234 4.9524 16.5386 5.32516L17.3178 6.67485C17.533 7.04761 17.4856 7.51627 17.2 7.83832L15.9529 9.24468C15.984 9.49208 16 9.74417 16 10C16 10.2558 15.984 10.5079 15.9529 10.7553L17.2 12.1617C17.4856 12.4837 17.533 12.9524 17.3178 13.3252L16.5386 14.6748C16.3234 15.0476 15.8938 15.2408 15.4721 15.1545L13.6302 14.7776C13.2304 15.0818 12.7914 15.337 12.3219 15.5342L11.7279 17.3162C11.5918 17.7246 11.2097 18 10.7792 18H9.22075C8.79032 18 8.40818 17.7246 8.27206 17.3162L7.67805 15.5342C7.20862 15.337 6.76955 15.0818 6.36982 14.7776L4.52792 15.1545C4.10623 15.2408 3.67663 15.0476 3.46141 14.6748L2.68217 13.3252C2.46696 12.9524 2.51442 12.4837 2.8 12.1617L4.04708 10.7553C4.016 10.5079 3.99999 10.2558 3.99999 10C3.99999 9.74416 4.016 9.49207 4.04707 9.24466L2.8 7.83832C2.51442 7.51627 2.46696 7.04761 2.68217 6.67485L3.46141 5.32516C3.67663 4.9524 4.10623 4.75917 4.52792 4.84547L6.3698 5.22238C6.76954 4.91818 7.20861 4.663 7.67805 4.4658L8.27206 2.68377ZM9.99999 8C8.89542 8 7.99999 8.89543 7.99999 10C7.99999 11.1046 8.89542 12 9.99999 12C11.1046 12 12 11.1046 12 10C12 8.89543 11.1046 8 9.99999 8Z`, - "fill-rule": "evenodd", + d: `M 7.2721 1.6838 C 7.4082 1.2754 7.7903 1 8.2208 1 H 9.7792 C 10.2097 1 10.5918 1.2754 10.7279 1.6838 L 11.3219 3.4658 C 11.7914 3.663 12.2304 3.9182 12.6302 4.2224 L 14.4721 3.8455 C 14.8938 3.7592 15.3234 3.9524 15.5386 4.3252 L 16.3178 5.6749 C 16.533 6.0476 16.4856 6.5163 16.2 6.8383 L 14.9529 8.2447 C 14.984 8.4921 15 8.7442 15 9 C 15 9.2558 14.984 9.5079 14.9529 9.7553 L 16.2 11.1617 C 16.4856 11.4837 16.533 11.9524 16.3178 12.3252 L 15.5386 13.6748 C 15.3234 14.0476 14.8938 14.2408 14.4721 14.1545 L 12.6302 13.7776 C 12.2304 14.0818 11.7914 14.337 11.3219 14.5342 L 10.7279 16.3162 C 10.5918 16.7246 10.2097 17 9.7792 17 H 8.2208 C 7.7903 17 7.4082 16.7246 7.2721 16.3162 L 6.678 14.5342 C 6.2086 14.337 5.7695 14.0818 5.3698 13.7776 L 3.5279 14.1545 C 3.1062 14.2408 2.6766 14.0476 2.4614 13.6748 L 1.6822 12.3252 C 1.467 11.9524 1.5144 11.4837 1.8 11.1617 L 3.0471 9.7553 C 3.016 9.5079 3 9.2558 3 9 C 3 8.7442 3.016 8.4921 3.0471 8.2447 L 1.8 6.8383 C 1.5144 6.5163 1.467 6.0476 1.6822 5.6749 L 2.4614 4.3252 C 2.6766 3.9524 3.1062 3.7592 3.5279 3.8455 L 5.3698 4.2224 C 5.7695 3.9182 6.2086 3.663 6.678 3.4658 L 7.2721 1.6838 Z M 9 7 C 7.8954 7 7 7.8954 7 9 C 7 10.1046 7.8954 11 9 11 C 10.1046 11 11 10.1046 11 9 C 11 7.8954 10.1046 7 9 7 Z`, }), { id: "sb3-gears", - transform: "translate(-2, -5)", }, ), SVG.setProps( From 98469d0f20d814621f969092d6236818b595a99d Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 17:20:33 -0600 Subject: [PATCH 27/35] Clean up `robot` icon --- scratch3/blocks.js | 4 +-- scratch3/style.js | 74 ++++++++++++++-------------------------------- 2 files changed, 24 insertions(+), 54 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 184c0e9fa..e7a143673 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -502,8 +502,8 @@ export class IconView { globeBig: { width: 10, height: 10, fillAttribute: "stroke" }, square: { width: 10, height: 10 }, robot: { - width: 13, - height: 17, + width: 14, + height: 19, fillAttribute: ["fill", "stroke"], scale: 1.2, }, diff --git a/scratch3/style.js b/scratch3/style.js index 0138824bb..dfbbe8c4d 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -737,61 +737,31 @@ export default class Style { ), SVG.setProps( SVG.group([ - SVG.group([ - SVG.el("path", { - d: "M6.75652727,15.5218 L6.75652727,1.2698", - "stroke-width": 0.75, - fill: "none", - }), - SVG.el("path", { - d: "M1.51161818,13.2809091 C1.51161818,10.3841818 3.8598,8.036 6.75652727,8.036 C9.65198182,8.036 12.0001636,10.3841818 12.0001636,13.2809091", - "stroke-width": 0.75, - "stroke-linecap": "round", - "stroke-linejoin": "round", - fill: "none", - }), - SVG.el("path", { - d: "M10.9663273,14.315 C10.9663273,13.7435455 11.4296,13.2815455 11.9997818,13.2815455 C12.5725091,13.2815455 13.0345091,13.7435455 13.0345091,14.315", - "stroke-width": 0.75, - "stroke-linecap": "round", - "stroke-linejoin": "round", - fill: "none", - }), - SVG.el("path", { - d: "M0.477527273,14.315 C0.477527273,13.7435455 0.939527273,13.2815455 1.51098182,13.2815455 C2.08243636,13.2815455 2.54570909,13.7435455 2.54570909,14.315", - "stroke-width": 0.75, - "stroke-linecap": "round", - "stroke-linejoin": "round", - fill: "none", - }), - ]), - SVG.group([ - SVG.el("path", { - d: "M9.60527273,8.03587273 L3.906,8.03587273 C3.20345455,8.03587273 2.63327273,7.46696364 2.63327273,6.76314545 L2.63327273,4.63641818 C2.63327273,3.93387273 3.20345455,3.36369091 3.906,3.36369091 L9.60527273,3.36369091 C10.3090909,3.36369091 10.878,3.93387273 10.878,4.63641818 L10.878,6.76314545 C10.878,7.46696364 10.3090909,8.03587273 9.60527273,8.03587273", - stroke: "none", - }), - SVG.el("path", { - d: "M9.11310909,13.0782909 L4.39892727,13.0782909 C3.77147273,13.0782909 3.26238182,12.5692 3.26238182,11.9404727 L3.26238182,11.0126545 C3.26238182,9.0832 4.82656364,7.51901818 6.75601818,7.51901818 C8.68547273,7.51901818 10.2496545,9.0832 10.2496545,11.0126545 L10.2496545,11.9404727 C10.2496545,12.5692 9.74056364,13.0782909 9.11310909,13.0782909", - stroke: "none", - }), - SVG.el("path", { - d: "M7.777,15.5218 C7.777,16.0843455 7.32009091,16.5425273 6.75627273,16.5425273 C6.19245455,16.5425273 5.73554545,16.0843455 5.73554545,15.5218 C5.73554545,14.9579818 6.19245455,14.4998 6.75627273,14.4998 C7.32009091,14.4998 7.777,14.9579818 7.777,15.5218", - stroke: "none", - }), - SVG.el("path", { - d: "M8.03052727,1.27450909 C8.03052727,1.9796 7.46034545,2.54978182 6.75652727,2.54978182 C6.05143636,2.54978182 5.48125455,1.9796 5.48125455,1.27450909 C5.48125455,0.570690909 6.05143636,0.000509090909 6.75652727,0.000509090909 C7.46034545,0.000509090909 8.03052727,0.570690909 8.03052727,1.27450909", - stroke: "none", - }), - SVG.el("path", { - d: "M8.75636364,6.40398182 L4.75490909,6.40398182 C4.36672727,6.40398182 4.05236364,6.08961818 4.05236364,5.70016364 C4.05236364,5.31198182 4.36672727,4.99634545 4.75490909,4.99634545 L8.75636364,4.99634545 C9.14581818,4.99634545 9.46145455,5.31198182 9.46145455,5.70016364 C9.46145455,6.08961818 9.14581818,6.40398182 8.75636364,6.40398182", - fill: "#575e75", - stroke: "none", - }), - ]), + SVG.el("path", { + d: `M 6.7565 16.5218 L 6.7565 2.2698 + M 1.5116 14.2809 C 1.5116 11.3842 3.8598 9.036 6.7565 9.036 C 9.652 9.036 12.0002 11.3842 12.0002 14.2809 + M 10.9663 15.315 C 10.9663 14.7435 11.4296 14.2815 11.9998 14.2815 C 12.5725 14.2815 13.0345 14.7435 13.0345 15.315 + M 0.4775 15.315 C 0.4775 14.7435 0.9395 14.2815 1.511 14.2815 C 2.0824 14.2815 2.5457 14.7435 2.5457 15.315`, + "stroke-width": 0.75, + "stroke-linecap": "round", + "stroke-linejoin": "round", + fill: "none", + }), + SVG.el("path", { + d: `M 9.6053 9.0359 L 3.906 9.0359 C 3.2035 9.0359 2.6333 8.467 2.6333 7.7631 L 2.6333 5.6364 C 2.6333 4.9339 3.2035 4.3637 3.906 4.3637 L 9.6053 4.3637 C 10.3091 4.3637 10.878 4.9339 10.878 5.6364 L 10.878 7.7631 C 10.878 8.467 10.3091 9.0359 9.6053 9.0359 + M 9.1131 14.0783 L 4.3989 14.0783 C 3.7715 14.0783 3.2624 13.5692 3.2624 12.9405 L 3.2624 12.0127 C 3.2624 10.0832 4.8266 8.519 6.756 8.519 C 8.6855 8.519 10.2497 10.0832 10.2497 12.0127 L 10.2497 12.9405 C 10.2497 13.5692 9.7406 14.0783 9.1131 14.0783 + M 7.777 16.5218 C 7.777 17.0843 7.3201 17.5425 6.7563 17.5425 C 6.1925 17.5425 5.7355 17.0843 5.7355 16.5218 C 5.7355 15.958 6.1925 15.4998 6.7563 15.4998 C 7.3201 15.4998 7.777 15.958 7.777 16.5218 + M 8.0305 2.2745 C 8.0305 2.9796 7.4603 3.5498 6.7565 3.5498 C 6.0514 3.5498 5.4813 2.9796 5.4813 2.2745 C 5.4813 1.5707 6.0514 1.0005 6.7565 1.0005 C 7.4603 1.0005 8.0305 1.5707 8.0305 2.2745`, + stroke: "none", + }), + SVG.el("path", { + d: "M 8.7564 7.404 L 4.7549 7.404 C 4.3667 7.404 4.0524 7.0896 4.0524 6.7002 C 4.0524 6.312 4.3667 5.9963 4.7549 5.9963 L 8.7564 5.9963 C 9.1458 5.9963 9.4615 6.312 9.4615 6.7002 C 9.4615 7.0896 9.1458 7.404 8.7564 7.404", + fill: "#575e75", + stroke: "none", + }), ]), { id: "sb3-robot", - transform: "translate(-1, 1)", }, ), SVG.setProps( From a34e71af60d40023b0a64fcf003803d1c04644a6 Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 20:07:23 -0600 Subject: [PATCH 28/35] Fix up arrow icons --- scratch3/blocks.js | 8 +++--- scratch3/style.js | 64 ++++++++++++++++++++-------------------------- 2 files changed, 32 insertions(+), 40 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index e7a143673..619443d9d 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -563,16 +563,16 @@ export class IconView { cubeSolid: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, infinity: { width: 17.5, height: 10, fillAttribute: "stroke" }, - arrowUp: { width: 18, height: 18 }, + arrowUp: { width: 16, height: 16 }, arrowUpOutline: { width: 18, height: 18, fillAttribute: "stroke" }, arrowUpThin: { width: 10, height: 10, fillAttribute: "stroke" }, - arrowDown: { width: 18, height: 18 }, + arrowDown: { width: 16, height: 16 }, arrowDownOutline: { width: 18, height: 18, fillAttribute: "stroke" }, arrowDownThin: { width: 10, height: 10, fillAttribute: "stroke" }, - arrowLeft: { width: 18, height: 18 }, + arrowLeft: { width: 16, height: 16 }, arrowLeftOutline: { width: 18, height: 18, fillAttribute: "stroke" }, arrowLeftThin: { width: 10, height: 10, fillAttribute: "stroke" }, - arrowRight: { width: 18, height: 18 }, + arrowRight: { width: 16, height: 16 }, arrowRightOutline: { width: 18, height: 18, fillAttribute: "stroke" }, arrowRightThin: { width: 10, height: 10, fillAttribute: "stroke" }, arrowUpDownThin: { width: 10, height: 10, fillAttribute: "stroke" }, diff --git a/scratch3/style.js b/scratch3/style.js index dfbbe8c4d..eeca44435 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -768,37 +768,29 @@ export default class Style { SVG.el( "path", { - d: "M23 16.7 18.7 21c-.4.3-.9.4-1.3.2s-.7-.6-.7-1.1v-1.6l-6-.8c-1-.1-1.7-.9-1.7-1.9v-.2c.1-.9.8-1.5 1.6-1.6l6-.9v-1.6c0-.5.3-.9.7-1.1.4-.2.9-.1 1.3.3L23 15c.2.2.3.5.3.8l-.3.9z", + d: "M 15 8.95 L 10.7 13.25 c -0.4 0.3 -0.9 0.4 -1.3 0.2 s -0.7 -0.6 -0.7 -1.1 v -1.6 l -6 -0.8 c -1 -0.1 -1.7 -0.9 -1.7 -1.9 v -0.2 c 0.1 -0.9 0.8 -1.5 1.6 -1.6 l 6 -0.9 v -1.6 c 0 -0.5 0.3 -0.9 0.7 -1.1 c 0.4 -0.2 0.9 -0.1 1.3 0.3 L 15 7.25 c 0.2 0.2 0.3 0.5 0.3 0.8 l -0.3 0.9 z", stroke: "#000", "stroke-opacity": 0.1, "stroke-width": 2, - }, - { - paintOrder: "stroke", - transformOrigin: "13px 13px", + 'paint-order': 'stroke', }, ), { - id: "sb3-arrowUp", - transform: "matrix(0, -1, 1, 0, -10, -5), translate(-2, 2)", + id: "sb3-arrowRight", }, ), SVG.setProps( SVG.el( "path", { - d: "M22.6 16.3zM16.2 19l-5.6-.8a2.5 2.5 0 0 1-2.1-2.4v-.3c.2-1.1 1-1.9 2-2l5.6-.8v-1.1c0-.7.4-1.3 1-1.6.6-.3 1.3-.1 1.8.4l4.3 4.3c.3.3.5.7.5 1.2 0 .4-.2.9-.5 1.2L19 21.4c-.5.5-1.2.6-1.8.3-.6-.3-1-.9-1-1.5V19z", + d: "M 15.6 9.45 z M 9.2 12.15 l -5.6 -0.8 a 2.5 2.5 0 0 1 -2.1 -2.4 v -0.3 c 0.2 -1.1 1 -1.9 2 -2 l 5.6 -0.8 v -1.1 c 0 -0.7 0.4 -1.3 1 -1.6 c 0.6 -0.3 1.3 -0.1 1.8 0.4 l 4.3 4.3 c 0.3 0.3 0.5 0.7 0.5 1.2 c 0 0.4 -0.2 0.9 -0.5 1.2 L 12 14.55 c -0.5 0.5 -1.2 0.6 -1.8 0.3 c -0.6 -0.3 -1 -0.9 -1 -1.5 V 12.15 z", fill: "none", "stroke-width": 1, - }, - { - paintOrder: "stroke", - transformOrigin: "13px 13px", + "paint-order": "stroke", }, ), { - id: "sb3-arrowUpOutline", - transform: "matrix(0, -1, 1, 0, -10, -5), translate(-2, 2)", + id: "sb3-arrowRightOutline", }, ), SVG.setProps( @@ -814,74 +806,74 @@ export default class Style { ), SVG.setProps( SVG.el("use", { - href: "#sb3-arrowUp", - transform: "translate(16.5, 15), rotate(180)", + href: "#sb3-arrowRight", + transform: "rotate(180 8 8)", }), { - id: "sb3-arrowDown", + id: "sb3-arrowLeft", }, ), SVG.setProps( SVG.el("use", { - href: "#sb3-arrowUpOutline", - transform: "translate(16.5, 15), rotate(180)", + href: "#sb3-arrowRightOutline", + transform: "rotate(180 9 9)", }), { - id: "sb3-arrowDownOutline", + id: "sb3-arrowLeftOutline", }, ), SVG.setProps( SVG.el("use", { href: "#sb3-arrowUpThin", - transform: "rotate(180 5 5)", + transform: "rotate(-90 5 5)", }), { - id: "sb3-arrowDownThin", + id: "sb3-arrowLeftThin", }, ), SVG.setProps( SVG.el("use", { - href: "#sb3-arrowUp", - transform: "translate(0, 15.5), rotate(-90)", + href: "#sb3-arrowRight", + transform: "rotate(90 8 8)", }), { - id: "sb3-arrowLeft", + id: "sb3-arrowDown", }, ), SVG.setProps( SVG.el("use", { - href: "#sb3-arrowUpOutline", - transform: "translate(0, 15.5), rotate(-90)", + href: "#sb3-arrowRightOutline", + transform: "rotate(90 9 9)", }), { - id: "sb3-arrowLeftOutline", + id: "sb3-arrowDownOutline", }, ), SVG.setProps( SVG.el("use", { href: "#sb3-arrowUpThin", - transform: "rotate(-90 5 5)", + transform: "rotate(180 5 5)", }), { - id: "sb3-arrowLeftThin", + id: "sb3-arrowDownThin", }, ), SVG.setProps( SVG.el("use", { - href: "#sb3-arrowUp", - transform: "translate(-6, 0), rotate(90 10 10)", + href: "#sb3-arrowRight", + transform: "rotate(-90 8 8)", }), { - id: "sb3-arrowRight", + id: "sb3-arrowUp", }, ), SVG.setProps( SVG.el("use", { - href: "#sb3-arrowUpOutline", - transform: "translate(-6, 0), rotate(90 5 5)", + href: "#sb3-arrowRightOutline", + transform: "rotate(-90 9 9)", }), { - id: "sb3-arrowRightOutline", + id: "sb3-arrowUpOutline", }, ), SVG.setProps( From 31ba1b2a8467b057b486466cd7509b2a5c03e321 Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 20:12:04 -0600 Subject: [PATCH 29/35] Fix up `file` icon --- scratch3/blocks.js | 2 +- scratch3/style.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 619443d9d..35fb1e0d7 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -508,7 +508,7 @@ export class IconView { scale: 1.2, }, stepForward: { width: 10, height: 10 }, - file: { width: 18, height: 18, scale: 1.2 }, + file: { width: 18, height: 19, scale: 1.2 }, fullScreen: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, grow: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, normalScreen: { diff --git a/scratch3/style.js b/scratch3/style.js index eeca44435..930be6735 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -923,13 +923,12 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - d: "M4.98116 1H15.0196C16.4042 1 17.6158 2.21154 17.6158 3.59615V10.8654H13.635C11.385 10.8654 9.65424 12.7692 9.65424 14.8462V18.8269H4.98116C3.59655 18.8269 2.38501 17.6154 2.38501 16.2308V3.59615C2.38501 2.21154 3.59655 1 4.98116 1ZM6.01963 9.82692H8.78886C9.48116 9.82692 10.0004 9.48077 10.0004 8.78846C10.0004 8.09615 9.48116 7.75 8.96193 7.75H6.01963C5.50039 7.75 4.98116 8.26923 4.98116 8.78846C4.98116 9.30769 5.50039 9.82692 6.01963 9.82692ZM14.1542 5.84615H6.01963C5.32732 5.84615 4.98116 5.32692 4.98116 4.80769C4.98116 4.28846 5.50039 3.76923 6.01963 3.76923H14.1542C14.6735 3.76923 15.1927 4.28846 15.1927 4.80769C15.0196 5.32692 14.6735 5.84615 14.1542 5.84615ZM17.4427 12.25H13.4619C12.0773 12.25 10.8658 13.4615 10.8658 15.0192V19L17.4427 12.25Z", + d: "M 3.9812 1 H 14.0196 C 15.4042 1 16.6158 2.2115 16.6158 3.5962 V 10.8654 H 12.635 C 10.385 10.8654 8.6542 12.7692 8.6542 14.8462 V 18.8269 H 3.9812 C 2.5966 18.8269 1.385 17.6154 1.385 16.2308 V 3.5962 C 1.385 2.2115 2.5966 1 3.9812 1 Z M 5.0196 9.8269 H 7.7889 C 8.4812 9.8269 9.0004 9.4808 9.0004 8.7885 C 9.0004 8.0961 8.4812 7.75 7.9619 7.75 H 5.0196 C 4.5004 7.75 3.9812 8.2692 3.9812 8.7885 C 3.9812 9.3077 4.5004 9.8269 5.0196 9.8269 Z M 13.1542 5.8461 H 5.0196 C 4.3273 5.8461 3.9812 5.3269 3.9812 4.8077 C 3.9812 4.2885 4.5004 3.7692 5.0196 3.7692 H 13.1542 C 13.6735 3.7692 14.1927 4.2885 14.1927 4.8077 C 14.0196 5.3269 13.6735 5.8461 13.1542 5.8461 Z M 16.4427 12.25 H 12.4619 C 11.0773 12.25 9.8658 13.4615 9.8658 15.0192 V 19 L 16.4427 12.25 Z", "fill-rule": "evenodd", "clip-rule": "evenodd", }), { id: "sb3-file", - transform: "translate(-1, 0)", }, ), SVG.setProps( From cfebf7800a5e119c8b249397ccb789f7461036d1 Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 21:21:02 -0600 Subject: [PATCH 30/35] Fix up `flipHorizontal` and `flipVertical` icons --- scratch3/blocks.js | 8 ++++---- scratch3/style.js | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 35fb1e0d7..bf037db0c 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -548,13 +548,13 @@ export class IconView { keyboardFilled: { width: 16, height: 10 }, listNarrow: { width: 5, height: 10 }, flipHorizontal: { - width: 20, - height: 14, + width: 18, + height: 16, scale: 1.2, }, flipVertical: { - width: 20, - height: 14, + width: 16, + height: 18, scale: 1.2, }, trash: { width: 15, height: 15 }, diff --git a/scratch3/style.js b/scratch3/style.js index 930be6735..871137a71 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -1437,7 +1437,7 @@ export default class Style { SVG.setProps( SVG.el("use", { href: "#sb3-flipHorizontal", - transform: "translate(1 15) rotate(-90)", + transform: "rotate(-90 9 9)", }), { id: "sb3-flipVertical", @@ -1491,7 +1491,7 @@ export default class Style { ]), { id: "sb3-flipHorizontal", - transform: "translate(1, 0)", + transform: "translate(1, 1)", }, ), SVG.setProps( From 634a20a396521a18fc3f4f4efa171b676e7e32b0 Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 21:24:23 -0600 Subject: [PATCH 31/35] Fix up `trash` icon --- scratch3/blocks.js | 2 +- scratch3/style.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index bf037db0c..7ca57d3e3 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -557,7 +557,7 @@ export class IconView { height: 18, scale: 1.2, }, - trash: { width: 15, height: 15 }, + trash: { width: 16, height: 17 }, trashFull: { width: 10, height: 10 }, cube: { width: 10, height: 10, fillAttribute: "stroke" }, cubeSolid: { width: 10, height: 10, fillAttribute: ["fill", "stroke"] }, diff --git a/scratch3/style.js b/scratch3/style.js index 871137a71..b92a083e1 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -1500,7 +1500,6 @@ export default class Style { }), { id: "sb3-trash", - transform: "scale(1.1, 1.1), translate(0, -1.5)", }, ), SVG.setProps( From a94800eefa706a36c899ca143d5f01f36ae3a754 Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 21:27:18 -0600 Subject: [PATCH 32/35] Fix up `speaker` icon --- scratch3/blocks.js | 2 +- scratch3/style.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index 7ca57d3e3..ba8914498 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -577,7 +577,7 @@ export class IconView { arrowRightThin: { width: 10, height: 10, fillAttribute: "stroke" }, arrowUpDownThin: { width: 10, height: 10, fillAttribute: "stroke" }, arrowLeftRightThin: { width: 10, height: 10, fillAttribute: "stroke" }, - speaker: { width: 14, height: 11, scale: 1.3 }, + speaker: { width: 16, height: 13, scale: 1.3 }, blocks: { width: 14, height: 10, scale: 1 }, turtlePlus: { width: 13, height: 10, fillAttribute: ["fill", "stroke"] }, diff --git a/scratch3/style.js b/scratch3/style.js index b92a083e1..292afec67 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -1559,9 +1559,8 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - d: `M12.63 12.637a.886.886 0 0 1-.755-1.333 2.569 2.569 0 0 0 0-2.6.888.888 0 0 1 .31-1.213.878.878 0 0 1 1.204.311 4.346 4.346 0 0 1 0 4.401.875.875 0 0 1-.758.434zm2.627 1.418a.886.886 0 0 1-.755-1.333 5.367 5.367 0 0 0 0-5.437.888.888 0 0 1 .309-1.212.88.88 0 0 1 1.204.31 7.138 7.138 0 0 1 0 7.238.877.877 0 0 1-.758.434zM10.379 5.68v8.641c0 1.024-1.207 1.56-1.96.87l-1.624-1.492a3.112 3.112 0 0 0-2.104-.82h-.284A1.41 1.41 0 0 1 3 11.464V8.55c0-.781.63-1.414 1.407-1.414h.268c.78 0 1.529-.293 2.104-.82L8.42 4.81c.753-.69 1.96-.154 1.96.869Z`, + d: `M 10.63 9.137 a 0.886 0.886 0 0 1 -0.755 -1.333 a 2.569 2.569 0 0 0 0 -2.6 a 0.888 0.888 0 0 1 0.31 -1.213 a 0.878 0.878 0 0 1 1.204 0.311 a 4.346 4.346 0 0 1 0 4.401 a 0.875 0.875 0 0 1 -0.758 0.434 z m 2.627 1.418 a 0.886 0.886 0 0 1 -0.755 -1.333 a 5.367 5.367 0 0 0 0 -5.437 a 0.888 0.888 0 0 1 0.309 -1.212 a 0.88 0.88 0 0 1 1.204 0.31 a 7.138 7.138 0 0 1 0 7.238 a 0.877 0.877 0 0 1 -0.758 0.434 z M 8.379 2.18 v 8.641 c 0 1.024 -1.207 1.56 -1.96 0.87 l -1.624 -1.492 a 3.112 3.112 0 0 0 -2.104 -0.82 h -0.284 A 1.41 1.41 0 0 1 1 7.964 V 5.05 c 0 -0.781 0.63 -1.414 1.407 -1.414 h 0.268 c 0.78 0 1.529 -0.293 2.104 -0.82 L 6.42 1.31 c 0.753 -0.69 1.96 -0.154 1.96 0.869 Z`, stroke: "none", - transform: "translate(-3, -5)", }), { id: "sb3-speaker", From 58ecc5e485a5cb031b8b167048f264e63969093d Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 21:29:07 -0600 Subject: [PATCH 33/35] Fix up `blocks` icon --- scratch3/blocks.js | 2 +- scratch3/style.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/scratch3/blocks.js b/scratch3/blocks.js index ba8914498..991502e48 100644 --- a/scratch3/blocks.js +++ b/scratch3/blocks.js @@ -578,7 +578,7 @@ export class IconView { arrowUpDownThin: { width: 10, height: 10, fillAttribute: "stroke" }, arrowLeftRightThin: { width: 10, height: 10, fillAttribute: "stroke" }, speaker: { width: 16, height: 13, scale: 1.3 }, - blocks: { width: 14, height: 10, scale: 1 }, + blocks: { width: 16, height: 13, scale: 1 }, turtlePlus: { width: 13, height: 10, fillAttribute: ["fill", "stroke"] }, musicBlock: { width: 40, height: 40 }, diff --git a/scratch3/style.js b/scratch3/style.js index 292afec67..673c063fc 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -1568,12 +1568,11 @@ export default class Style { ), SVG.setProps( SVG.el("path", { - d: `M15 13.51a.5.5 0 0 1-.5.5H9.197a.495.495 0 0 0-.353.146l-.698.698a.5.5 0 0 1-.353.146H6.207a.5.5 0 0 1-.353-.146l-.698-.698a.497.497 0 0 0-.353-.146H3.5a.5.5 0 0 1-.5-.5V10.5a.5.5 0 0 1 .5-.5h1.293a.5.5 0 0 1 .353.146l.708.708a.5.5 0 0 0 .353.146h1.586a.5.5 0 0 0 .353-.146l.708-.708A.5.5 0 0 1 9.207 10H14.5a.5.5 0 0 1 .5.5zm2-5a.5.5 0 0 1-.5.5H9.197a.495.495 0 0 0-.353.146l-.698.698a.5.5 0 0 1-.353.146H6.207a.5.5 0 0 1-.353-.146l-.698-.698a.497.497 0 0 0-.353-.146H3.5a.5.5 0 0 1-.5-.5V5.5a.5.5 0 0 1 .5-.5h1.293a.5.5 0 0 1 .353.146l.708.708A.5.5 0 0 0 6.207 6h1.586a.5.5 0 0 0 .353-.146l.708-.708A.5.5 0 0 1 9.207 5H16.5a.5.5 0 0 1 .5.5Z`, + d: `M 13 9.51 a 0.5 0.5 0 0 1 -0.5 0.5 H 7.197 a 0.495 0.495 0 0 0 -0.353 0.146 l -0.698 0.698 a 0.5 0.5 0 0 1 -0.353 0.146 H 4.207 a 0.5 0.5 0 0 1 -0.353 -0.146 l -0.698 -0.698 a 0.497 0.497 0 0 0 -0.353 -0.146 H 1.5 a 0.5 0.5 0 0 1 -0.5 -0.5 V 6.5 a 0.5 0.5 0 0 1 0.5 -0.5 h 1.293 a 0.5 0.5 0 0 1 0.353 0.146 l 0.708 0.708 a 0.5 0.5 0 0 0 0.353 0.146 h 1.586 a 0.5 0.5 0 0 0 0.353 -0.146 l 0.708 -0.708 A 0.5 0.5 0 0 1 7.207 6 H 12.5 a 0.5 0.5 0 0 1 0.5 0.5 z m 2 -5 a 0.5 0.5 0 0 1 -0.5 0.5 H 7.197 a 0.495 0.495 0 0 0 -0.353 0.146 l -0.698 0.698 a 0.5 0.5 0 0 1 -0.353 0.146 H 4.207 a 0.5 0.5 0 0 1 -0.353 -0.146 l -0.698 -0.698 a 0.497 0.497 0 0 0 -0.353 -0.146 H 1.5 a 0.5 0.5 0 0 1 -0.5 -0.5 V 1.5 a 0.5 0.5 0 0 1 0.5 -0.5 h 1.293 a 0.5 0.5 0 0 1 0.353 0.146 l 0.708 0.708 A 0.5 0.5 0 0 0 4.207 2 h 1.586 a 0.5 0.5 0 0 0 0.353 -0.146 l 0.708 -0.708 A 0.5 0.5 0 0 1 7.207 1 H 14.5 a 0.5 0.5 0 0 1 0.5 0.5 Z`, "clip-path": "evenodd", }), { id: "sb3-blocks", - transform: "scale(0.7, 0.7), translate(1, -3)", }, ), SVG.setProps( From fac85044e28eb632a6aecaeb1ce17ac12c44a42d Mon Sep 17 00:00:00 2001 From: ego-lay_atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Thu, 9 Jul 2026 21:43:01 -0600 Subject: [PATCH 34/35] Move `dropdownArrow`s back to their original places --- scratch3/style.js | 70 +++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/scratch3/style.js b/scratch3/style.js index 673c063fc..b18980e9d 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -325,42 +325,8 @@ export default class Style { } static makeCommonIcons() { - let arrow return [ - SVG.setProps( - SVG.group([ - SVG.el("path", { - d: "M12.71,2.44A2.41,2.41,0,0,1,12,4.16L8.08,8.08a2.45,2.45,0,0,1-3.45,0L0.72,4.16A2.42,2.42,0,0,1,0,2.44,2.48,2.48,0,0,1,.71.71C1,0.47,1.43,0,6.36,0S11.75,0.46,12,.71A2.44,2.44,0,0,1,12.71,2.44Z", - fill: "#231f20", - opacity: ".1", - }), - SVG.el("path", { - d: "M6.36,7.79a1.43,1.43,0,0,1-1-.42L1.42,3.45a1.44,1.44,0,0,1,0-2c0.56-.56,9.31-0.56,9.87,0a1.44,1.44,0,0,1,0,2L7.37,7.37A1.43,1.43,0,0,1,6.36,7.79Z", - fill: "#fff", - }), - ]), - { - id: "sb3-dropdownArrow", - }, - ), - // https://github.com/scratchfoundation/scratch-gui/tree/beta/src/lib/themes/high-contrast/blocks-media - SVG.setProps( - SVG.group([ - SVG.el("path", { - d: "M12.71,2.44A2.41,2.41,0,0,1,12,4.16L8.08,8.08a2.45,2.45,0,0,1-3.45,0L0.72,4.16A2.42,2.42,0,0,1,0,2.44,2.48,2.48,0,0,1,.71.71C1,0.47,1.43,0,6.36,0S11.75,0.46,12,.71A2.44,2.44,0,0,1,12.71,2.44Z", - fill: "#231f20", - opacity: ".1", - }), - SVG.el("path", { - d: "M6.36,7.79a1.43,1.43,0,0,1-1-.42L1.42,3.45a1.44,1.44,0,0,1,0-2c0.56-.56,9.31-0.56,9.87,0a1.44,1.44,0,0,1,0,2L7.37,7.37A1.43,1.43,0,0,1,6.36,7.79Z", - fill: "#000", - }), - ]), - { - id: "sb3-dropdownArrow-high-contrast", - }, - ), - SVG.setProps( + SVG.setProps( SVG.group([ SVG.el("path", { d: "M20.8,3.7c-0.4-0.2-0.9-0.1-1.2,0.2c-2,1.6-4.8,1.6-6.8,0c-2.3-1.9-5.6-2.3-8.3-1V2.5c0-0.6-0.5-1-1-1 s-1,0.4-1,1v18.8c0,0.5,0.5,1,1,1h0.1c0.5,0,1-0.5,1-1v-6.4c1-0.7,2.1-1.2,3.4-1.3c1.2,0,2.4,0.4,3.4,1.2c2.9,2.3,7,2.3,9.8,0 c0.3-0.2,0.4-0.5,0.4-0.9V4.7C21.6,4.2,21.3,3.8,20.8,3.7z M20.5,13.9C20.5,13.9,20.5,13.9,20.5,13.9C18,16,14.4,16,11.9,14 c-1.1-0.9-2.5-1.4-4-1.4c-1.2,0.1-2.3,0.5-3.4,1.1V4C7,2.6,10,2.9,12.2,4.6c2.4,1.9,5.7,1.9,8.1,0c0.1,0,0.1,0,0.2,0 c0,0,0.1,0.1,0.1,0.1L20.5,13.9z", @@ -1927,6 +1893,23 @@ export default class Style { static makeOriginalIcons() { return [ ...Style.makeCommonIcons(), + SVG.setProps( + SVG.group([ + SVG.el("path", { + d: "M12.71,2.44A2.41,2.41,0,0,1,12,4.16L8.08,8.08a2.45,2.45,0,0,1-3.45,0L0.72,4.16A2.42,2.42,0,0,1,0,2.44,2.48,2.48,0,0,1,.71.71C1,0.47,1.43,0,6.36,0S11.75,0.46,12,.71A2.44,2.44,0,0,1,12.71,2.44Z", + fill: "#231f20", + opacity: ".1", + }), + SVG.el("path", { + d: "M6.36,7.79a1.43,1.43,0,0,1-1-.42L1.42,3.45a1.44,1.44,0,0,1,0-2c0.56-.56,9.31-0.56,9.87,0a1.44,1.44,0,0,1,0,2L7.37,7.37A1.43,1.43,0,0,1,6.36,7.79Z", + fill: "#fff", + }), + ]), + { + id: "sb3-dropdownArrow", + }, + ), + SVG.setProps( SVG.el("path", { d: "M6,9 C5.72520708,9 5.45163006,8.89695045 5.24127973,8.68965311 L2.31461357,5.80666227 C1.89512881,5.39326583 1.89512881,4.72464202 2.31461357,4.31004733 C2.73288244,3.89665089 9.26711756,3.89665089 9.68538643,4.31004733 C10.1048712,4.72344377 10.1048712,5.39326583 9.68538643,5.80666227 L6.75993617,8.68965311 C6.54958583,8.89695045 6.27600882,9 6,9", @@ -2169,6 +2152,23 @@ export default class Style { // Make sure to update the highContrastIcons set above! return [ ...Style.makeCommonIcons(), + // https://github.com/scratchfoundation/scratch-gui/tree/beta/src/lib/themes/high-contrast/blocks-media + SVG.setProps( + SVG.group([ + SVG.el("path", { + d: "M12.71,2.44A2.41,2.41,0,0,1,12,4.16L8.08,8.08a2.45,2.45,0,0,1-3.45,0L0.72,4.16A2.42,2.42,0,0,1,0,2.44,2.48,2.48,0,0,1,.71.71C1,0.47,1.43,0,6.36,0S11.75,0.46,12,.71A2.44,2.44,0,0,1,12.71,2.44Z", + fill: "#231f20", + opacity: ".1", + }), + SVG.el("path", { + d: "M6.36,7.79a1.43,1.43,0,0,1-1-.42L1.42,3.45a1.44,1.44,0,0,1,0-2c0.56-.56,9.31-0.56,9.87,0a1.44,1.44,0,0,1,0,2L7.37,7.37A1.43,1.43,0,0,1,6.36,7.79Z", + fill: "#000", + }), + ]), + { + id: "sb3-dropdownArrow-high-contrast", + }, + ), SVG.el("path", { d: "M 1 1 L 5 5 L 1 9 Z", id: "sb3-addInput", From c7aa058cd1693780abb0853c07832b597f563ca4 Mon Sep 17 00:00:00 2001 From: ego-lay-atman-bay <70973578+ego-lay-atman-bay@users.noreply.github.com> Date: Fri, 10 Jul 2026 03:48:45 +0000 Subject: [PATCH 35/35] Format code using Prettier --- scratch3/style.js | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/scratch3/style.js b/scratch3/style.js index b18980e9d..1f5fe15a0 100644 --- a/scratch3/style.js +++ b/scratch3/style.js @@ -326,7 +326,7 @@ export default class Style { static makeCommonIcons() { return [ - SVG.setProps( + SVG.setProps( SVG.group([ SVG.el("path", { d: "M20.8,3.7c-0.4-0.2-0.9-0.1-1.2,0.2c-2,1.6-4.8,1.6-6.8,0c-2.3-1.9-5.6-2.3-8.3-1V2.5c0-0.6-0.5-1-1-1 s-1,0.4-1,1v18.8c0,0.5,0.5,1,1,1h0.1c0.5,0,1-0.5,1-1v-6.4c1-0.7,2.1-1.2,3.4-1.3c1.2,0,2.4,0.4,3.4,1.2c2.9,2.3,7,2.3,9.8,0 c0.3-0.2,0.4-0.5,0.4-0.9V4.7C21.6,4.2,21.3,3.8,20.8,3.7z M20.5,13.9C20.5,13.9,20.5,13.9,20.5,13.9C18,16,14.4,16,11.9,14 c-1.1-0.9-2.5-1.4-4-1.4c-1.2,0.1-2.3,0.5-3.4,1.1V4C7,2.6,10,2.9,12.2,4.6c2.4,1.9,5.7,1.9,8.1,0c0.1,0,0.1,0,0.2,0 c0,0,0.1,0.1,0.1,0.1L20.5,13.9z", @@ -731,30 +731,24 @@ export default class Style { }, ), SVG.setProps( - SVG.el( - "path", - { - d: "M 15 8.95 L 10.7 13.25 c -0.4 0.3 -0.9 0.4 -1.3 0.2 s -0.7 -0.6 -0.7 -1.1 v -1.6 l -6 -0.8 c -1 -0.1 -1.7 -0.9 -1.7 -1.9 v -0.2 c 0.1 -0.9 0.8 -1.5 1.6 -1.6 l 6 -0.9 v -1.6 c 0 -0.5 0.3 -0.9 0.7 -1.1 c 0.4 -0.2 0.9 -0.1 1.3 0.3 L 15 7.25 c 0.2 0.2 0.3 0.5 0.3 0.8 l -0.3 0.9 z", - stroke: "#000", - "stroke-opacity": 0.1, - "stroke-width": 2, - 'paint-order': 'stroke', - }, - ), + SVG.el("path", { + d: "M 15 8.95 L 10.7 13.25 c -0.4 0.3 -0.9 0.4 -1.3 0.2 s -0.7 -0.6 -0.7 -1.1 v -1.6 l -6 -0.8 c -1 -0.1 -1.7 -0.9 -1.7 -1.9 v -0.2 c 0.1 -0.9 0.8 -1.5 1.6 -1.6 l 6 -0.9 v -1.6 c 0 -0.5 0.3 -0.9 0.7 -1.1 c 0.4 -0.2 0.9 -0.1 1.3 0.3 L 15 7.25 c 0.2 0.2 0.3 0.5 0.3 0.8 l -0.3 0.9 z", + stroke: "#000", + "stroke-opacity": 0.1, + "stroke-width": 2, + "paint-order": "stroke", + }), { id: "sb3-arrowRight", }, ), SVG.setProps( - SVG.el( - "path", - { - d: "M 15.6 9.45 z M 9.2 12.15 l -5.6 -0.8 a 2.5 2.5 0 0 1 -2.1 -2.4 v -0.3 c 0.2 -1.1 1 -1.9 2 -2 l 5.6 -0.8 v -1.1 c 0 -0.7 0.4 -1.3 1 -1.6 c 0.6 -0.3 1.3 -0.1 1.8 0.4 l 4.3 4.3 c 0.3 0.3 0.5 0.7 0.5 1.2 c 0 0.4 -0.2 0.9 -0.5 1.2 L 12 14.55 c -0.5 0.5 -1.2 0.6 -1.8 0.3 c -0.6 -0.3 -1 -0.9 -1 -1.5 V 12.15 z", - fill: "none", - "stroke-width": 1, - "paint-order": "stroke", - }, - ), + SVG.el("path", { + d: "M 15.6 9.45 z M 9.2 12.15 l -5.6 -0.8 a 2.5 2.5 0 0 1 -2.1 -2.4 v -0.3 c 0.2 -1.1 1 -1.9 2 -2 l 5.6 -0.8 v -1.1 c 0 -0.7 0.4 -1.3 1 -1.6 c 0.6 -0.3 1.3 -0.1 1.8 0.4 l 4.3 4.3 c 0.3 0.3 0.5 0.7 0.5 1.2 c 0 0.4 -0.2 0.9 -0.5 1.2 L 12 14.55 c -0.5 0.5 -1.2 0.6 -1.8 0.3 c -0.6 -0.3 -1 -0.9 -1 -1.5 V 12.15 z", + fill: "none", + "stroke-width": 1, + "paint-order": "stroke", + }), { id: "sb3-arrowRightOutline", },