@git-stats-components/vue 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,636 +0,0 @@
1
- var nt = Object.defineProperty, rt = Object.defineProperties;
2
- var it = Object.getOwnPropertyDescriptors;
3
- var P = Object.getOwnPropertySymbols;
4
- var lt = Object.prototype.hasOwnProperty, ct = Object.prototype.propertyIsEnumerable;
5
- var V = (e, t, a) => t in e ? nt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a, R = (e, t) => {
6
- for (var a in t || (t = {}))
7
- lt.call(t, a) && V(e, a, t[a]);
8
- if (P)
9
- for (var a of P(t))
10
- ct.call(t, a) && V(e, a, t[a]);
11
- return e;
12
- }, Y = (e, t) => rt(e, it(t));
13
- var M = (e, t, a) => new Promise((i, l) => {
14
- var f = (u) => {
15
- try {
16
- o(a.next(u));
17
- } catch (b) {
18
- l(b);
19
- }
20
- }, d = (u) => {
21
- try {
22
- o(a.throw(u));
23
- } catch (b) {
24
- l(b);
25
- }
26
- }, o = (u) => u.done ? i(u.value) : Promise.resolve(u.value).then(f, d);
27
- o((a = a.apply(e, t)).next());
28
- });
29
- import { ref as S, computed as I, defineComponent as q, watch as z, createElementBlock as y, openBlock as h, createElementVNode as r, createCommentVNode as L, toDisplayString as D, normalizeClass as W, unref as k, renderSlot as j, createTextVNode as C, Fragment as O, renderList as A, normalizeStyle as dt, createStaticVNode as J } from "vue";
30
- function de(e) {
31
- return M(this, null, function* () {
32
- const t = yield fetch(e);
33
- if (!t.ok)
34
- throw new Error(`Failed to fetch git stats: ${t.statusText}`);
35
- return t.json();
36
- });
37
- }
38
- function ut() {
39
- const e = [], t = /* @__PURE__ */ new Date(), a = new Date(t);
40
- a.setDate(a.getDate() - a.getDay());
41
- const i = new Date(a);
42
- i.setDate(i.getDate() - 52 * 7);
43
- const l = new Date(i);
44
- for (let f = 0; f < 53; f++) {
45
- const d = {
46
- weekStart: new Date(l).toISOString().split("T")[0],
47
- contributionDays: []
48
- };
49
- for (let o = 0; o < 7; o++) {
50
- const u = l > t, b = o === 0 || o === 6;
51
- let m = 0;
52
- u || (b ? m = Math.random() < 0.3 ? Math.floor(Math.random() * 5) : 0 : m = Math.floor(Math.random() * 15)), d.contributionDays.push({
53
- date: new Date(l).toISOString().split("T")[0],
54
- contributionCount: m,
55
- weekday: o
56
- }), l.setDate(l.getDate() + 1);
57
- }
58
- e.push(d);
59
- }
60
- return e;
61
- }
62
- function G(e = {}) {
63
- const {
64
- username: t = "demo-user",
65
- platform: a = "github",
66
- projectCount: i = 30,
67
- commitCount: l = 2500
68
- } = e, f = ut();
69
- return f.reduce((d, o) => d + o.contributionDays.reduce(
70
- (u, b) => u + b.contributionCount,
71
- 0
72
- ), 0), {
73
- lastUpdated: (/* @__PURE__ */ new Date()).toISOString(),
74
- profiles: [
75
- {
76
- username: t,
77
- platform: a,
78
- stats: {
79
- projectCount: i,
80
- commitCount: l,
81
- contributions: f.map((d) => ({
82
- firstDay: d.weekStart,
83
- contributionDays: d.contributionDays
84
- }))
85
- }
86
- }
87
- ],
88
- totals: {
89
- projectCount: i,
90
- commitCount: l
91
- },
92
- metadata: {
93
- fetchedAt: Date.now(),
94
- source: "dummy_data",
95
- isDummy: !0
96
- }
97
- };
98
- }
99
- function ue() {
100
- const e = G({
101
- username: "demo-github",
102
- platform: "github",
103
- projectCount: 45,
104
- commitCount: 2847
105
- }), t = G({
106
- username: "demo-gitlab",
107
- platform: "gitlab",
108
- projectCount: 7,
109
- commitCount: 523
110
- });
111
- return {
112
- lastUpdated: (/* @__PURE__ */ new Date()).toISOString(),
113
- profiles: [e.profiles[0], t.profiles[0]],
114
- totals: {
115
- projectCount: 52,
116
- commitCount: 3370
117
- },
118
- metadata: {
119
- fetchedAt: Date.now(),
120
- source: "dummy_data",
121
- isDummy: !0
122
- }
123
- };
124
- }
125
- function fe(e = "dummy-git-stats.json") {
126
- const t = G(), a = JSON.stringify(t, null, " ");
127
- if (typeof window != "undefined") {
128
- const i = new Blob([a], { type: "application/json" }), l = URL.createObjectURL(i), f = document.createElement("a");
129
- f.href = l, f.download = e, f.click(), URL.revokeObjectURL(l);
130
- } else
131
- try {
132
- require("fs").writeFileSync(e, a), console.log(`✓ Dummy data saved to ${e}`);
133
- } catch (i) {
134
- console.error("Failed to save dummy data:", i);
135
- }
136
- }
137
- function ft(e) {
138
- return M(this, null, function* () {
139
- var f, d;
140
- const { dataUrl: t, cacheKey: a = "git_stats_cache", useStaleCache: i = !0 } = e;
141
- try {
142
- const o = yield fetch(t);
143
- if (o.ok) {
144
- const u = yield o.json();
145
- return typeof window != "undefined" && localStorage.setItem(
146
- a,
147
- JSON.stringify(Y(R({}, u), {
148
- cachedAt: Date.now()
149
- }))
150
- ), {
151
- data: u,
152
- error: null,
153
- source: "static",
154
- isDummy: ((f = u.metadata) == null ? void 0 : f.isDummy) === !0
155
- };
156
- }
157
- } catch (o) {
158
- console.warn("Failed to fetch from static file:", o);
159
- }
160
- if (i && typeof window != "undefined")
161
- try {
162
- const o = localStorage.getItem(a);
163
- if (o) {
164
- const u = JSON.parse(o);
165
- return {
166
- data: u,
167
- error: null,
168
- source: "cache",
169
- isDummy: ((d = u.metadata) == null ? void 0 : d.isDummy) === !0
170
- };
171
- }
172
- } catch (o) {
173
- console.warn("Failed to load from cache:", o);
174
- }
175
- return {
176
- data: yt(),
177
- error: null,
178
- source: "mock",
179
- isDummy: !1
180
- };
181
- });
182
- }
183
- function mt(e) {
184
- const t = new Date(e), a = /* @__PURE__ */ new Date(), i = Math.floor((a.getTime() - t.getTime()) / (1e3 * 60 * 60));
185
- if (i < 1) return "just now";
186
- if (i < 24) return `${i} hours ago`;
187
- const l = Math.floor(i / 24);
188
- return l === 1 ? "yesterday" : l < 7 ? `${l} days ago` : t.toLocaleDateString("en-US", {
189
- month: "short",
190
- day: "numeric",
191
- year: t.getFullYear() !== a.getFullYear() ? "numeric" : void 0
192
- });
193
- }
194
- function me(e) {
195
- return e === 0 ? 0 : e <= 3 ? 1 : e <= 6 ? 2 : e <= 9 ? 3 : 4;
196
- }
197
- function vt(e) {
198
- if (e.length === 0) return 0;
199
- const t = {};
200
- return e.forEach((a) => {
201
- var d;
202
- const i = a.endDate ? new Date(a.endDate) : /* @__PURE__ */ new Date(), l = new Date(a.startDate), f = (i.getTime() - l.getTime()) / (1e3 * 60 * 60 * 24 * 365.25);
203
- (d = a.skills) == null || d.forEach((o) => {
204
- t[o] || (t[o] = 0), t[o] += f;
205
- });
206
- }), Math.max(...Object.values(t), 0);
207
- }
208
- function yt() {
209
- return {
210
- lastUpdated: (/* @__PURE__ */ new Date()).toISOString(),
211
- profiles: [
212
- {
213
- username: "mockuser",
214
- platform: "github",
215
- stats: {
216
- projectCount: 30,
217
- commitCount: 2500,
218
- contributions: []
219
- }
220
- }
221
- ],
222
- totals: {
223
- projectCount: 30,
224
- commitCount: 2500
225
- },
226
- metadata: {
227
- source: "mock",
228
- fetchedAt: Date.now()
229
- }
230
- };
231
- }
232
- function K(e = {}) {
233
- const {
234
- dataUrl: t = "/data/git-stats.json",
235
- cacheTTL: a = 24 * 60 * 60 * 1e3,
236
- useStaleCache: i = !0,
237
- cacheKey: l = "git_stats_cache"
238
- } = e, f = S(!1), d = S(null), o = S(null), u = S(null), b = S(!1);
239
- function m() {
240
- return M(this, null, function* () {
241
- f.value = !0, d.value = null;
242
- try {
243
- const g = yield ft({
244
- dataUrl: t,
245
- cacheTTL: a,
246
- cacheKey: l,
247
- useStaleCache: i
248
- });
249
- return o.value = g.data, d.value = g.error, u.value = g.source, b.value = g.isDummy, g.data;
250
- } catch (g) {
251
- return d.value = g instanceof Error ? g : new Error("Failed to load data"), null;
252
- } finally {
253
- f.value = !1;
254
- }
255
- });
256
- }
257
- const c = I(() => {
258
- var g;
259
- return (g = o.value) != null && g.lastUpdated ? mt(o.value.lastUpdated) : "";
260
- }), _ = I(() => {
261
- if (b.value)
262
- return "⚠️ Using dummy data for testing";
263
- switch (u.value) {
264
- case "static":
265
- return "Real-time data";
266
- case "cache":
267
- return "Cached data";
268
- case "mock":
269
- return "Sample data";
270
- default:
271
- return "";
272
- }
273
- });
274
- return m(), {
275
- data: o,
276
- loading: f,
277
- error: d,
278
- dataSource: u,
279
- dataSourceText: _,
280
- lastUpdatedText: c,
281
- isDummy: b,
282
- loadData: m
283
- };
284
- }
285
- const ht = { class: "git-contribution-graph" }, pt = { class: "graph-header" }, gt = { class: "header-info" }, bt = { class: "contribution-count" }, _t = {
286
- key: 0,
287
- class: "header-actions"
288
- }, kt = {
289
- key: 0,
290
- class: "settings-dropdown"
291
- }, Dt = ["onClick"], St = {
292
- key: 0,
293
- class: "loading-state"
294
- }, wt = {
295
- key: 1,
296
- class: "graph-container"
297
- }, Ct = { class: "graph-content-wrapper" }, $t = { class: "months-row" }, Tt = { class: "months-container" }, jt = { class: "grid-container" }, Lt = { class: "contribution-grid" }, Ut = ["title", "onClick"], xt = { class: "graph-footer" }, Ft = {
298
- key: 0,
299
- class: "last-updated"
300
- }, It = /* @__PURE__ */ q({
301
- __name: "ContributionGraph",
302
- props: {
303
- dataUrl: { default: "/data/git-stats.json" },
304
- profileIndex: { default: 0 },
305
- colorScheme: { default: "green" },
306
- showSettings: { type: Boolean, default: !0 },
307
- cacheTTL: { default: 24 * 60 * 60 * 1e3 }
308
- },
309
- emits: ["day-click", "color-scheme-change"],
310
- setup(e, { emit: t }) {
311
- const a = e, i = t, { data: l, loading: f, dataSourceText: d, lastUpdatedText: o, isDummy: u } = K(
312
- {
313
- dataUrl: a.dataUrl,
314
- cacheTTL: a.cacheTTL
315
- }
316
- ), b = S(a.colorScheme), m = S(!1), c = ["green", "blue", "purple", "orange"], _ = S([]), g = S([]);
317
- z(
318
- l,
319
- (s) => {
320
- var n, v, p;
321
- if ((p = (v = (n = s == null ? void 0 : s.profiles) == null ? void 0 : n[a.profileIndex]) == null ? void 0 : v.stats) != null && p.contributions) {
322
- const w = s.profiles[a.profileIndex].stats.contributions;
323
- w && (_.value = B(w), Q());
324
- } else
325
- _.value = [];
326
- },
327
- { immediate: !0 }
328
- );
329
- const T = I(() => !_.value || _.value.length === 0 ? 0 : _.value.reduce((s, n) => !n.days || !Array.isArray(n.days) ? s : s + n.days.reduce((v, p) => v + (p.count || 0), 0), 0));
330
- function B(s) {
331
- if (!s || !Array.isArray(s))
332
- return $();
333
- const n = s.map((v) => ({
334
- weekStart: v.firstDay || "",
335
- days: v.contributionDays.map((p) => {
336
- var w;
337
- return {
338
- date: p.date || "",
339
- count: (w = p.contributionCount) != null ? w : 0,
340
- weekday: p.weekday || 0
341
- };
342
- })
343
- }));
344
- for (; n.length < 53; )
345
- n.push(U());
346
- return n;
347
- }
348
- function $() {
349
- const s = [];
350
- for (let n = 0; n < 53; n++)
351
- s.push(U());
352
- return s;
353
- }
354
- function U() {
355
- const s = [];
356
- for (let n = 0; n < 7; n++)
357
- s.push({ date: "", count: 0, weekday: n });
358
- return { weekStart: "", days: s };
359
- }
360
- function Q() {
361
- if (!_.value || _.value.length === 0) {
362
- g.value = [];
363
- return;
364
- }
365
- const s = [];
366
- let n = -1, v = -1;
367
- _.value.forEach((p, w) => {
368
- if (!p.days || p.days.length === 0) return;
369
- const E = p.days[0].date;
370
- if (!E) return;
371
- const N = E.split("-");
372
- if (N.length !== 3) return;
373
- const [x, F] = N.map(Number);
374
- if (!(isNaN(x) || isNaN(F)) && (F !== n || x !== v)) {
375
- const ot = new Date(x, F - 1, 1);
376
- s.push({
377
- week: w,
378
- month: F - 1,
379
- year: x,
380
- label: ot.toLocaleDateString("en-US", { month: "short" })
381
- }), n = F, v = x;
382
- }
383
- }), g.value = s;
384
- }
385
- function X(s) {
386
- return `level-${Z(s)} ${b.value}`;
387
- }
388
- function Z(s) {
389
- return s === 0 ? 0 : s <= 3 ? 1 : s <= 6 ? 2 : s <= 9 ? 3 : 4;
390
- }
391
- function tt(s) {
392
- if (!s.date) return "";
393
- const [n, v, p] = s.date.split("-").map(Number), E = new Date(n, v - 1, p).toLocaleDateString("en-US", {
394
- weekday: "short",
395
- year: "numeric",
396
- month: "short",
397
- day: "numeric"
398
- }), N = s.count === 1 ? "contribution" : "contributions";
399
- return `${s.count} ${N} on ${E}`;
400
- }
401
- function et(s) {
402
- i("day-click", { date: s.date, count: s.count });
403
- }
404
- function at() {
405
- m.value = !m.value;
406
- }
407
- function st(s) {
408
- b.value = s, m.value = !1, i("color-scheme-change", s);
409
- }
410
- return (s, n) => (h(), y("div", ht, [
411
- r("div", pt, [
412
- r("div", gt, [
413
- r("h5", bt, D(T.value.toLocaleString()) + " contributions in the last year ", 1),
414
- r("small", {
415
- class: W(["data-source-text", { "is-dummy": k(u) }])
416
- }, D(k(d)), 3)
417
- ]),
418
- e.showSettings ? (h(), y("div", _t, [
419
- r("button", {
420
- class: "settings-btn",
421
- type: "button",
422
- onClick: at
423
- }, [
424
- j(s.$slots, "settings-icon", {}, () => [
425
- n[0] || (n[0] = C("⚙️", -1))
426
- ], !0),
427
- n[1] || (n[1] = C(" Settings ", -1))
428
- ]),
429
- m.value ? (h(), y("div", kt, [
430
- (h(), y(O, null, A(c, (v) => r("button", {
431
- key: v,
432
- onClick: (p) => st(v),
433
- class: "settings-item"
434
- }, D(v) + " theme ", 9, Dt)), 64))
435
- ])) : L("", !0)
436
- ])) : L("", !0)
437
- ]),
438
- k(f) ? (h(), y("div", St, [...n[2] || (n[2] = [
439
- r("div", { class: "spinner" }, null, -1),
440
- r("span", null, "Loading contributions...", -1)
441
- ])])) : (h(), y("div", wt, [
442
- r("div", Ct, [
443
- r("div", $t, [
444
- n[3] || (n[3] = r("div", { class: "month-spacer" }, null, -1)),
445
- r("div", Tt, [
446
- (h(!0), y(O, null, A(g.value, (v) => (h(), y("div", {
447
- key: `${v.year}-${v.month}`,
448
- class: "month-label",
449
- style: dt({
450
- gridColumn: `${v.week + 1} / span 1`
451
- })
452
- }, D(v.label), 5))), 128))
453
- ])
454
- ]),
455
- r("div", jt, [
456
- n[4] || (n[4] = J('<div class="day-labels" data-v-f1ff100d><div class="day-label" data-v-f1ff100d>Mon</div><div class="day-label" data-v-f1ff100d></div><div class="day-label" data-v-f1ff100d>Wed</div><div class="day-label" data-v-f1ff100d></div><div class="day-label" data-v-f1ff100d>Fri</div><div class="day-label" data-v-f1ff100d></div><div class="day-label" data-v-f1ff100d></div></div>', 1)),
457
- r("div", Lt, [
458
- (h(!0), y(O, null, A(_.value, (v) => (h(), y("div", {
459
- key: v.weekStart,
460
- class: "contribution-week"
461
- }, [
462
- (h(!0), y(O, null, A(v.days, (p) => (h(), y("div", {
463
- key: p.date,
464
- class: W(["contribution-day", X(p.count)]),
465
- title: tt(p),
466
- onClick: (w) => et(p)
467
- }, null, 10, Ut))), 128))
468
- ]))), 128))
469
- ])
470
- ])
471
- ]),
472
- r("div", xt, [
473
- k(o) ? (h(), y("small", Ft, " Last updated: " + D(k(o)), 1)) : L("", !0),
474
- n[5] || (n[5] = J('<div class="legend" data-v-f1ff100d><small class="legend-label" data-v-f1ff100d>Less</small><div class="legend-squares" data-v-f1ff100d><div class="contribution-day level-0" data-v-f1ff100d></div><div class="contribution-day level-1" data-v-f1ff100d></div><div class="contribution-day level-2" data-v-f1ff100d></div><div class="contribution-day level-3" data-v-f1ff100d></div><div class="contribution-day level-4" data-v-f1ff100d></div></div><small class="legend-label" data-v-f1ff100d>More</small></div>', 1))
475
- ])
476
- ]))
477
- ]));
478
- }
479
- }), H = (e, t) => {
480
- const a = e.__vccOpts || e;
481
- for (const [i, l] of t)
482
- a[i] = l;
483
- return a;
484
- }, Et = /* @__PURE__ */ H(It, [["__scopeId", "data-v-f1ff100d"]]), Nt = { class: "git-stats-breakdown" }, Mt = { class: "stats-grid" }, Ot = { class: "stat-card" }, At = { class: "stat-icon" }, Bt = { class: "stat-content" }, Gt = { class: "stat-value" }, Pt = { class: "stat-card" }, Vt = { class: "stat-icon" }, Rt = { class: "stat-content" }, Yt = {
485
- key: 0,
486
- class: "stat-loading"
487
- }, Wt = {
488
- key: 1,
489
- class: "stat-value"
490
- }, Jt = { class: "stat-card" }, qt = { class: "stat-icon" }, zt = { class: "stat-content" }, Kt = {
491
- key: 0,
492
- class: "stat-loading"
493
- }, Ht = {
494
- key: 1,
495
- class: "stat-value"
496
- }, Qt = {
497
- key: 0,
498
- class: "stat-card"
499
- }, Xt = { class: "stat-icon" }, Zt = { class: "stat-content" }, te = {
500
- key: 0,
501
- class: "stat-loading"
502
- }, ee = {
503
- key: 1,
504
- class: "stat-value"
505
- }, ae = { class: "stat-label" }, se = { class: "stats-footer" }, oe = {
506
- key: 0,
507
- class: "data-source"
508
- }, ne = { key: 0 }, re = /* @__PURE__ */ q({
509
- __name: "StatsBreakdown",
510
- props: {
511
- dataUrl: { default: "/data/git-stats.json" },
512
- profileIndexes: { default: () => [] },
513
- experienceData: { default: () => [] },
514
- showCustomStat: { type: Boolean, default: !0 },
515
- customStatCalculator: { type: [Function, null], default: null },
516
- cacheTTL: { default: 24 * 60 * 60 * 1e3 }
517
- },
518
- setup(e) {
519
- const t = e, { data: a, loading: i, dataSourceText: l, lastUpdatedText: f } = K({
520
- dataUrl: t.dataUrl,
521
- cacheTTL: t.cacheTTL
522
- }), d = S(0), o = S(0);
523
- z(
524
- a,
525
- (m) => {
526
- var c, _;
527
- if (m)
528
- if (t.profileIndexes.length > 0) {
529
- let g = 0, T = 0;
530
- t.profileIndexes.forEach((B) => {
531
- var U;
532
- const $ = (U = m.profiles) == null ? void 0 : U[B];
533
- $ != null && $.stats && (g += $.stats.projectCount || 0, T += $.stats.commitCount || 0);
534
- }), d.value = g, o.value = T;
535
- } else
536
- d.value = ((c = m.totals) == null ? void 0 : c.projectCount) || 0, o.value = ((_ = m.totals) == null ? void 0 : _.commitCount) || 0;
537
- },
538
- { immediate: !0 }
539
- );
540
- const u = I(() => vt(t.experienceData).toFixed(1)), b = I(() => {
541
- if (t.customStatCalculator) {
542
- const T = {
543
- projects: d.value,
544
- commits: o.value,
545
- years: parseFloat(u.value)
546
- };
547
- return t.customStatCalculator(T);
548
- }
549
- return (d.value * 1.5 + o.value * 1.2 + parseFloat(u.value) * 1.5).toFixed(2);
550
- });
551
- return (m, c) => (h(), y("div", Nt, [
552
- r("div", Mt, [
553
- r("div", Ot, [
554
- r("div", At, [
555
- j(m.$slots, "icon-experience", {}, () => [
556
- c[0] || (c[0] = C("⏱️", -1))
557
- ], !0)
558
- ]),
559
- r("div", Bt, [
560
- r("div", Gt, D(u.value), 1),
561
- c[1] || (c[1] = r("div", { class: "stat-label" }, "Years Experience", -1))
562
- ])
563
- ]),
564
- r("div", Pt, [
565
- r("div", Vt, [
566
- j(m.$slots, "icon-projects", {}, () => [
567
- c[2] || (c[2] = C("📦", -1))
568
- ], !0)
569
- ]),
570
- r("div", Rt, [
571
- k(i) ? (h(), y("div", Yt, [...c[3] || (c[3] = [
572
- r("div", { class: "spinner" }, null, -1)
573
- ])])) : (h(), y("div", Wt, D(d.value), 1)),
574
- c[4] || (c[4] = r("div", { class: "stat-label" }, "Projects", -1))
575
- ])
576
- ]),
577
- r("div", Jt, [
578
- r("div", qt, [
579
- j(m.$slots, "icon-commits", {}, () => [
580
- c[5] || (c[5] = C("💻", -1))
581
- ], !0)
582
- ]),
583
- r("div", zt, [
584
- k(i) ? (h(), y("div", Kt, [...c[6] || (c[6] = [
585
- r("div", { class: "spinner" }, null, -1)
586
- ])])) : (h(), y("div", Ht, D(o.value), 1)),
587
- c[7] || (c[7] = r("div", { class: "stat-label" }, "Commits", -1))
588
- ])
589
- ]),
590
- e.showCustomStat ? (h(), y("div", Qt, [
591
- r("div", Xt, [
592
- j(m.$slots, "icon-custom", {}, () => [
593
- c[8] || (c[8] = C("☕", -1))
594
- ], !0)
595
- ]),
596
- r("div", Zt, [
597
- k(i) ? (h(), y("div", te, [...c[9] || (c[9] = [
598
- r("div", { class: "spinner" }, null, -1)
599
- ])])) : (h(), y("div", ee, D(b.value), 1)),
600
- r("div", ae, [
601
- j(m.$slots, "custom-stat-label", {}, () => [
602
- c[10] || (c[10] = C("Coffee Consumed", -1))
603
- ], !0)
604
- ])
605
- ])
606
- ])) : L("", !0)
607
- ]),
608
- r("div", se, [
609
- k(l) ? (h(), y("small", oe, [
610
- C(D(k(l)) + " ", 1),
611
- k(f) ? (h(), y("span", ne, " · " + D(k(f)), 1)) : L("", !0)
612
- ])) : L("", !0)
613
- ])
614
- ]));
615
- }
616
- }), ie = /* @__PURE__ */ H(re, [["__scopeId", "data-v-97689125"]]), ve = {
617
- install(e) {
618
- e.component("ContributionGraph", Et), e.component("StatsBreakdown", ie);
619
- }
620
- };
621
- export {
622
- Et as ContributionGraph,
623
- ie as StatsBreakdown,
624
- vt as calculateYearsExperience,
625
- ve as default,
626
- ft as fetchGitStats,
627
- de as fetchGitStatsAPI,
628
- mt as formatLastUpdated,
629
- ut as generateDummyContributions,
630
- G as generateDummyStats,
631
- ue as generateMultiProfileDummyStats,
632
- me as getContributionLevel,
633
- fe as saveDummyDataToFile,
634
- K as useGitStats
635
- };
636
- //# sourceMappingURL=vue-git-stats.es.js.map