Iosevka/snapshot-src/index.js
2020-08-13 19:56:16 -07:00

75 lines
2 KiB
JavaScript

/* eslint-env node, browser */
const windowWidth = window.innerWidth;
const windowHeight = window.innerHeight;
const dpi = window.devicePixelRatio;
const ipc = require("electron").ipcRenderer;
const packagingTasks = require("./packaging-tasks.json");
let onScroll = function () {};
ipc.on("scroll", function () {
onScroll.apply(this, arguments);
setTimeout(function () {
ipc.send("snapshot", "scroll-done");
}, 500);
});
let onComplete = function () {};
ipc.on("complete", function () {
onComplete.apply(this, arguments);
});
function captureElement(options, callback) {
window.scroll(0, 0);
setTimeout(function () {
const element = document.querySelector(options.el);
if (options.applyClass) element.className = options.applyClass;
if (options.applyFeature) element.style = "font-feature-settings:" + options.applyFeature;
const rect = element.getBoundingClientRect();
onScroll = function (event, arg) {
window.scrollTo(0, arg);
};
onComplete = function () {
if (callback) callback();
onComplete = function () {};
};
ipc.send("snapshot", {
name: options.name,
windowWidth: windowWidth,
windowHeight: windowHeight,
doubleTrim: options.doubleTrim,
dpi: dpi,
x: rect.left | 0,
y: rect.top | 0,
width: rect.width | 0,
height: rect.height | 0
});
}, 10);
}
window.onload = function () {
const snapshotTasks = [
{ el: "#languages", name: "languages" },
{ el: "#stylesets", name: "stylesets" },
{ el: "#charvars", name: "charvars" },
{ el: "#matrix", name: "matrix" },
{ el: "#previews", name: "preview-all" },
{ el: "#weights", name: "weights" },
{ el: "#ligations", name: "ligations", doubleTrim: "white" },
...packagingTasks
];
let current = 0;
const step = function () {
const doit = function () {
captureElement(snapshotTasks[current], function () {
current += 1;
if (current >= snapshotTasks.length) window.close();
else setTimeout(step, 100);
});
};
setTimeout(doit, 100);
};
ipc.send("snapshot", "i am ready");
console.log("I AM READY");
setTimeout(step, 2000);
};