@@ -32796,13 +32796,13 @@ var generateContributionSnake = function (userName, outputs) { return __awaiter(
3279632796 chain = (0, getBestRoute_1.getBestRoute)(grid, snake);
3279732797 chain.push.apply(chain, (0, getPathToPose_1.getPathToPose)(chain.slice(-1)[0], snake));
3279832798 return [2 /*return*/, Promise.all(outputs.map(function (out, i) { return __awaiter(void 0, void 0, void 0, function () {
32799- var format, drawOptions, gifOptions , _a, createSvg, createGif;
32799+ var format, drawOptions, animationOptions , _a, createSvg, createGif;
3280032800 return __generator(this, function (_b) {
3280132801 switch (_b.label) {
3280232802 case 0:
3280332803 if (!out)
3280432804 return [2 /*return*/];
32805- format = out.format, drawOptions = out.drawOptions, gifOptions = out.gifOptions ;
32805+ format = out.format, drawOptions = out.drawOptions, animationOptions = out.animationOptions ;
3280632806 _a = format;
3280732807 switch (_a) {
3280832808 case "svg": return [3 /*break*/, 1];
@@ -32814,13 +32814,13 @@ var generateContributionSnake = function (userName, outputs) { return __awaiter(
3281432814 return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(__webpack_require__(7415)); })];
3281532815 case 2:
3281632816 createSvg = (_b.sent()).createSvg;
32817- return [2 /*return*/, createSvg(grid, chain, drawOptions, gifOptions )];
32817+ return [2 /*return*/, createSvg(grid, cells, chain, drawOptions, animationOptions )];
3281832818 case 3:
3281932819 console.log("\uD83D\uDCF9 creating gif (outputs[".concat(i, "])"));
3282032820 return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(__webpack_require__(340)); })];
3282132821 case 4:
3282232822 createGif = (_b.sent()).createGif;
32823- return [4 /*yield*/, createGif(grid, chain, drawOptions, gifOptions )];
32823+ return [4 /*yield*/, createGif(grid, cells, chain, drawOptions, animationOptions )];
3282432824 case 5: return [2 /*return*/, _b.sent()];
3282532825 case 6: return [2 /*return*/];
3282632826 }
@@ -32962,13 +32962,25 @@ var palettes_1 = __webpack_require__(3848);
3296232962var parseOutputsOption = function (lines) { return lines.map(exports.parseEntry); };
3296332963exports.parseOutputsOption = parseOutputsOption;
3296432964var parseEntry = function (entry) {
32965- var m = entry.trim().match(/^(.+\.(svg|gif))(\?.* )?$/);
32965+ var m = entry.trim().match(/^(.+\.(svg|gif))(\?(.*) )?$/);
3296632966 if (!m)
3296732967 return null;
32968- var _ = m[0], filename = m[1], format = m[2], query = m[3 ];
32968+ var filename = m[1], format = m[2], query = m[4 ];
3296932969 var sp = new URLSearchParams(query || "");
32970+ try {
32971+ var o = JSON.parse(query);
32972+ if (Array.isArray(o.color_dots))
32973+ o.color_dots = o.color_dots.join(",");
32974+ if (Array.isArray(o.dark_color_dots))
32975+ o.dark_color_dots = o.dark_color_dots.join(",");
32976+ sp = new URLSearchParams(o);
32977+ }
32978+ catch (err) {
32979+ if (!(err instanceof SyntaxError))
32980+ throw err;
32981+ }
3297032982 var drawOptions = __assign({ sizeDotBorderRadius: 2, sizeCell: 16, sizeDot: 12 }, palettes_1.palettes["default"]);
32971- var gifOptions = { step: 1, frameDuration: 100 };
32983+ var animationOptions = { step: 1, frameDuration: 100 };
3297232984 {
3297332985 var palette = palettes_1.palettes[sp.get("palette")];
3297432986 if (palette) {
@@ -32994,7 +33006,12 @@ var parseEntry = function (entry) {
3299433006 drawOptions.dark.colorDotBorder = sp.get("color_dot_border");
3299533007 if (sp.has("dark_color_snake") && drawOptions.dark)
3299633008 drawOptions.dark.colorSnake = sp.get("color_snake");
32997- return { filename: filename, format: format, drawOptions: drawOptions, gifOptions: gifOptions };
33009+ return {
33010+ filename: filename,
33011+ format: format,
33012+ drawOptions: drawOptions,
33013+ animationOptions: animationOptions
33014+ };
3299833015};
3299933016exports.parseEntry = parseEntry;
3300033017
@@ -33085,10 +33102,10 @@ exports.__esModule = true;
3308533102exports.drawGrid = void 0;
3308633103var grid_1 = __webpack_require__(2881);
3308733104var pathRoundedRect_1 = __webpack_require__(2356);
33088- var drawGrid = function (ctx, grid, o) {
33105+ var drawGrid = function (ctx, grid, cells, o) {
3308933106 var _loop_1 = function (x) {
3309033107 var _loop_2 = function (y) {
33091- if (!o. cells || o. cells.some(function (c) { return c.x === x && c.y === y; })) {
33108+ if (!cells || cells.some(function (c) { return c.x === x && c.y === y; })) {
3309233109 var c = (0, grid_1.getColor)(grid, x, y);
3309333110 // @ts-ignore
3309433111 var color = !c ? o.colorEmpty : o.colorDots[c];
@@ -33186,10 +33203,10 @@ var drawStack = function (ctx, stack, max, width, o) {
3318633203 ctx.restore();
3318733204};
3318833205exports.drawStack = drawStack;
33189- var drawWorld = function (ctx, grid, snake, stack, o) {
33206+ var drawWorld = function (ctx, grid, cells, snake, stack, o) {
3319033207 ctx.save();
3319133208 ctx.translate(1 * o.sizeCell, 2 * o.sizeCell);
33192- (0, drawGrid_1.drawGrid)(ctx, grid, o);
33209+ (0, drawGrid_1.drawGrid)(ctx, grid, cells, o);
3319333210 (0, drawSnake_1.drawSnake)(ctx, snake, o);
3319433211 ctx.restore();
3319533212 ctx.save();
@@ -33204,10 +33221,10 @@ var drawWorld = function (ctx, grid, snake, stack, o) {
3320433221 // ctx.restore();
3320533222};
3320633223exports.drawWorld = drawWorld;
33207- var drawLerpWorld = function (ctx, grid, snake0, snake1, stack, k, o) {
33224+ var drawLerpWorld = function (ctx, grid, cells, snake0, snake1, stack, k, o) {
3320833225 ctx.save();
3320933226 ctx.translate(1 * o.sizeCell, 2 * o.sizeCell);
33210- (0, drawGrid_1.drawGrid)(ctx, grid, o);
33227+ (0, drawGrid_1.drawGrid)(ctx, grid, cells, o);
3321133228 (0, drawSnake_1.drawSnakeLerp)(ctx, snake0, snake1, k, o);
3321233229 ctx.translate(0, (grid.height + 2) * o.sizeCell);
3321333230 var max = grid.data.reduce(function (sum, x) { return sum + +!!x; }, stack.length);
@@ -33321,7 +33338,7 @@ var withTmpDir = function (handler) { return __awaiter(void 0, void 0, void 0, f
3332133338 }
3332233339 });
3332333340}); };
33324- var createGif = function (grid0, chain, drawOptions, gifOptions ) { return __awaiter(void 0, void 0, void 0, function () {
33341+ var createGif = function (grid0, cells, chain, drawOptions, animationOptions ) { return __awaiter(void 0, void 0, void 0, function () {
3332533342 return __generator(this, function (_a) {
3332633343 return [2 /*return*/, withTmpDir(function (dir) { return __awaiter(void 0, void 0, void 0, function () {
3332733344 var _a, width, height, canvas, ctx, grid, stack, encoder, i, snake0, snake1, k, outFileName, optimizedFileName;
@@ -33333,17 +33350,17 @@ var createGif = function (grid0, chain, drawOptions, gifOptions) { return __awai
3333333350 stack = [];
3333433351 encoder = new gif_encoder_2_1["default"](width, height, "neuquant", true);
3333533352 encoder.setRepeat(0);
33336- encoder.setDelay(gifOptions .frameDuration);
33353+ encoder.setDelay(animationOptions .frameDuration);
3333733354 encoder.start();
3333833355 for (i = 0; i < chain.length; i += 1) {
3333933356 snake0 = chain[i];
3334033357 snake1 = chain[Math.min(chain.length - 1, i + 1)];
3334133358 (0, step_1.step)(grid, stack, snake0);
33342- for (k = 0; k < gifOptions .step; k++) {
33359+ for (k = 0; k < animationOptions .step; k++) {
3334333360 ctx.clearRect(0, 0, width, height);
3334433361 ctx.fillStyle = "#fff";
3334533362 ctx.fillRect(0, 0, width, height);
33346- (0, drawWorld_1.drawLerpWorld)(ctx, grid, snake0, snake1, stack, k / gifOptions .step, drawOptions);
33363+ (0, drawWorld_1.drawLerpWorld)(ctx, grid, cells, snake0, snake1, stack, k / animationOptions .step, drawOptions);
3334733364 encoder.addFrame(ctx);
3334833365 }
3334933366 }
@@ -34468,9 +34485,8 @@ var getCellsFromGrid = function (_a) {
3446834485 return Array.from({ length: height }, function (_, y) { return ({ x: x, y: y }); });
3446934486 }).flat();
3447034487};
34471- var createLivingCells = function (grid0, chain, drawOptions) {
34472- var _a;
34473- var cells = ((_a = drawOptions.cells) !== null && _a !== void 0 ? _a : getCellsFromGrid(grid0)).map(function (_a) {
34488+ var createLivingCells = function (grid0, chain, cells) {
34489+ var livingCells = (cells !== null && cells !== void 0 ? cells : getCellsFromGrid(grid0)).map(function (_a) {
3447434490 var x = _a.x, y = _a.y;
3447534491 return ({
3447634492 x: x,
@@ -34486,23 +34502,23 @@ var createLivingCells = function (grid0, chain, drawOptions) {
3448634502 var y = (0, snake_1.getHeadY)(snake);
3448734503 if ((0, grid_1.isInside)(grid, x, y) && !(0, grid_1.isEmpty)((0, grid_1.getColor)(grid, x, y))) {
3448834504 (0, grid_1.setColorEmpty)(grid, x, y);
34489- var cell = cells .find(function (c) { return c.x === x && c.y === y; });
34505+ var cell = livingCells .find(function (c) { return c.x === x && c.y === y; });
3449034506 cell.t = i / chain.length;
3449134507 }
3449234508 };
3449334509 for (var i = 0; i < chain.length; i++) {
3449434510 _loop_1(i);
3449534511 }
34496- return cells ;
34512+ return livingCells ;
3449734513};
34498- var createSvg = function (grid, chain, drawOptions, gifOptions ) {
34514+ var createSvg = function (grid, cells, chain, drawOptions, animationOptions ) {
3449934515 var width = (grid.width + 2) * drawOptions.sizeCell;
3450034516 var height = (grid.height + 5) * drawOptions.sizeCell;
34501- var duration = gifOptions .frameDuration * chain.length;
34502- var cells = createLivingCells(grid, chain, drawOptions );
34517+ var duration = animationOptions .frameDuration * chain.length;
34518+ var livingCells = createLivingCells(grid, chain, cells );
3450334519 var elements = [
34504- (0, grid_2.createGrid)(cells , drawOptions, duration),
34505- (0, stack_1.createStack)(cells , drawOptions, grid.width * drawOptions.sizeCell, (grid.height + 2) * drawOptions.sizeCell, duration),
34520+ (0, grid_2.createGrid)(livingCells , drawOptions, duration),
34521+ (0, stack_1.createStack)(livingCells , drawOptions, grid.width * drawOptions.sizeCell, (grid.height + 2) * drawOptions.sizeCell, duration),
3450634522 (0, snake_2.createSnake)(chain, drawOptions, duration),
3450734523 ];
3450834524 var viewBox = [
0 commit comments