Skip to content

Instantly share code, notes, and snippets.

View yikuansun's full-sized avatar
🍽️
Eating

Yikuan Sun yikuansun

🍽️
Eating
View GitHub Profile
@yikuansun
yikuansun / integrate.js
Created December 23, 2022 16:06
Evaluate definite integrals in JavaScript
Math.integrate = function(fn, a, b, deltaX = 0.0001) {
var out = 0;
for (var x = a; x < b; x += deltaX) out += deltaX * fn(x);
return out;
};
@yikuansun
yikuansun / addImageAndWait.js
Last active February 21, 2024 13:46
Useful algorithms for Photopea plugin development
// uses Photopea.js
var addImageAndWait = async function(contentWindow, imgURI) {
return new Promise(async function(resolve) {
var layerCountOld = "done";
while (layerCountOld == "done") layerCountOld = (await Photopea.runScript(contentWindow, `app.echoToOE(app.activeDocument.layers.length)`))[0];
var layerCountNew = layerCountOld;
await Photopea.runScript(contentWindow, `app.open("${imgURI}", null, true);`);
var layerCheckInterval = async function () {
layerCountNew = (await Photopea.runScript(contentWindow, `app.echoToOE(app.activeDocument.layers.length)`))[0];
if (layerCountNew == layerCountOld + 1) {
@yikuansun
yikuansun / numberInput.css
Created April 28, 2023 15:48
Make Firefox number inputs behave like Chrome
/* Make Firefox number inputs show/hide spinner arrows like in Chrome */
input[type=number] {
-moz-appearance: textfield;
}
input[type=number]:hover {
-moz-appearance: revert!important;
}
@yikuansun
yikuansun / addImageSync.js
Created February 24, 2024 23:16
Add image to document synchronously in Photopea
let currentDocument = app.activeDocument;
/*
load in the image as an array buffer - will open in new document
*/
app.activeDocument.activeLayer.copy(true);
app.activeDocument.close();
app.activeDocument = currentDocument;
let newLayer = currentDocument.layers.add();
currentDocument.paste();