github-calendar.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374
  1. // Sources:
  2. // https://github.com/Bloggify/github-calendar
  3. // https://unpkg.com/github-calendar@2.3.2/dist/github-calendar.min.js
  4. "use strict";
  5. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
  6. return typeof obj;
  7. } : function (obj) {
  8. return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  9. };
  10. var _typeof2 = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) {
  11. return typeof e === "undefined" ? "undefined" : _typeof(e);
  12. } : function (e) {
  13. return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e === "undefined" ? "undefined" : _typeof(e);
  14. };
  15. !function (e) {
  16. "object" === ("undefined" == typeof exports ? "undefined" : _typeof2(exports)) && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).GitHubCalendar = e();
  17. }(function () {
  18. return function n(a, o, u) {
  19. function s(t, e) {
  20. if (!o[t]) {
  21. if (!a[t]) {
  22. var r = "function" == typeof require && require;
  23. if (!e && r) return r(t, !0);
  24. if (i) return i(t, !0);
  25. throw (e = new Error("Cannot find module '" + t + "'")).code = "MODULE_NOT_FOUND", e;
  26. }
  27. r = o[t] = {exports: {}}, a[t][0].call(r.exports, function (e) {
  28. return s(a[t][1][e] || e);
  29. }, r, r.exports, n, a, o, u);
  30. }
  31. return o[t].exports;
  32. }
  33. for (var i = "function" == typeof require && require, e = 0; e < u.length; e++) {
  34. s(u[e]);
  35. }
  36. return s;
  37. }({
  38. 1: [function (e, t, r) {
  39. var p = e("github-calendar-parser"),
  40. b = e("elly"),
  41. g = e("add-subtract-date"),
  42. m = e("formatoid"),
  43. h = "MMM D, YYYY",
  44. y = "MMMM D",
  45. _ = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
  46. function v(e) {
  47. return e + " " + (1 === e ? "day" : "days");
  48. }
  49. t.exports = function (d, e, f) {
  50. d = b(d), (f = f || {}).summary_text = f.summary_text || 'Summary of pull requests, issues opened, and commits made by <a href="https://github.com/' + e + '" target="blank">@' + e + "</a>", f.cache = 1e3 * (f.cache || 86400), !1 === f.global_stats && (d.style.minHeight = "175px");
  51. var r = {content: "gh_calendar_content." + e, expire_at: "gh_calendar_expire." + e};
  52. return f.proxy = f.proxy || function (e) {
  53. return fetch("https://api.bloggify.net/gh-calendar/?username=" + e).then(function (e) {
  54. return e.text();
  55. });
  56. }, f.getCalendar = f.getCalendar || function (e) {
  57. if (f.cache && Date.now() < +localStorage.getItem(r.expire_at)) {
  58. var t = localStorage.getItem(r.content);
  59. if (t) return Promise.resolve(t);
  60. }
  61. return f.proxy(e).then(function (e) {
  62. return f.cache && (localStorage.setItem(r.content, e), localStorage.setItem(r.expire_at, Date.now() + f.cache)), e;
  63. });
  64. }, function l() {
  65. return f.getCalendar(e).then(function (e) {
  66. var t,
  67. n,
  68. r = document.createElement("div"),
  69. e = (r.innerHTML = e, r.querySelector(".js-yearly-contributions")),
  70. a = (b(".position-relative h2", e).remove(), !0),
  71. o = !1,
  72. u = void 0;
  73. try {
  74. for (var s, i = r.querySelectorAll("a")[Symbol.iterator](); !(a = (s = i.next()).done); a = !0) {
  75. var c = s.value;
  76. c.textContent.includes("View your contributions in 3D, VR and IRL!") && c.parentElement.remove();
  77. }
  78. } catch (e) {
  79. o = !0, u = e;
  80. } finally {
  81. try {
  82. !a && i.return && i.return();
  83. } finally {
  84. if (o) throw u;
  85. }
  86. }
  87. e.querySelector("include-fragment") ? setTimeout(l, 500) : (!0 === f.responsive && (o = (r = e.querySelector("svg.js-calendar-graph-svg")).getAttribute("width"), u = r.getAttribute("height"), r.removeAttribute("height"), r.setAttribute("width", "100%"), r.setAttribute("viewBox", "0 0 " + o + " " + u)), !1 !== f.global_stats && (o = (r = p(b("svg", e).outerHTML)).current_streak ? m(r.current_streak_range[0], y) + " &ndash; " + m(r.current_streak_range[1], y) : r.last_contributed ? "Last contributed in " + m(r.last_contributed, y) + "." : "Rock - Hard Place", u = r.longest_streak ? m(r.longest_streak_range[0], y) + " &ndash; " + m(r.longest_streak_range[1], y) : r.last_contributed ? "Last contributed in " + m(r.last_contributed, y) + "." : "Rock - Hard Place", t = b("<div>", {
  88. class: "contrib-column contrib-column-first table-column",
  89. html: '<span class="text-muted">Contributions in the last year</span>\n <span class="contrib-number">' + r.last_year + ' total</span>\n <span class="text-muted">' + m(g.add(g.subtract(new Date(), 1, "year"), 1, "day"), h) + " &ndash; " + m(new Date(), h) + "</span>"
  90. }), u = b("<div>", {
  91. class: "contrib-column table-column",
  92. html: '<span class="text-muted">Longest streak</span>\n <span class="contrib-number">' + v(r.longest_streak) + '</span>\n <span class="text-muted">' + u + "</span>"
  93. }), r = b("<div>", {
  94. class: "contrib-column table-column",
  95. html: '<span class="text-muted">Current streak</span>\n <span class="contrib-number">' + v(r.current_streak) + '</span>\n <span class="text-muted">' + o + "</span>"
  96. }), e.appendChild(t), e.appendChild(u), e.appendChild(r)), d.innerHTML = e.innerHTML, !0 === f.tooltips && (o = d, (n = document.createElement("div")).classList.add("day-tooltip"), o.appendChild(n), o.querySelectorAll(".js-calendar-graph-svg rect.ContributionCalendar-day").forEach(function (e) {
  97. e.addEventListener("mouseenter", function (e) {
  98. var t = e.target.getAttribute("data-count"),
  99. r = ("0" === t ? t = "No contributions" : "1" === t ? t = "1 contribution" : t += " contributions", new Date(e.target.getAttribute("data-date"))),
  100. r = _[r.getUTCMonth()] + " " + r.getUTCDate() + ", " + r.getUTCFullYear(),
  101. t = (n.innerHTML = "<strong>" + t + "</strong> on " + r, n.classList.add("is-visible"), e.target.getBoundingClientRect()),
  102. r = t.left + window.pageXOffset - n.offsetWidth / 2 + t.width / 2,
  103. e = t.bottom + window.pageYOffset - n.offsetHeight - 2 * t.height;
  104. n.style.top = e + "px", n.style.left = r + "px";
  105. }), e.addEventListener("mouseleave", function () {
  106. n.classList.remove("is-visible");
  107. });
  108. })));
  109. }).catch(function (e) {
  110. return console.error(e);
  111. });
  112. }();
  113. };
  114. }, {"add-subtract-date": 2, elly: 4, formatoid: 6, "github-calendar-parser": 8}], 2: [function (e, t, r) {
  115. function n(a) {
  116. return function e(t, r, n) {
  117. switch (r *= a, n) {
  118. case "years":
  119. case "year":
  120. t.setFullYear(t.getFullYear() + r);
  121. break;
  122. case "months":
  123. case "month":
  124. t.setMonth(t.getMonth() + r);
  125. break;
  126. case "weeks":
  127. case "week":
  128. return e(t, 7 * r, "days");
  129. case "days":
  130. case "day":
  131. t.setDate(t.getDate() + r);
  132. break;
  133. case "hours":
  134. case "hour":
  135. t.setHours(t.getHours() + r);
  136. break;
  137. case "minutes":
  138. case "minute":
  139. t.setMinutes(t.getMinutes() + r);
  140. break;
  141. case "seconds":
  142. case "second":
  143. t.setSeconds(t.getSeconds() + r);
  144. break;
  145. case "milliseconds":
  146. case "millisecond":
  147. t.setMilliseconds(t.getMilliseconds() + r);
  148. break;
  149. default:
  150. throw new Error("Invalid range: " + n);
  151. }
  152. return t;
  153. };
  154. }
  155. t.exports = {add: n(1), subtract: n(-1)};
  156. }, {}], 3: [function (e, t, r) {
  157. t.exports.en = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], t.exports.en.abbr = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], t.exports.en.short = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], t.exports.fr = ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], t.exports.fr.abbr = ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"], t.exports.fr.short = ["di", "lu", "ma", "me", "je", "ve", "sa"], t.exports.es = ["domingo", "lunes", "martes", "miercoles", "jueves", "viernes", "sabado"], t.exports.es.abbr = ["dom", "lun", "mar", "mir", "jue", "vie", "sab"], t.exports.es.short = ["do", "lu", "ma", "mi", "ju", "vi", "sa"], t.exports.it = ["Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato"], t.exports.it.abbr = ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"], t.exports.it.short = ["D", "L", "Ma", "Me", "G", "V", "S"], t.exports = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], t.exports.abbr = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], t.exports.short = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
  158. }, {}], 4: [function (e, t, r) {
  159. var n = e("iterate-object"),
  160. a = e("sliced");
  161. function o(r, e) {
  162. return "string" == typeof r ? "<" === r.charAt(0) ? (r = document.createElement(r.slice(1, -1)), n(e || {}, function (e, t) {
  163. switch (t) {
  164. case "text":
  165. return void (r.textContent = e);
  166. case "html":
  167. return void (r.innerHTML = e);
  168. }
  169. r.setAttribute(t, e);
  170. }), r) : (e = e || document).querySelector(r) : r;
  171. }
  172. o.$$ = function (e, t) {
  173. return "string" == typeof e ? (t = t || document, a(t.querySelectorAll(e))) : [e];
  174. }, t.exports = o;
  175. }, {"iterate-object": 9, sliced: 13}], 5: [function (e, t, r) {
  176. t.exports = function (e, t, r) {
  177. r = r || "0";
  178. t = (t = t || 2) - (e = e.toString()).length;
  179. return (t <= 0 ? "" : r.repeat(t)) + e;
  180. };
  181. }, {}], 6: [function (e, t, r) {
  182. var n = e("months"),
  183. a = e("days"),
  184. o = e("fillo"),
  185. e = e("parse-it").Parser,
  186. u = {
  187. YYYY: function YYYY(e, t) {
  188. return t ? e.getUTCFullYear() : e.getFullYear();
  189. }, YY: function YY(e, t) {
  190. return u.YYYY(e, t) % 100;
  191. }, MMMM: function MMMM(e, t) {
  192. return t ? n[e.getUTCMonth()] : n[e.getMonth()];
  193. }, MMM: function MMM(e, t) {
  194. return t ? n.abbr[e.getUTCMonth()] : n.abbr[e.getMonth()];
  195. }, MM: function MM(e, t) {
  196. return o(t ? e.getUTCMonth() + 1 : e.getMonth() + 1);
  197. }, M: function M(e, t) {
  198. return t ? e.getUTCMonth() + 1 : e.getMonth() + 1;
  199. }, dddd: function dddd(e, t) {
  200. return a[u.d(e, t)];
  201. }, ddd: function ddd(e, t) {
  202. return a.abbr[u.d(e, t)];
  203. }, dd: function dd(e, t) {
  204. return a.short[u.d(e, t)];
  205. }, d: function d(e, t) {
  206. return t ? e.getUTCDay() : e.getDay();
  207. }, DD: function DD(e, t) {
  208. return o(u.D(e, t));
  209. }, D: function D(e, t) {
  210. return t ? e.getUTCDate() : e.getDate();
  211. }, A: function A(e, t) {
  212. return u.a(e, t).toUpperCase();
  213. }, a: function a(e, t) {
  214. return 12 <= u.H(e, t) ? "pm" : "am";
  215. }, hh: function hh(e, t) {
  216. return o(u.h(e, t));
  217. }, h: function h(e, t) {
  218. return u.H(e, t) % 12 || 12;
  219. }, HH: function HH(e, t) {
  220. return o(u.H(e, t));
  221. }, H: function H(e, t) {
  222. return t ? e.getUTCHours() : e.getHours();
  223. }, mm: function mm(e, t) {
  224. return o(u.m(e, t));
  225. }, m: function m(e, t) {
  226. return t ? e.getUTCMinutes() : e.getMinutes();
  227. }, ss: function ss(e, t) {
  228. return o(u.s(e, t));
  229. }, s: function s(e, t) {
  230. return t ? e.getUTCSeconds() : e.getSeconds();
  231. }, S: function S(e, t) {
  232. return Math.round(u.s(e, t) / 60 * 10);
  233. }, SS: function SS(e, t) {
  234. return o(u.s(e, t) / 60 * 100);
  235. }, SSS: function SSS(e, t) {
  236. return o(u.s(e, t) / 60 * 1e3, 3);
  237. }, Z: function Z(e) {
  238. e = -e.getTimezoneOffset();
  239. return (0 <= e ? "+" : "-") + o(parseInt(e / 60)) + ":" + o(e % 60);
  240. }, ZZ: function ZZ(e) {
  241. e = -e.getTimezoneOffset();
  242. return (0 <= e ? "+" : "-") + o(parseInt(e / 60)) + o(e % 60);
  243. }
  244. },
  245. s = new e(u);
  246. t.exports = function (e, t) {
  247. return s.run(t, [e, e._useUTC]);
  248. };
  249. }, {days: 3, fillo: 5, months: 10, "parse-it": 11}], 7: [function (e, t, r) {
  250. t.exports = ["#eee", "#d6e685", "#8cc665", "#44a340", "#1e6823"];
  251. }, {}], 8: [function (e, t, r) {
  252. var u = e("github-calendar-legend");
  253. t.exports = function (e) {
  254. function n() {
  255. a.current_streak > a.longest_streak && (a.longest_streak = a.current_streak, a.longest_streak_range[0] = a.current_streak_range[0], a.longest_streak_range[1] = a.current_streak_range[1]);
  256. }
  257. var a = {
  258. last_year: 0,
  259. longest_streak: -1,
  260. longest_streak_range: [],
  261. current_streak: 0,
  262. current_streak_range: [],
  263. longest_break: -1,
  264. longest_break_range: [],
  265. current_break: 0,
  266. current_break_range: [],
  267. weeks: [],
  268. days: [],
  269. last_contributed: null
  270. },
  271. o = [];
  272. return e.split("\n").slice(2).map(function (e) {
  273. return e.trim();
  274. }).forEach(function (e) {
  275. if (e.startsWith("<g transform")) return o.length && a.weeks.push(o) && (o = []);
  276. var t = e.match(/data-level="([0-9\-]+)"/i),
  277. r = e.match(/data-date="([0-9\-]+)"/),
  278. e = e.match(/(No|[0-9]+)( contribution)/),
  279. t = t && t[1],
  280. r = r && r[1],
  281. e = e ? ("No" === e[1] && (e[1] = 0), +e[1]) : 0;
  282. t && (r = {
  283. fill: u[t],
  284. date: new Date(r),
  285. count: e,
  286. level: t
  287. }, 0 === a.current_streak && (a.current_streak_range[0] = r.date), 0 === a.current_break && (a.current_break_range[0] = r.date), r.count ? (++a.current_streak, a.last_year += r.count, a.last_contributed = r.date, a.current_streak_range[1] = r.date, a.current_break > a.longest_break && (a.longest_break = a.current_break, a.longest_break_range[0] = a.current_break_range[0], a.longest_break_range[1] = a.current_break_range[1]), a.current_break = 0) : (n(), a.current_streak = 0, ++a.current_break, a.current_break_range[1] = r.date), o.push(r), a.days.push(r));
  288. }), n(), a;
  289. };
  290. }, {"github-calendar-legend": 7}], 9: [function (e, t, r) {
  291. var a = "function" == typeof Symbol && "symbol" === _typeof2(Symbol.iterator) ? function (e) {
  292. return void 0 === e ? "undefined" : _typeof2(e);
  293. } : function (e) {
  294. return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : void 0 === e ? "undefined" : _typeof2(e);
  295. };
  296. t.exports = function (e, t) {
  297. var r,
  298. n = 0;
  299. if (Array.isArray(e)) for (; n < e.length && !1 !== t(e[n], n, e); ++n) {
  300. } else if ("object" === (void 0 === e ? "undefined" : a(e)) && null !== e) for (r = Object.keys(e); n < r.length && !1 !== t(e[r[n]], r[n], e); ++n) {
  301. }
  302. };
  303. }, {}], 10: [function (e, t, r) {
  304. t.exports = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], t.exports.abbr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], t.exports.it = ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"], t.exports.abbr.it = ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"], t.exports.de = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], t.exports.abbr.de = ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"];
  305. }, {}], 11: [function (e, t, r) {
  306. var n = function n(e, t, r) {
  307. return t && a(e.prototype, t), r && a(e, r), e;
  308. };
  309. function a(e, t) {
  310. for (var r = 0; r < t.length; r++) {
  311. var n = t[r];
  312. n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);
  313. }
  314. }
  315. var o = e("regex-escape"),
  316. u = (n(s, [{
  317. key: "run", value: function value(e, t) {
  318. var r = "";
  319. t = t || [];
  320. do {
  321. var n = e.match(this.re),
  322. n = n && n[1],
  323. a = n || e.charAt(0);
  324. } while ((r += n ? n = "function" == typeof (n = this.obj[n]) ? n.apply(this, t) : n : a, e = e.substring(a.length)));
  325. return r;
  326. }
  327. }]), s);
  328. function s(e) {
  329. if (!(this instanceof s)) throw new TypeError("Cannot call a class as a function");
  330. this.obj = e || {}, this.re = new RegExp("^(" + Object.keys(e).map(o).join("|") + ")");
  331. }
  332. function i(e, t, r) {
  333. return new u(t).run(e, r);
  334. }
  335. i.Parser = u, t.exports = i;
  336. }, {"regex-escape": 12}], 12: [function (e, t, r) {
  337. function n(e) {
  338. return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
  339. }
  340. n.proto = function () {
  341. return RegExp.escape = n;
  342. }, t.exports = n;
  343. }, {}], 13: [function (e, t, r) {
  344. t.exports = function (e, t, r) {
  345. var n = [],
  346. a = e.length;
  347. if (0 !== a) {
  348. var o = t < 0 ? Math.max(0, t + a) : t || 0;
  349. for (void 0 !== r && (a = r < 0 ? r + a : r); a-- > o;) {
  350. n[a - o] = e[a];
  351. }
  352. }
  353. return n;
  354. };
  355. }, {}]
  356. }, {}, [1])(1);
  357. });