(() => {
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var require_dayjs_min = __commonJS({
"node_modules/dayjs/dayjs.min.js"(exports, module) {
!(function(t, e) {
"object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).dayjs = e();
})(exports, (function() {
"use strict";
var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s = "minute", u = "hour", a = "day", o = "week", c = "month", f = "quarter", h = "year", d = "date", l = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(t2) {
var e2 = ["th", "st", "nd", "rd"], n2 = t2 % 100;
return "[" + t2 + (e2[(n2 - 20) % 10] || e2[n2] || e2[0]) + "]";
} }, m = function(t2, e2, n2) {
var r2 = String(t2);
return !r2 || r2.length >= e2 ? t2 : "" + Array(e2 + 1 - r2.length).join(n2) + t2;
}, v = { s: m, z: function(t2) {
var e2 = -t2.utcOffset(), n2 = Math.abs(e2), r2 = Math.floor(n2 / 60), i2 = n2 % 60;
return (e2 <= 0 ? "+" : "-") + m(r2, 2, "0") + ":" + m(i2, 2, "0");
}, m: function t2(e2, n2) {
if (e2.date() < n2.date()) return -t2(n2, e2);
var r2 = 12 * (n2.year() - e2.year()) + (n2.month() - e2.month()), i2 = e2.clone().add(r2, c), s2 = n2 - i2 < 0, u2 = e2.clone().add(r2 + (s2 ? -1 : 1), c);
return +(-(r2 + (n2 - i2) / (s2 ? i2 - u2 : u2 - i2)) || 0);
}, a: function(t2) {
return t2 < 0 ? Math.ceil(t2) || 0 : Math.floor(t2);
}, p: function(t2) {
return { M: c, y: h, w: o, d: a, D: d, h: u, m: s, s: i, ms: r, Q: f }[t2] || String(t2 || "").toLowerCase().replace(/s$/, "");
}, u: function(t2) {
return void 0 === t2;
} }, g = "en", D = {};
D[g] = M;
var p = "$isDayjsObject", S = function(t2) {
return t2 instanceof _ || !(!t2 || !t2[p]);
}, w = function t2(e2, n2, r2) {
var i2;
if (!e2) return g;
if ("string" == typeof e2) {
var s2 = e2.toLowerCase();
D[s2] && (i2 = s2), n2 && (D[s2] = n2, i2 = s2);
var u2 = e2.split("-");
if (!i2 && u2.length > 1) return t2(u2[0]);
} else {
var a2 = e2.name;
D[a2] = e2, i2 = a2;
}
return !r2 && i2 && (g = i2), i2 || !r2 && g;
}, O = function(t2, e2) {
if (S(t2)) return t2.clone();
var n2 = "object" == typeof e2 ? e2 : {};
return n2.date = t2, n2.args = arguments, new _(n2);
}, b = v;
b.l = w, b.i = S, b.w = function(t2, e2) {
return O(t2, { locale: e2.$L, utc: e2.$u, x: e2.$x, $offset: e2.$offset });
};
var _ = (function() {
function M2(t2) {
this.$L = w(t2.locale, null, true), this.parse(t2), this.$x = this.$x || t2.x || {}, this[p] = true;
}
var m2 = M2.prototype;
return m2.parse = function(t2) {
this.$d = (function(t3) {
var e2 = t3.date, n2 = t3.utc;
if (null === e2) return new Date(NaN);
if (b.u(e2)) return new Date();
if (e2 instanceof Date) return new Date(e2);
if ("string" == typeof e2 && !/Z$/i.test(e2)) {
var r2 = e2.match($);
if (r2) {
var i2 = r2[2] - 1 || 0, s2 = (r2[7] || "0").substring(0, 3);
return n2 ? new Date(Date.UTC(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2)) : new Date(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2);
}
}
return new Date(e2);
})(t2), this.init();
}, m2.init = function() {
var t2 = this.$d;
this.$y = t2.getFullYear(), this.$M = t2.getMonth(), this.$D = t2.getDate(), this.$W = t2.getDay(), this.$H = t2.getHours(), this.$m = t2.getMinutes(), this.$s = t2.getSeconds(), this.$ms = t2.getMilliseconds();
}, m2.$utils = function() {
return b;
}, m2.isValid = function() {
return !(this.$d.toString() === l);
}, m2.isSame = function(t2, e2) {
var n2 = O(t2);
return this.startOf(e2) <= n2 && n2 <= this.endOf(e2);
}, m2.isAfter = function(t2, e2) {
return O(t2) < this.startOf(e2);
}, m2.isBefore = function(t2, e2) {
return this.endOf(e2) < O(t2);
}, m2.$g = function(t2, e2, n2) {
return b.u(t2) ? this[e2] : this.set(n2, t2);
}, m2.unix = function() {
return Math.floor(this.valueOf() / 1e3);
}, m2.valueOf = function() {
return this.$d.getTime();
}, m2.startOf = function(t2, e2) {
var n2 = this, r2 = !!b.u(e2) || e2, f2 = b.p(t2), l2 = function(t3, e3) {
var i2 = b.w(n2.$u ? Date.UTC(n2.$y, e3, t3) : new Date(n2.$y, e3, t3), n2);
return r2 ? i2 : i2.endOf(a);
}, $2 = function(t3, e3) {
return b.w(n2.toDate()[t3].apply(n2.toDate("s"), (r2 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e3)), n2);
}, y2 = this.$W, M3 = this.$M, m3 = this.$D, v2 = "set" + (this.$u ? "UTC" : "");
switch (f2) {
case h:
return r2 ? l2(1, 0) : l2(31, 11);
case c:
return r2 ? l2(1, M3) : l2(0, M3 + 1);
case o:
var g2 = this.$locale().weekStart || 0, D2 = (y2 < g2 ? y2 + 7 : y2) - g2;
return l2(r2 ? m3 - D2 : m3 + (6 - D2), M3);
case a:
case d:
return $2(v2 + "Hours", 0);
case u:
return $2(v2 + "Minutes", 1);
case s:
return $2(v2 + "Seconds", 2);
case i:
return $2(v2 + "Milliseconds", 3);
default:
return this.clone();
}
}, m2.endOf = function(t2) {
return this.startOf(t2, false);
}, m2.$set = function(t2, e2) {
var n2, o2 = b.p(t2), f2 = "set" + (this.$u ? "UTC" : ""), l2 = (n2 = {}, n2[a] = f2 + "Date", n2[d] = f2 + "Date", n2[c] = f2 + "Month", n2[h] = f2 + "FullYear", n2[u] = f2 + "Hours", n2[s] = f2 + "Minutes", n2[i] = f2 + "Seconds", n2[r] = f2 + "Milliseconds", n2)[o2], $2 = o2 === a ? this.$D + (e2 - this.$W) : e2;
if (o2 === c || o2 === h) {
var y2 = this.clone().set(d, 1);
y2.$d[l2]($2), y2.init(), this.$d = y2.set(d, Math.min(this.$D, y2.daysInMonth())).$d;
} else l2 && this.$d[l2]($2);
return this.init(), this;
}, m2.set = function(t2, e2) {
return this.clone().$set(t2, e2);
}, m2.get = function(t2) {
return this[b.p(t2)]();
}, m2.add = function(r2, f2) {
var d2, l2 = this;
r2 = Number(r2);
var $2 = b.p(f2), y2 = function(t2) {
var e2 = O(l2);
return b.w(e2.date(e2.date() + Math.round(t2 * r2)), l2);
};
if ($2 === c) return this.set(c, this.$M + r2);
if ($2 === h) return this.set(h, this.$y + r2);
if ($2 === a) return y2(1);
if ($2 === o) return y2(7);
var M3 = (d2 = {}, d2[s] = e, d2[u] = n, d2[i] = t, d2)[$2] || 1, m3 = this.$d.getTime() + r2 * M3;
return b.w(m3, this);
}, m2.subtract = function(t2, e2) {
return this.add(-1 * t2, e2);
}, m2.format = function(t2) {
var e2 = this, n2 = this.$locale();
if (!this.isValid()) return n2.invalidDate || l;
var r2 = t2 || "YYYY-MM-DDTHH:mm:ssZ", i2 = b.z(this), s2 = this.$H, u2 = this.$m, a2 = this.$M, o2 = n2.weekdays, c2 = n2.months, f2 = n2.meridiem, h2 = function(t3, n3, i3, s3) {
return t3 && (t3[n3] || t3(e2, r2)) || i3[n3].slice(0, s3);
}, d2 = function(t3) {
return b.s(s2 % 12 || 12, t3, "0");
}, $2 = f2 || function(t3, e3, n3) {
var r3 = t3 < 12 ? "AM" : "PM";
return n3 ? r3.toLowerCase() : r3;
};
return r2.replace(y, (function(t3, r3) {
return r3 || (function(t4) {
switch (t4) {
case "YY":
return String(e2.$y).slice(-2);
case "YYYY":
return b.s(e2.$y, 4, "0");
case "M":
return a2 + 1;
case "MM":
return b.s(a2 + 1, 2, "0");
case "MMM":
return h2(n2.monthsShort, a2, c2, 3);
case "MMMM":
return h2(c2, a2);
case "D":
return e2.$D;
case "DD":
return b.s(e2.$D, 2, "0");
case "d":
return String(e2.$W);
case "dd":
return h2(n2.weekdaysMin, e2.$W, o2, 2);
case "ddd":
return h2(n2.weekdaysShort, e2.$W, o2, 3);
case "dddd":
return o2[e2.$W];
case "H":
return String(s2);
case "HH":
return b.s(s2, 2, "0");
case "h":
return d2(1);
case "hh":
return d2(2);
case "a":
return $2(s2, u2, true);
case "A":
return $2(s2, u2, false);
case "m":
return String(u2);
case "mm":
return b.s(u2, 2, "0");
case "s":
return String(e2.$s);
case "ss":
return b.s(e2.$s, 2, "0");
case "SSS":
return b.s(e2.$ms, 3, "0");
case "Z":
return i2;
}
return null;
})(t3) || i2.replace(":", "");
}));
}, m2.utcOffset = function() {
return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
}, m2.diff = function(r2, d2, l2) {
var $2, y2 = this, M3 = b.p(d2), m3 = O(r2), v2 = (m3.utcOffset() - this.utcOffset()) * e, g2 = this - m3, D2 = function() {
return b.m(y2, m3);
};
switch (M3) {
case h:
$2 = D2() / 12;
break;
case c:
$2 = D2();
break;
case f:
$2 = D2() / 3;
break;
case o:
$2 = (g2 - v2) / 6048e5;
break;
case a:
$2 = (g2 - v2) / 864e5;
break;
case u:
$2 = g2 / n;
break;
case s:
$2 = g2 / e;
break;
case i:
$2 = g2 / t;
break;
default:
$2 = g2;
}
return l2 ? $2 : b.a($2);
}, m2.daysInMonth = function() {
return this.endOf(c).$D;
}, m2.$locale = function() {
return D[this.$L];
}, m2.locale = function(t2, e2) {
if (!t2) return this.$L;
var n2 = this.clone(), r2 = w(t2, e2, true);
return r2 && (n2.$L = r2), n2;
}, m2.clone = function() {
return b.w(this.$d, this);
}, m2.toDate = function() {
return new Date(this.valueOf());
}, m2.toJSON = function() {
return this.isValid() ? this.toISOString() : null;
}, m2.toISOString = function() {
return this.$d.toISOString();
}, m2.toString = function() {
return this.$d.toUTCString();
}, M2;
})(), k = _.prototype;
return O.prototype = k, [["$ms", r], ["$s", i], ["$m", s], ["$H", u], ["$W", a], ["$M", c], ["$y", h], ["$D", d]].forEach((function(t2) {
k[t2[1]] = function(e2) {
return this.$g(e2, t2[0], t2[1]);
};
})), O.extend = function(t2, e2) {
return t2.$i || (t2(e2, _, O), t2.$i = true), O;
}, O.locale = w, O.isDayjs = S, O.unix = function(t2) {
return O(1e3 * t2);
}, O.en = D[g], O.Ls = D, O.p = {}, O;
}));
}
});
var require_advancedFormat = __commonJS({
"node_modules/dayjs/plugin/advancedFormat.js"(exports, module) {
!(function(e, t) {
"object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = "undefined" != typeof globalThis ? globalThis : e || self).dayjs_plugin_advancedFormat = t();
})(exports, (function() {
"use strict";
return function(e, t) {
var r = t.prototype, n = r.format;
r.format = function(e2) {
var t2 = this, r2 = this.$locale();
if (!this.isValid()) return n.bind(this)(e2);
var s = this.$utils(), a = (e2 || "YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, (function(e3) {
switch (e3) {
case "Q":
return Math.ceil((t2.$M + 1) / 3);
case "Do":
return r2.ordinal(t2.$D);
case "gggg":
return t2.weekYear();
case "GGGG":
return t2.isoWeekYear();
case "wo":
return r2.ordinal(t2.week(), "W");
case "w":
case "ww":
return s.s(t2.week(), "w" === e3 ? 1 : 2, "0");
case "W":
case "WW":
return s.s(t2.isoWeek(), "W" === e3 ? 1 : 2, "0");
case "k":
case "kk":
return s.s(String(0 === t2.$H ? 24 : t2.$H), "k" === e3 ? 1 : 2, "0");
case "X":
return Math.floor(t2.$d.getTime() / 1e3);
case "x":
return t2.$d.getTime();
case "z":
return "[" + t2.offsetName() + "]";
case "zzz":
return "[" + t2.offsetName("long") + "]";
default:
return e3;
}
}));
return n.bind(this)(a);
};
};
}));
}
});
var require_weekOfYear = __commonJS({
"node_modules/dayjs/plugin/weekOfYear.js"(exports, module) {
!(function(e, t) {
"object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = "undefined" != typeof globalThis ? globalThis : e || self).dayjs_plugin_weekOfYear = t();
})(exports, (function() {
"use strict";
var e = "week", t = "year";
return function(i, n, r) {
var f = n.prototype;
f.week = function(i2) {
if (void 0 === i2 && (i2 = null), null !== i2) return this.add(7 * (i2 - this.week()), "day");
var n2 = this.$locale().yearStart || 1;
if (11 === this.month() && this.date() > 25) {
var f2 = r(this).startOf(t).add(1, t).date(n2), s = r(this).endOf(e);
if (f2.isBefore(s)) return 1;
}
var a = r(this).startOf(t).date(n2).startOf(e).subtract(1, "millisecond"), o = this.diff(a, e, true);
return o < 0 ? r(this).startOf("week").week() : Math.ceil(o);
}, f.weeks = function(e2) {
return void 0 === e2 && (e2 = null), this.week(e2);
};
};
}));
}
});
var require_dayOfYear = __commonJS({
"node_modules/dayjs/plugin/dayOfYear.js"(exports, module) {
!(function(e, t) {
"object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = "undefined" != typeof globalThis ? globalThis : e || self).dayjs_plugin_dayOfYear = t();
})(exports, (function() {
"use strict";
return function(e, t, n) {
t.prototype.dayOfYear = function(e2) {
var t2 = Math.round((n(this).startOf("day") - n(this).startOf("year")) / 864e5) + 1;
return null == e2 ? t2 : this.add(e2 - t2, "day");
};
};
}));
}
});
var require_isoWeek = __commonJS({
"node_modules/dayjs/plugin/isoWeek.js"(exports, module) {
!(function(e, t) {
"object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = "undefined" != typeof globalThis ? globalThis : e || self).dayjs_plugin_isoWeek = t();
})(exports, (function() {
"use strict";
var e = "day";
return function(t, i, s) {
var a = function(t2) {
return t2.add(4 - t2.isoWeekday(), e);
}, d = i.prototype;
d.isoWeekYear = function() {
return a(this).year();
}, d.isoWeek = function(t2) {
if (!this.$utils().u(t2)) return this.add(7 * (t2 - this.isoWeek()), e);
var i2, d2, n2, o, r = a(this), u = (i2 = this.isoWeekYear(), d2 = this.$u, n2 = (d2 ? s.utc : s)().year(i2).startOf("year"), o = 4 - n2.isoWeekday(), n2.isoWeekday() > 4 && (o += 7), n2.add(o, e));
return r.diff(u, "week") + 1;
}, d.isoWeekday = function(e2) {
return this.$utils().u(e2) ? this.day() || 7 : this.day(this.day() % 7 ? e2 : e2 - 7);
};
var n = d.startOf;
d.startOf = function(e2, t2) {
var i2 = this.$utils(), s2 = !!i2.u(t2) || t2;
return "isoweek" === i2.p(e2) ? s2 ? this.date(this.date() - (this.isoWeekday() - 1)).startOf("day") : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf("day") : n.bind(this)(e2, t2);
};
};
}));
}
});
var require_utc = __commonJS({
"node_modules/dayjs/plugin/utc.js"(exports, module) {
!(function(t, i) {
"object" == typeof exports && "undefined" != typeof module ? module.exports = i() : "function" == typeof define && define.amd ? define(i) : (t = "undefined" != typeof globalThis ? globalThis : t || self).dayjs_plugin_utc = i();
})(exports, (function() {
"use strict";
var t = "minute", i = /[+-]\d\d(?::?\d\d)?/g, e = /([+-]|\d\d)/g;
return function(s, f, n) {
var u = f.prototype;
n.utc = function(t2) {
var i2 = { date: t2, utc: true, args: arguments };
return new f(i2);
}, u.utc = function(i2) {
var e2 = n(this.toDate(), { locale: this.$L, utc: true });
return i2 ? e2.add(this.utcOffset(), t) : e2;
}, u.local = function() {
return n(this.toDate(), { locale: this.$L, utc: false });
};
var r = u.parse;
u.parse = function(t2) {
t2.utc && (this.$u = true), this.$utils().u(t2.$offset) || (this.$offset = t2.$offset), r.call(this, t2);
};
var o = u.init;
u.init = function() {
if (this.$u) {
var t2 = this.$d;
this.$y = t2.getUTCFullYear(), this.$M = t2.getUTCMonth(), this.$D = t2.getUTCDate(), this.$W = t2.getUTCDay(), this.$H = t2.getUTCHours(), this.$m = t2.getUTCMinutes(), this.$s = t2.getUTCSeconds(), this.$ms = t2.getUTCMilliseconds();
} else o.call(this);
};
var a = u.utcOffset;
u.utcOffset = function(s2, f2) {
var n2 = this.$utils().u;
if (n2(s2)) return this.$u ? 0 : n2(this.$offset) ? a.call(this) : this.$offset;
if ("string" == typeof s2 && (s2 = (function(t2) {
void 0 === t2 && (t2 = "");
var s3 = t2.match(i);
if (!s3) return null;
var f3 = ("" + s3[0]).match(e) || ["-", 0, 0], n3 = f3[0], u3 = 60 * +f3[1] + +f3[2];
return 0 === u3 ? 0 : "+" === n3 ? u3 : -u3;
})(s2), null === s2)) return this;
var u2 = Math.abs(s2) <= 16 ? 60 * s2 : s2;
if (0 === u2) return this.utc(f2);
var r2 = this.clone();
if (f2) return r2.$offset = u2, r2.$u = false, r2;
var o2 = this.$u ? this.toDate().getTimezoneOffset() : -1 * this.utcOffset();
return (r2 = this.local().add(u2 + o2, t)).$offset = u2, r2.$x.$localOffset = o2, r2;
};
var h = u.format;
u.format = function(t2) {
var i2 = t2 || (this.$u ? "YYYY-MM-DDTHH:mm:ss[Z]" : "");
return h.call(this, i2);
}, u.valueOf = function() {
var t2 = this.$utils().u(this.$offset) ? 0 : this.$offset + (this.$x.$localOffset || this.$d.getTimezoneOffset());
return this.$d.valueOf() - 6e4 * t2;
}, u.isUTC = function() {
return !!this.$u;
}, u.toISOString = function() {
return this.toDate().toISOString();
}, u.toString = function() {
return this.toDate().toUTCString();
};
var l = u.toDate;
u.toDate = function(t2) {
return "s" === t2 && this.$offset ? n(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate() : l.call(this);
};
var c = u.diff;
u.diff = function(t2, i2, e2) {
if (t2 && this.$u === t2.$u) return c.call(this, t2, i2, e2);
var s2 = this.local(), f2 = n(t2).local();
return c.call(s2, f2, i2, e2);
};
};
}));
}
});
var import_dayjs = __toESM(require_dayjs_min(), 1);
var import_advancedFormat = __toESM(require_advancedFormat(), 1);
var import_weekOfYear = __toESM(require_weekOfYear(), 1);
var import_dayOfYear = __toESM(require_dayOfYear(), 1);
var import_isoWeek = __toESM(require_isoWeek(), 1);
var import_utc = __toESM(require_utc(), 1);
import_dayjs.default.extend(import_advancedFormat.default);
import_dayjs.default.extend(import_weekOfYear.default);
import_dayjs.default.extend(import_dayOfYear.default);
import_dayjs.default.extend(import_isoWeek.default);
import_dayjs.default.extend(import_utc.default);
var getOrdinal = (n) => {
const suffixes = ["th", "st", "nd", "rd"], v = n % 100;
return n + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);
};
var getDoyTokens = (doy, doyPadded) => ({
"DDDD": doyPadded,
"DDDo": getOrdinal(doy),
"DDD": String(doy)
});
function digital(app) {
const s = app.settings;
const formatStr = String(s["timestamp digital - format"] || "YYYY-MM-DD HH:mm:ss");
const timezone = String(s["timestamp digital - timezone"] || "local").trim().toUpperCase();
const now = timezone === "UTC" ? import_dayjs.default.utc() : (0, import_dayjs.default)();
if (formatStr.toUpperCase() === "ISO") {
return now.format();
}
const startOfYear = now.startOf("year");
const doy = now.diff(startOfYear, "day") + 1;
const doyPadded = String(doy).padStart(3, "0");
const tokens = getDoyTokens(doy, doyPadded);
const doyRegex = /\[([^\]]+)\]|DDDD|DDDo|DDD/g;
const processedFormat = formatStr.replace(doyRegex, (match, escaped) => {
if (escaped) return `[${escaped}]`;
return `[${tokens[match]}]`;
});
return now.format(processedFormat);
}
function roman(app) {
const d = new Date();
const r = (n) => {
if (n === 0) return "0";
if (!+n) return "";
const k = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM", "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC", "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"], g = String(+n).split("");
let s = "", i = 3;
while (i--) {
let v = g.pop();
if (v) s = (k[+v + i * 10] || "") + s;
}
return "M".repeat(+g.join("") || 0) + s;
};
return `${r(d.getDate())}/${r(d.getMonth() + 1)}/${r(d.getFullYear())}, ${r(d.getHours())}:${r(d.getMinutes())}:${r(d.getSeconds())}`;
}
async function analog(app) {
if (!app.context.noteUUID) return "Error: Open a note to insert image.";
try {
const theme = app.settings["timestamp analog - theme"] || "dark";
const now = new Date();
const h = now.getHours(), m = now.getMinutes(), s = now.getSeconds();
const hAng = h % 12 * 30 + m * 0.5, mAng = m * 6 + s * 0.1, sAng = s * 6;
const themes = {
dark: { bg: "#1c1c1c", stroke: "#333", hands: "#ccc", sec: "#fff" },
light: { bg: "#f9f9f9", stroke: "#ccc", hands: "#333", sec: "#333" },
neon: { bg: "#000", stroke: "#0f0", hands: "#f0f", sec: "#ff0" }
};
const t = themes[theme] || themes.dark;
const size = Math.max(50, Math.min(500, Number(app.settings["timestamp analog - size"]) || 100));
const ticks = Array.from({ length: 12 }, (_, i) => {
const angle = (i * 30 - 90) * Math.PI / 180;
const x1 = 50 + 42 * Math.cos(angle);
const y1 = 50 + 42 * Math.sin(angle);
const x2 = 50 + 46 * Math.cos(angle);
const y2 = 50 + 46 * Math.sin(angle);
return `<line x1="${x1}" y1="${y1}" x2="${x2}" y2="${y2}" stroke="${t.stroke}" stroke-width="2"/>`;
}).join("");
const svg = `<svg width="${size}" height="${size}" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="48" stroke="${t.stroke}" stroke-width="4" fill="${t.bg}"/>` + ticks + `<line x1="50" y1="50" x2="50" y2="30" stroke="${t.hands}" stroke-width="5" transform="rotate(${hAng}, 50, 50)"/><line x1="50" y1="50" x2="50" y2="20" stroke="${t.hands}" stroke-width="3" transform="rotate(${mAng}, 50, 50)"/><line x1="50" y1="50" x2="50" y2="10" stroke="${t.sec}" stroke-width="1" transform="rotate(${sAng}, 50, 50)"/><circle cx="50" cy="50" r="3" fill="${t.sec}"/></svg>`;
const blob = new Blob([svg], { type: "image/svg+xml;charset=utf-8" });
const dataURL = await new Promise((r) => {
const fr = new FileReader();
fr.onload = (e) => r(e.target.result);
fr.readAsDataURL(blob);
});
const pngURL = await new Promise((resolve, reject) => {
const img = new Image();
img.onload = () => {
const c = document.createElement("canvas");
c.width = size;
c.height = size;
c.getContext("2d").drawImage(img, 0, 0, size, size);
resolve(c.toDataURL("image/png"));
};
img.onerror = reject;
img.src = dataURL;
});
const url = await app.attachNoteMedia({ uuid: app.context.noteUUID }, pngURL);
if (url) {
const encoded = window.encodeURIComponent(window.btoa(unescape(encodeURIComponent(svg))));
const post = app.settings["timestamp analog - suffix"] || "";
const markdown = `${post ? " " + post : ""}.`;
await app.context.replaceSelection(markdown);
} else {
app.alert("Upload Failed");
}
} catch (e) {
app.alert("Error: " + e.message);
}
return "";
}
function text(app) {
const d = new Date(), h = d.getHours(), m = d.getMinutes();
const H = ["Twelve", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven"];
const M = ["", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Quarter", "Sixteen", "Seventeen", "Eighteen", "Nineteen"];
const T = ["", "", "Twenty", "Thirty", "Forty", "Fifty"];
const getM = (min) => {
if (min < 20) return M[min];
return T[Math.floor(min / 10)] + (min % 10 ? "-" + M[min % 10] : "");
};
let s;
if (m === 0) s = `It's ${H[h % 12]} o'clock`;
else if (m === 30) s = `It's half past ${H[h % 12]}`;
else if (m < 30) s = `It's ${getM(m)} past ${H[h % 12]}`;
else s = `It's ${getM(60 - m)} to ${H[(h + 1) % 12]}`;
const pre = app.settings["timestamp text - prefix"] || "";
const post = app.settings["timestamp text - suffix"] || "";
return (pre ? pre + " " : "") + s + (post ? ". " + post : ".");
}
function unix(app) {
return Math.floor(Date.now() / 1e3).toString();
}
function unixToDateTime(app, text2) {
const ts = parseInt(text2.trim(), 10);
return isNaN(ts) ? "Invalid Unix timestamp" : new Date(ts * 1e3).toLocaleString();
}
var timestamp_default = {
insertText: {
"Digital": digital,
"Roman": roman,
"Analog": analog,
"Text": text,
"Unix": unix
},
replaceText: {
"UnixToDateTime": unixToDateTime
}
};
return timestamp_default;
})()