@@ -32781,55 +32781,51 @@ var userContributionToGrid_1 = __webpack_require__(5740);
3278132781var getBestRoute_1 = __webpack_require__(2705);
3278232782var snake_1 = __webpack_require__(7087);
3278332783var getPathToPose_1 = __webpack_require__(6963);
32784- var generateContributionSnake = function (userName, format ) { return __awaiter(void 0, void 0, void 0, function () {
32785- var _a, cells, colorScheme, grid, snake, drawOptions, gifOptions, chain, output, createGif, _b, createSvg ;
32786- return __generator(this, function (_c ) {
32787- switch (_c .label) {
32784+ var generateContributionSnake = function (userName, outputs ) { return __awaiter(void 0, void 0, void 0, function () {
32785+ var _a, cells, colorScheme, grid, snake, chain;
32786+ return __generator(this, function (_b ) {
32787+ switch (_b .label) {
3278832788 case 0:
3278932789 console.log("🎣 fetching github user contribution");
3279032790 return [4 /*yield*/, (0, github_user_contribution_1.getGithubUserContribution)(userName)];
3279132791 case 1:
32792- _a = _c .sent(), cells = _a.cells, colorScheme = _a.colorScheme;
32792+ _a = _b .sent(), cells = _a.cells, colorScheme = _a.colorScheme;
3279332793 grid = (0, userContributionToGrid_1.userContributionToGrid)(cells, colorScheme);
3279432794 snake = snake_1.snake4;
32795- drawOptions = {
32796- sizeBorderRadius: 2,
32797- sizeCell: 16,
32798- sizeDot: 12,
32799- colorBorder: "#1b1f230a",
32800- colorDots: colorScheme,
32801- colorEmpty: colorScheme[0],
32802- colorSnake: "purple",
32803- cells: cells,
32804- dark: {
32805- colorEmpty: "#161b22",
32806- colorDots: { 1: "#01311f", 2: "#034525", 3: "#0f6d31", 4: "#00c647" }
32807- }
32808- };
32809- gifOptions = { frameDuration: 100, step: 1 };
3281032795 console.log("📡 computing best route");
3281132796 chain = (0, getBestRoute_1.getBestRoute)(grid, snake);
3281232797 chain.push.apply(chain, (0, getPathToPose_1.getPathToPose)(chain.slice(-1)[0], snake));
32813- output = {};
32814- if (!format.gif) return [3 /*break*/, 4];
32815- console.log("📹 creating gif");
32816- return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(__webpack_require__(340)); })];
32817- case 2:
32818- createGif = (_c.sent()).createGif;
32819- _b = output;
32820- return [4 /*yield*/, createGif(grid, chain, drawOptions, gifOptions)];
32821- case 3:
32822- _b.gif = _c.sent();
32823- _c.label = 4;
32824- case 4:
32825- if (!format.svg) return [3 /*break*/, 6];
32826- console.log("🖌 creating svg");
32827- return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(__webpack_require__(7415)); })];
32828- case 5:
32829- createSvg = (_c.sent()).createSvg;
32830- output.svg = createSvg(grid, chain, drawOptions, gifOptions);
32831- _c.label = 6;
32832- case 6: return [2 /*return*/, output];
32798+ 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;
32800+ return __generator(this, function (_b) {
32801+ switch (_b.label) {
32802+ case 0:
32803+ if (!out)
32804+ return [2 /*return*/];
32805+ format = out.format, drawOptions = out.drawOptions, gifOptions = out.gifOptions;
32806+ _a = format;
32807+ switch (_a) {
32808+ case "svg": return [3 /*break*/, 1];
32809+ case "gif": return [3 /*break*/, 3];
32810+ }
32811+ return [3 /*break*/, 6];
32812+ case 1:
32813+ console.log("\uD83D\uDD8C creating svg (outputs[".concat(i, "])"));
32814+ return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(__webpack_require__(7415)); })];
32815+ case 2:
32816+ createSvg = (_b.sent()).createSvg;
32817+ return [2 /*return*/, createSvg(grid, chain, drawOptions, gifOptions)];
32818+ case 3:
32819+ console.log("\uD83D\uDCF9 creating gif (outputs[".concat(i, "])"));
32820+ return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(__webpack_require__(340)); })];
32821+ case 4:
32822+ createGif = (_b.sent()).createGif;
32823+ return [4 /*yield*/, createGif(grid, chain, drawOptions, gifOptions)];
32824+ case 5: return [2 /*return*/, _b.sent()];
32825+ case 6: return [2 /*return*/];
32826+ }
32827+ });
32828+ }); }))];
3283332829 }
3283432830 });
3283532831}); };
@@ -32907,30 +32903,30 @@ var fs = __importStar(__webpack_require__(5747));
3290732903var path = __importStar(__webpack_require__(5622));
3290832904var core = __importStar(__webpack_require__(7117));
3290932905var generateContributionSnake_1 = __webpack_require__(8847);
32906+ var outputsOptions_1 = __webpack_require__(3379);
3291032907(function () { return __awaiter(void 0, void 0, void 0, function () {
32911- var userName, format, _a, svg, gif, e_1;
32908+ var userName, outputs, results_1, e_1;
32909+ var _a;
3291232910 return __generator(this, function (_b) {
3291332911 switch (_b.label) {
3291432912 case 0:
3291532913 _b.trys.push([0, 2, , 3]);
3291632914 userName = core.getInput("github_user_name");
32917- format = {
32918- svg: core.getInput("svg_out_path "),
32919- gif: core.getInput("gif_out_path")
32920- } ;
32921- return [4 /*yield*/, (0, generateContributionSnake_1.generateContributionSnake)(userName, format )];
32915+ outputs = (0, outputsOptions_1.parseOutputsOption)((_a = core.getMultilineInput("outputs")) !== null && _a !== void 0 ? _a : [
32916+ core.getInput("gif_out_path "),
32917+ core.getInput("svg_out_path"),
32918+ ]) ;
32919+ return [4 /*yield*/, (0, generateContributionSnake_1.generateContributionSnake)(userName, outputs )];
3292232920 case 1:
32923- _a = _b.sent(), svg = _a.svg, gif = _a.gif;
32924- if (svg) {
32925- fs.mkdirSync(path.dirname(format.svg), { recursive: true });
32926- fs.writeFileSync(format.svg, svg);
32927- core.setOutput("svg_out_path", format.svg);
32928- }
32929- if (gif) {
32930- fs.mkdirSync(path.dirname(format.gif), { recursive: true });
32931- fs.writeFileSync(format.gif, gif);
32932- core.setOutput("gif_out_path", format.gif);
32933- }
32921+ results_1 = _b.sent();
32922+ outputs.forEach(function (out, i) {
32923+ var result = results_1[i];
32924+ if ((out === null || out === void 0 ? void 0 : out.filename) && result) {
32925+ console.log("\uD83D\uDCBE writing to ".concat(out === null || out === void 0 ? void 0 : out.filename));
32926+ fs.mkdirSync(path.dirname(out === null || out === void 0 ? void 0 : out.filename), { recursive: true });
32927+ fs.writeFileSync(out === null || out === void 0 ? void 0 : out.filename, result);
32928+ }
32929+ });
3293432930 return [3 /*break*/, 3];
3293532931 case 2:
3293632932 e_1 = _b.sent();
@@ -32942,6 +32938,106 @@ var generateContributionSnake_1 = __webpack_require__(8847);
3294232938}); })();
3294332939
3294432940
32941+ /***/ }),
32942+
32943+ /***/ 3379:
32944+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
32945+
32946+ "use strict";
32947+
32948+ var __assign = (this && this.__assign) || function () {
32949+ __assign = Object.assign || function(t) {
32950+ for (var s, i = 1, n = arguments.length; i < n; i++) {
32951+ s = arguments[i];
32952+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
32953+ t[p] = s[p];
32954+ }
32955+ return t;
32956+ };
32957+ return __assign.apply(this, arguments);
32958+ };
32959+ exports.__esModule = true;
32960+ exports.parseEntry = exports.parseOutputsOption = void 0;
32961+ var palettes_1 = __webpack_require__(3848);
32962+ var parseOutputsOption = function (lines) { return lines.map(exports.parseEntry); };
32963+ exports.parseOutputsOption = parseOutputsOption;
32964+ var parseEntry = function (entry) {
32965+ var m = entry.trim().match(/^(.+\.(svg|gif))(\?.*)?$/);
32966+ if (!m)
32967+ return null;
32968+ var _ = m[0], filename = m[1], format = m[2], query = m[3];
32969+ var sp = new URLSearchParams(query || "");
32970+ var drawOptions = __assign({ sizeDotBorderRadius: 2, sizeCell: 16, sizeDot: 12 }, palettes_1.palettes["default"]);
32971+ var gifOptions = { step: 1, frameDuration: 100 };
32972+ {
32973+ var palette = palettes_1.palettes[sp.get("palette")];
32974+ if (palette) {
32975+ Object.assign(drawOptions, palette);
32976+ drawOptions.dark = palette.dark && __assign({}, palette.dark);
32977+ }
32978+ }
32979+ if (sp.has("color_snake"))
32980+ drawOptions.colorSnake = sp.get("color_snake");
32981+ if (sp.has("color_dots")) {
32982+ var colors = sp.get("color_dots").split(/[,;]/);
32983+ drawOptions.colorDots = colors;
32984+ drawOptions.colorEmpty = colors[0];
32985+ drawOptions.dark = undefined;
32986+ }
32987+ if (sp.has("color_dot_border"))
32988+ drawOptions.colorDotBorder = sp.get("color_dot_border");
32989+ if (sp.has("dark_color_dots")) {
32990+ var colors = sp.get("dark_color_dots").split(/[,;]/);
32991+ drawOptions.dark = __assign(__assign({}, drawOptions.dark), { colorDots: colors, colorEmpty: colors[0] });
32992+ }
32993+ if (sp.has("dark_color_dot_border") && drawOptions.dark)
32994+ drawOptions.dark.colorDotBorder = sp.get("color_dot_border");
32995+ if (sp.has("dark_color_snake") && drawOptions.dark)
32996+ drawOptions.dark.colorSnake = sp.get("color_snake");
32997+ return { filename: filename, format: format, drawOptions: drawOptions, gifOptions: gifOptions };
32998+ };
32999+ exports.parseEntry = parseEntry;
33000+
33001+
33002+ /***/ }),
33003+
33004+ /***/ 3848:
33005+ /***/ (function(__unused_webpack_module, exports) {
33006+
33007+ "use strict";
33008+
33009+ var __assign = (this && this.__assign) || function () {
33010+ __assign = Object.assign || function(t) {
33011+ for (var s, i = 1, n = arguments.length; i < n; i++) {
33012+ s = arguments[i];
33013+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
33014+ t[p] = s[p];
33015+ }
33016+ return t;
33017+ };
33018+ return __assign.apply(this, arguments);
33019+ };
33020+ exports.__esModule = true;
33021+ exports.palettes = void 0;
33022+ exports.palettes = {
33023+ "github-light": {
33024+ colorDotBorder: "#1b1f230a",
33025+ colorDots: ["#ebedf0", "#9be9a8", "#40c463", "#30a14e", "#216e39"],
33026+ colorEmpty: "#ebedf0",
33027+ colorSnake: "purple"
33028+ },
33029+ "github-dark": {
33030+ colorDotBorder: "#1b1f230a",
33031+ colorEmpty: "#161b22",
33032+ colorDots: ["#161b22", "#01311f", "#034525", "#0f6d31", "#00c647"],
33033+ colorSnake: "purple"
33034+ }
33035+ };
33036+ // aliases
33037+ exports.palettes.github = __assign(__assign({}, exports.palettes["github-light"]), { dark: __assign({}, exports.palettes["github-dark"]) });
33038+ exports.palettes.default = exports.palettes["github"];
33039+
33040+
3294533041/***/ }),
3294633042
3294733043/***/ 5740:
@@ -32999,10 +33095,10 @@ var drawGrid = function (ctx, grid, o) {
3299933095 ctx.save();
3300033096 ctx.translate(x * o.sizeCell + (o.sizeCell - o.sizeDot) / 2, y * o.sizeCell + (o.sizeCell - o.sizeDot) / 2);
3300133097 ctx.fillStyle = color;
33002- ctx.strokeStyle = o.colorBorder ;
33098+ ctx.strokeStyle = o.colorDotBorder ;
3300333099 ctx.lineWidth = 1;
3300433100 ctx.beginPath();
33005- (0, pathRoundedRect_1.pathRoundedRect)(ctx, o.sizeDot, o.sizeDot, o.sizeBorderRadius );
33101+ (0, pathRoundedRect_1.pathRoundedRect)(ctx, o.sizeDot, o.sizeDot, o.sizeDotBorderRadius );
3300633102 ctx.fill();
3300733103 ctx.stroke();
3300833104 ctx.closePath();
@@ -34284,7 +34380,7 @@ exports.createGrid = void 0;
3428434380var utils_1 = __webpack_require__(5913);
3428534381var percent = function (x) { return (x * 100).toFixed(2); };
3428634382var createGrid = function (cells, _a, duration) {
34287- var sizeBorderRadius = _a.sizeBorderRadius , sizeDot = _a.sizeDot, sizeCell = _a.sizeCell;
34383+ var sizeDotBorderRadius = _a.sizeDotBorderRadius , sizeDot = _a.sizeDot, sizeCell = _a.sizeCell;
3428834384 var svgElements = [];
3428934385 var styles = [
3429034386 ".c{\n shape-rendering: geometricPrecision;\n fill: var(--ce);\n stroke-width: 1px;\n stroke: var(--cb);\n animation: none ".concat(duration, "ms linear infinite;\n }"),
@@ -34307,8 +34403,8 @@ var createGrid = function (cells, _a, duration) {
3430734403 "class": ["c", id].filter(Boolean).join(" "),
3430834404 x: x * s + m,
3430934405 y: y * s + m,
34310- rx: sizeBorderRadius ,
34311- ry: sizeBorderRadius ,
34406+ rx: sizeDotBorderRadius ,
34407+ ry: sizeDotBorderRadius ,
3431234408 width: d,
3431334409 height: d
3431434410 }));
@@ -34442,14 +34538,14 @@ exports.createSvg = createSvg;
3444234538var optimizeCss = function (css) { return csso.minify(css).css; };
3444334539var optimizeSvg = function (svg) { return svg; };
3444434540var generateColorVar = function (drawOptions) {
34445- return "\n :root {\n --cb: ".concat(drawOptions.colorBorder , ";\n --cs: ").concat(drawOptions.colorSnake, ";\n --ce: ").concat(drawOptions.colorEmpty, ";\n ").concat(Object.entries(drawOptions.colorDots)
34541+ return "\n :root {\n --cb: ".concat(drawOptions.colorDotBorder , ";\n --cs: ").concat(drawOptions.colorSnake, ";\n --ce: ").concat(drawOptions.colorEmpty, ";\n ").concat(Object.entries(drawOptions.colorDots)
3444634542 .map(function (_a) {
3444734543 var i = _a[0], color = _a[1];
3444834544 return "--c".concat(i, ":").concat(color, ";");
3444934545 })
3445034546 .join(""), "\n }\n ") +
3445134547 (drawOptions.dark
34452- ? "\n @media (prefers-color-scheme: dark) {\n :root {\n --cb: ".concat(drawOptions.dark.colorBorder || drawOptions.colorBorder , ";\n --cs: ").concat(drawOptions.dark.colorSnake || drawOptions.colorSnake, ";\n --ce: ").concat(drawOptions.dark.colorEmpty, ";\n ").concat(Object.entries(drawOptions.dark.colorDots)
34548+ ? "\n @media (prefers-color-scheme: dark) {\n :root {\n --cb: ".concat(drawOptions.dark.colorDotBorder || drawOptions.colorDotBorder , ";\n --cs: ").concat(drawOptions.dark.colorSnake || drawOptions.colorSnake, ";\n --ce: ").concat(drawOptions.dark.colorEmpty, ";\n ").concat(Object.entries(drawOptions.dark.colorDots)
3445334549 .map(function (_a) {
3445434550 var i = _a[0], color = _a[1];
3445534551 return "--c".concat(i, ":").concat(color, ";");
0 commit comments