I think you need to add something module-like for Snap! 12 friendly users from now on.

like what
changes on this to make the stage left?
IDE_Morph.prototype.fixLayout = function (situation) {
// situation is a string, i.e.
// 'selectSprite' or 'refreshPalette' or 'tabEditor'
var padding = this.padding,
cnf = this.config,
border = cnf.border || 0,
flag,
maxPaletteWidth;
// logo
this.logo.setLeft(this.left() + border);
this.logo.setTop(this.top() + border);
if (situation !== 'refreshPalette') {
// controlBar
this.controlBar.setPosition(this.logo.topRight());
this.controlBar.setWidth(
this.right() - this.controlBar.left() - border
);
this.controlBar.fixLayout();
// categories
this.categories.setLeft(this.logo.left());
this.categories.setTop(
cnf.hideControls ? this.top() + border : this.logo.bottom()
);
this.categories.setWidth(this.paletteWidth);
if (this.categories.scroller) {
this.categories.scroller.setWidth(this.paletteWidth);
}
}
// palette
this.palette.setLeft(this.logo.left());
this.palette.setTop(
cnf.hideCategories ?
(cnf.hideControls ?
this.top() + border
: this.controlBar.bottom() + padding)
: this.categories.bottom()
);
this.palette.setHeight(this.bottom() - this.palette.top() - border);
this.palette.setWidth(this.paletteWidth);
if (situation !== 'refreshPalette') {
// stage
if (this.performerMode) {
this.stage.setLeft(this.palette.right() + padding);
this.stage.setTop(this.spriteBar.bottom() + padding);
this.stage.setScale(1);
this.stageRatio = 1;
this.isSmallStage = false;
this.stage.dimensions = new Point(
(this.width() - this.palette.width()) / this.performerScale,
(this.palette.height() -
this.corralBar.height() -
this.corral.childThatIsA(SpriteIconMorph).height()
) / this.performerScale
);
this.stage.stopVideo();
this.stage.setExtent(new Point(
this.stage.dimensions.x * this.performerScale,
this.stage.dimensions.y * this.performerScale
));
this.stage.resizePenTrails();
Costume.prototype.maxDimensions = this.stage.dimensions;
this.paletteHandle.fixLayout();
this.controlBar.stageSizeButton.hide();
} else if (this.isEmbedMode) {
this.stage.setScale(Math.floor(Math.min(
this.width() / this.stage.dimensions.x,
this.height() / this.stage.dimensions.y
) * 100) / 100);
flag = this.embedPlayButton.flag;
flag.size = Math.floor(Math.min(
this.width(), this.height())) / 5;
flag.fixLayout();
this.embedPlayButton.size = flag.size * 1.6;
this.embedPlayButton.fixLayout();
if (this.embedOverlay) {
this.embedOverlay.setExtent(this.extent());
}
this.stage.setCenter(this.center());
this.embedPlayButton.setCenter(this.stage.center());
flag.setCenter(this.embedPlayButton.center());
flag.setLeft(flag.left() + flag.size * 0.1); // account for slight asymmetry
} else if (this.isAppMode) {
this.stage.setScale(Math.floor(Math.min(
(this.width() - padding * 2) / this.stage.dimensions.x,
(this.height() - this.controlBar.height() * 2 - padding * 2)
/ this.stage.dimensions.y
) * 10) / 10);
this.stage.setCenter(this.center());
} else {
this.stage.setScale(this.isSmallStage ? this.stageRatio : 1);
this.stage.setTop(
cnf.hideControls ?
this.top() + border
: this.logo.bottom() + padding
);
this.stage.setRight(this.right() - border);
if (cnf.noSprites) {
maxPaletteWidth = Math.max(
200,
this.width() -
border * 2
);
} else {
maxPaletteWidth = Math.max(
200,
this.width() -
this.stage.width() -
this.spriteBar.tabBar.width() -
padding * 2 -
border * 2
);
}
if (this.paletteWidth > maxPaletteWidth) {
this.paletteWidth = maxPaletteWidth;
this.fixLayout();
}
this.stageHandle.fixLayout();
this.paletteHandle.fixLayout();
}
// spriteBar
this.spriteBar.setLeft(cnf.noPalette ?
this.left() + border
: this.paletteWidth + padding + border
);
this.spriteBar.setTop(
cnf.hideControls ?
this.top() + border
: this.logo.bottom() + padding
);
this.spriteBar.setWidth(
Math.max(0, this.stage.left() - padding - this.spriteBar.left())
);
this.spriteBar.setHeight(
Math.round(this.logo.height() * 2.6)
);
this.spriteBar.fixLayout();
// spriteEditor
if (this.spriteEditor.isVisible) {
if (this.performerMode) {
this.spriteEditor.setTop(this.stage.top());
this.spriteEditor.setLeft(this.stage.left());
this.spriteEditor.setWidth(this.stage.width());
this.spriteEditor.setHeight(this.stage.height());
} else {
this.spriteEditor.setLeft(this.spriteBar.left());
this.spriteEditor.setTop(
cnf.noSprites || cnf.noSpriteEdits ?
(cnf.hideControls ? this.top() + border
: this.controlBar.bottom() + padding)
: this.spriteBar.bottom() + padding
);
this.spriteEditor.setWidth(
cnf.noSprites ?
this.right() - this.spriteEditor.left() - border
: this.spriteBar.width()
);
this.spriteEditor.setHeight(
this.bottom() - this.spriteEditor.top() - border
);
}
}
// corralBar
this.corralBar.setLeft(this.stage.left());
this.corralBar.setTop(this.stage.bottom() + padding);
this.corralBar.setWidth(this.stage.width());
// corral
if (!contains(['selectSprite', 'tabEditor'], situation)) {
this.corral.setPosition(this.corralBar.bottomLeft());
this.corral.setWidth(this.stage.width());
this.corral.setHeight(this.bottom() - this.corral.top() - border);
this.corral.fixLayout();
}
}
};
See what was changed while changing the Morphic version in Snap! version 12.
Tip: You can put js after the first text with ``` in the Markdown editor if you are writing or pasting in JavaScript.
Example
function squareNumber(value) {
return value * value;
}
const squareResult = squareNumber(6);
console.log(squareResult);
I may need your help guys
Because this isn’t a JavaScript forum, you may not be able to find the help you need - so be forewarned. Perhaps modding Snap isn’t the best choice if you don’t know how.
I only changed the color of the blocks lol
I believe I could possibly assist.
I’ve never seen the source code of Snap!, but I understand some JavaScript in general.
Unrelated to the mod but related to JS open if you dare
In fact, I’ve been working on my own block-based coding site using JS!
(And HTML.)
(And CSS.)
(…it’s a site)
(Edit [ooooh an edit was used to add this edit mark]: ) (NOT NOT NOT EVER RECCOMENDING OFF-SITE MEETINGS, IT’S NOT A SITE YET NOR WILL IT HAVE ONLINE FEATURES [i feel like i just needed to clarify])
Please; read this.
And also:
Folks - once again (!) - this forum seems to be degrading into a maelstrom of mostly infantile mods and largely clueless JavaScript hackery. I will not be supporting any of this. Instead I’d like it to be known that we’re offering this Snap! forum to support educators and learners of Snap!, and not, not ever and not one bit teenagers exploring web programming or defacing our software. Yes, Snap! is open-source, but this is not the place to discuss those internals, capisce?
Oh, I was bored lol
let me take the opportunity to encourage the posting of Snap*!* projects: cool games, mathematical explorations, build-your-own AI, Wordle playing programs, etc.
Okay, much as I enjoy hearing myself talk, this is getting repetitive. I’m closing the thread.