UNPKG

@vue-js-cron/light

Version:
1 lines 114 kB
{"version":3,"file":"light.umd.cjs","sources":["../../core/dist/core.js","../src/components/select.vue","../src/components/cron-light.vue","../src/index.ts"],"sourcesContent":["var ue = Object.defineProperty;\nvar oe = (a, e, t) => e in a ? ue(a, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : a[e] = t;\nvar d = (a, e, t) => (oe(a, typeof e != \"symbol\" ? e + \"\" : e, t), t);\nimport { ref as k, watch as g, defineComponent as ne, computed as re } from \"vue\";\nvar T = /* @__PURE__ */ ((a) => (a.Any = \"any\", a.Value = \"value\", a.Range = \"range\", a.Step = \"step\", a.RangeStep = \"rangeStep\", a.Combined = \"combined\", a.NoSpecific = \"noSpecific\", a))(T || {}), j = /* @__PURE__ */ ((a) => (a.Prefix = \"prefix\", a.Suffix = \"suffix\", a.Text = \"text\", a))(j || {});\nclass le {\n constructor(e) {\n d(this, \"field\");\n d(this, \"itemMap\");\n this.field = e, this.itemMap = this.field.items.reduce(\n (t, n) => (t[n.value] = n, t),\n {}\n );\n }\n get id() {\n return this.field.id;\n }\n get items() {\n return this.field.items;\n }\n get onChange() {\n return this.field.onChange;\n }\n get segmentFactories() {\n return this.field.segmentFactories;\n }\n get min() {\n return this.items[0].value;\n }\n get max() {\n return this.items[this.items.length - 1].value;\n }\n getItem(e) {\n return this.itemMap[e];\n }\n}\nfunction fe(a, e, t = 1) {\n const n = [];\n for (let r = a; r <= e; r += t)\n n.push(r);\n return n;\n}\nclass xe {\n constructor(e, t, n = 1) {\n d(this, \"start\");\n d(this, \"end\");\n d(this, \"step\");\n return this.start = e, this.end = t, this.step = n, new Proxy(this, {\n get: function(r, i) {\n const s = typeof i == \"string\" ? parseInt(i) : i;\n return typeof s == \"number\" && s >= 0 && s <= r.length ? r.start + r.step * s : Reflect.get(r, i);\n }\n });\n }\n get length() {\n return (this.end - this.start) / this.step + 1;\n }\n [Symbol.iterator]() {\n let e = -1;\n return {\n next: () => ({ value: this[++e], done: this[e + 1] === void 0 })\n };\n }\n}\nfunction V(a, e, t = (r) => r + \"\", n = (r) => r + \"\") {\n const r = [];\n for (const i of new xe(a, e))\n r.push({\n text: t(i),\n alt: n(i),\n value: i\n });\n return r;\n}\nfunction pe(a, e = \"crontab\") {\n const t = (r, i = !1) => new Date(2021, r - 1, 1).toLocaleDateString(a, {\n month: i ? \"short\" : \"long\"\n }), n = (r, i = !1) => new Date(2021, 0, 3 + r).toLocaleDateString(a, {\n weekday: i ? \"short\" : \"long\"\n });\n return {\n secondItems: V(0, 59, (r) => K(r, 2)),\n minuteItems: V(0, 59, (r) => K(r, 2)),\n hourItems: V(0, 23, (r) => K(r, 2)),\n dayItems: V(1, 31),\n monthItems: V(1, 12, t, (r) => t(r, !0)),\n dayOfWeekItems: e === \"quartz\" ? V(\n 1,\n 7,\n (r) => n(r - 1),\n (r) => n(r - 1, !0)\n ) : V(0, 6, n, (r) => n(r, !0))\n };\n}\nfunction K(a, e) {\n const t = a + \"\";\n return t.length < e ? new Array(e - t.length).fill(\"0\").join(\"\") + a : t;\n}\nfunction B(a) {\n return a && typeof a == \"object\" && !Array.isArray(a);\n}\nfunction G(a, ...e) {\n if (!B(a) || e.length === 0)\n return;\n const t = e.shift();\n if (B(t))\n for (const [n, r] of Object.entries(t))\n B(r) ? (B(a[n]) || (a[n] = {}), G(a[n], t[n])) : a[n] = t[n];\n return e.length > 0 && G(a, ...e), a;\n}\nfunction ae(a, ...e) {\n if (e.length === 0)\n return a;\n for (const t of e[0])\n if (t in a) {\n const n = ae(a[t], ...e.slice(1));\n if (n !== void 0)\n return n;\n }\n}\nfunction ce(a) {\n for (let e = 1; e < a.length; e++)\n if (a[e - 1] + 1 !== a[e])\n return !1;\n return !0;\n}\nfunction de() {\n throw new Error(\"not implemented\");\n}\nfunction he(a, e, t = !0) {\n const n = [];\n for (let r = 0; r < a.length; r += e) {\n const i = a.slice(r, r + e);\n for (; t && i.length < e; )\n i.push(null);\n n.push(i);\n }\n return n;\n}\nclass Q {\n constructor(e) {\n d(this, \"field\");\n d(this, \"type\", T.NoSpecific);\n this.field = e;\n }\n toCron() {\n return \"?\";\n }\n toArray() {\n return [];\n }\n get items() {\n return {};\n }\n static fromString(e, t) {\n return e !== \"?\" ? null : new Q(t);\n }\n}\nclass M {\n constructor(e) {\n d(this, \"field\");\n d(this, \"type\", T.Any);\n this.field = e;\n }\n toCron() {\n return \"*\";\n }\n toArray() {\n return [];\n }\n get items() {\n return {};\n }\n static fromString(e, t) {\n return e !== \"*\" ? null : new M(t);\n }\n static fromArray(e, t) {\n const { items: n } = t;\n if (e.length === 0)\n return new M(t);\n if (e.length !== n.length)\n return null;\n for (const r of n)\n if (!e.includes(r.value))\n return null;\n return ce(n.map((r) => r.value)) ? new M(t) : null;\n }\n}\nconst N = class N {\n constructor(e, t, n) {\n d(this, \"field\");\n d(this, \"type\", T.Range);\n d(this, \"start\");\n d(this, \"end\");\n this.field = e, this.start = t, this.end = n;\n }\n toCron() {\n return `${this.start}-${this.end}`;\n }\n toArray() {\n const e = this.start, t = this.end;\n return fe(e, t);\n }\n get items() {\n return {\n start: this.field.itemMap[this.start],\n end: this.field.itemMap[this.end]\n };\n }\n static fromString(e, t) {\n if (!N.re.test(e))\n return null;\n const { min: n, max: r } = t, i = e.split(\"-\"), s = parseInt(i[0]), u = parseInt(i[1]);\n return s > u || s < n || u > r ? null : new N(t, s, u);\n }\n};\nd(N, \"re\", /^\\d+-\\d+$/);\nlet $ = N;\nfunction Z(a, e, t) {\n const n = [];\n for (let r = e; r <= t; r += a)\n n.push(r);\n return n;\n}\nconst E = class E {\n constructor(e, t, n, r) {\n d(this, \"field\");\n d(this, \"step\");\n d(this, \"start\");\n d(this, \"end\");\n this.field = e, this.step = t, this.start = n ?? e.min, this.end = r ?? e.max;\n }\n get type() {\n const { min: e, max: t } = this.field;\n return this.start !== e || t - this.end >= this.step ? T.RangeStep : T.Step;\n }\n toCron() {\n return this.type == T.RangeStep ? `${this.start}-${this.end}/${this.step}` : `*/${this.step}`;\n }\n toArray() {\n return Z(this.step, this.start, this.end);\n }\n get items() {\n return {\n step: this.field.itemMap[this.step],\n start: this.field.itemMap[this.start],\n end: this.field.itemMap[this.end]\n };\n }\n static fromString(e, t) {\n if (!E.re.test(e))\n return null;\n const [n, r] = e.split(\"/\"), i = parseInt(r);\n if (i > t.items.length)\n return null;\n const s = e.split(\"-\").map((x) => parseInt(x)), u = n == \"*\" ? t.min : s[0], o = n == \"*\" ? t.max : s[1];\n return Z(i, u, o).length == 0 ? null : new E(t, i, u, o);\n }\n static fromArray(e, t) {\n if (e.length < 3)\n return null;\n const n = e[1] - e[0];\n if (n <= 1)\n return null;\n for (let r = 2; r < e.length; r++)\n if (e[r] - e[r - 1] != n)\n return null;\n return new E(t, n, e[0], e[e.length - 1]);\n }\n};\nd(E, \"re\", /^(\\*|\\d+-\\d+)\\/\\d+$/);\nlet P = E;\nclass U {\n constructor(e, t) {\n d(this, \"field\");\n d(this, \"type\", T.Value);\n d(this, \"value\");\n this.field = e, this.value = t;\n }\n toCron() {\n return `${this.value}`;\n }\n toArray() {\n return [this.value];\n }\n get items() {\n return {\n value: this.field.itemMap[this.value]\n };\n }\n static fromString(e, t) {\n const { min: n, max: r } = t, i = parseInt(e);\n return String(i) === e && i >= n && i <= r ? new U(t, i) : null;\n }\n static fromArray(e, t) {\n const { min: n, max: r } = t;\n if (e.length != 1)\n return null;\n const i = e[0];\n return i < n || i > r ? null : i;\n }\n}\nconst R = class R {\n constructor(e, t = []) {\n d(this, \"field\");\n d(this, \"segments\");\n this.field = e, this.segments = t;\n }\n get type() {\n return this.segments.length == 1 ? this.segments[0].type : T.Range;\n }\n addSegment(e) {\n this.segments.push(e);\n }\n toCron() {\n return this.segments.map((e) => e.toCron()).join(\",\");\n }\n toArray() {\n const e = /* @__PURE__ */ new Set();\n for (const t of this.segments)\n t.toArray().forEach((n) => e.add(n));\n return Array.from(e);\n }\n get items() {\n return de();\n }\n static fromString(e, t) {\n const n = t.segmentFactories ?? R.segmentFactories;\n let r = [];\n for (const i of e.split(\",\")) {\n if (i === \"*\") {\n r = [new M(t)];\n break;\n }\n let s = null;\n for (const u of n)\n if (s = u(i, t), s !== null)\n break;\n if (s === null)\n return null;\n r.push(s);\n }\n return new R(t, r);\n }\n static fromArray(e, t) {\n const { min: n, max: r } = t, i = e[0], s = e[e.length - 1];\n if (i < n || s > r)\n return null;\n const u = [];\n let o = 0;\n for (let x = 0; x < e.length; x++)\n (e[x + 1] === void 0 || e[x + 1] - e[x] > 1) && (x === o ? u.push(new U(t, e[o])) : u.push(new $(t, e[o], e[x])), o = x + 1);\n return new R(t, u);\n }\n};\nd(R, \"segmentFactories\", [\n M.fromString,\n P.fromString,\n $.fromString,\n U.fromString\n]);\nlet F = R;\nfunction _(a, e) {\n return F.fromString(a, e);\n}\nfunction me(a, e) {\n for (const t of [\n M.fromArray,\n P.fromArray,\n F.fromArray\n ]) {\n const n = t(a, e);\n if (n != null)\n return n;\n }\n return null;\n}\n/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\nvar ve = Object.prototype.toString, H = Array.isArray || function(e) {\n return ve.call(e) === \"[object Array]\";\n};\nfunction X(a) {\n return typeof a == \"function\";\n}\nfunction ye(a) {\n return H(a) ? \"array\" : typeof a;\n}\nfunction Y(a) {\n return a.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\nfunction ee(a, e) {\n return a != null && typeof a == \"object\" && e in a;\n}\nfunction ge(a, e) {\n return a != null && typeof a != \"object\" && a.hasOwnProperty && a.hasOwnProperty(e);\n}\nvar Se = RegExp.prototype.test;\nfunction we(a, e) {\n return Se.call(a, e);\n}\nvar ke = /\\S/;\nfunction Ce(a) {\n return !we(ke, a);\n}\nvar Oe = {\n \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\n \"'\": \"&#39;\",\n \"/\": \"&#x2F;\",\n \"`\": \"&#x60;\",\n \"=\": \"&#x3D;\"\n};\nfunction be(a) {\n return String(a).replace(/[&<>\"'`=\\/]/g, function(t) {\n return Oe[t];\n });\n}\nvar qe = /\\s*/, Ae = /\\s+/, te = /\\s*=/, We = /\\s*\\}/, Te = /#|\\^|\\/|>|\\{|&|=|!/;\nfunction Me(a, e) {\n if (!a)\n return [];\n var t = !1, n = [], r = [], i = [], s = !1, u = !1, o = \"\", x = 0;\n function h() {\n if (s && !u)\n for (; i.length; )\n delete r[i.pop()];\n else\n i = [];\n s = !1, u = !1;\n }\n var p, y, W;\n function A(b) {\n if (typeof b == \"string\" && (b = b.split(Ae, 2)), !H(b) || b.length !== 2)\n throw new Error(\"Invalid tags: \" + b);\n p = new RegExp(Y(b[0]) + \"\\\\s*\"), y = new RegExp(\"\\\\s*\" + Y(b[1])), W = new RegExp(\"\\\\s*\" + Y(\"}\" + b[1]));\n }\n A(e || q.tags);\n for (var l = new z(a), m, f, v, O, I, c; !l.eos(); ) {\n if (m = l.pos, v = l.scanUntil(p), v)\n for (var S = 0, w = v.length; S < w; ++S)\n O = v.charAt(S), Ce(O) ? (i.push(r.length), o += O) : (u = !0, t = !0, o += \" \"), r.push([\"text\", O, m, m + 1]), m += 1, O === `\n` && (h(), o = \"\", x = 0, t = !1);\n if (!l.scan(p))\n break;\n if (s = !0, f = l.scan(Te) || \"name\", l.scan(qe), f === \"=\" ? (v = l.scanUntil(te), l.scan(te), l.scanUntil(y)) : f === \"{\" ? (v = l.scanUntil(W), l.scan(We), l.scanUntil(y), f = \"&\") : v = l.scanUntil(y), !l.scan(y))\n throw new Error(\"Unclosed tag at \" + l.pos);\n if (f == \">\" ? I = [f, v, m, l.pos, o, x, t] : I = [f, v, m, l.pos], x++, r.push(I), f === \"#\" || f === \"^\")\n n.push(I);\n else if (f === \"/\") {\n if (c = n.pop(), !c)\n throw new Error('Unopened section \"' + v + '\" at ' + m);\n if (c[1] !== v)\n throw new Error('Unclosed section \"' + c[1] + '\" at ' + m);\n } else\n f === \"name\" || f === \"{\" || f === \"&\" ? u = !0 : f === \"=\" && A(v);\n }\n if (h(), c = n.pop(), c)\n throw new Error('Unclosed section \"' + c[1] + '\" at ' + l.pos);\n return Ve(Ie(r));\n}\nfunction Ie(a) {\n for (var e = [], t, n, r = 0, i = a.length; r < i; ++r)\n t = a[r], t && (t[0] === \"text\" && n && n[0] === \"text\" ? (n[1] += t[1], n[3] = t[3]) : (e.push(t), n = t));\n return e;\n}\nfunction Ve(a) {\n for (var e = [], t = e, n = [], r, i, s = 0, u = a.length; s < u; ++s)\n switch (r = a[s], r[0]) {\n case \"#\":\n case \"^\":\n t.push(r), n.push(r), t = r[4] = [];\n break;\n case \"/\":\n i = n.pop(), i[5] = r[2], t = n.length > 0 ? n[n.length - 1][4] : e;\n break;\n default:\n t.push(r);\n }\n return e;\n}\nfunction z(a) {\n this.string = a, this.tail = a, this.pos = 0;\n}\nz.prototype.eos = function() {\n return this.tail === \"\";\n};\nz.prototype.scan = function(e) {\n var t = this.tail.match(e);\n if (!t || t.index !== 0)\n return \"\";\n var n = t[0];\n return this.tail = this.tail.substring(n.length), this.pos += n.length, n;\n};\nz.prototype.scanUntil = function(e) {\n var t = this.tail.search(e), n;\n switch (t) {\n case -1:\n n = this.tail, this.tail = \"\";\n break;\n case 0:\n n = \"\";\n break;\n default:\n n = this.tail.substring(0, t), this.tail = this.tail.substring(t);\n }\n return this.pos += n.length, n;\n};\nfunction D(a, e) {\n this.view = a, this.cache = { \".\": this.view }, this.parent = e;\n}\nD.prototype.push = function(e) {\n return new D(e, this);\n};\nD.prototype.lookup = function(e) {\n var t = this.cache, n;\n if (t.hasOwnProperty(e))\n n = t[e];\n else {\n for (var r = this, i, s, u, o = !1; r; ) {\n if (e.indexOf(\".\") > 0)\n for (i = r.view, s = e.split(\".\"), u = 0; i != null && u < s.length; )\n u === s.length - 1 && (o = ee(i, s[u]) || ge(i, s[u])), i = i[s[u++]];\n else\n i = r.view[e], o = ee(r.view, e);\n if (o) {\n n = i;\n break;\n }\n r = r.parent;\n }\n t[e] = n;\n }\n return X(n) && (n = n.call(this.view)), n;\n};\nfunction C() {\n this.templateCache = {\n _cache: {},\n set: function(e, t) {\n this._cache[e] = t;\n },\n get: function(e) {\n return this._cache[e];\n },\n clear: function() {\n this._cache = {};\n }\n };\n}\nC.prototype.clearCache = function() {\n typeof this.templateCache < \"u\" && this.templateCache.clear();\n};\nC.prototype.parse = function(e, t) {\n var n = this.templateCache, r = e + \":\" + (t || q.tags).join(\":\"), i = typeof n < \"u\", s = i ? n.get(r) : void 0;\n return s == null && (s = Me(e, t), i && n.set(r, s)), s;\n};\nC.prototype.render = function(e, t, n, r) {\n var i = this.getConfigTags(r), s = this.parse(e, i), u = t instanceof D ? t : new D(t, void 0);\n return this.renderTokens(s, u, n, e, r);\n};\nC.prototype.renderTokens = function(e, t, n, r, i) {\n for (var s = \"\", u, o, x, h = 0, p = e.length; h < p; ++h)\n x = void 0, u = e[h], o = u[0], o === \"#\" ? x = this.renderSection(u, t, n, r, i) : o === \"^\" ? x = this.renderInverted(u, t, n, r, i) : o === \">\" ? x = this.renderPartial(u, t, n, i) : o === \"&\" ? x = this.unescapedValue(u, t) : o === \"name\" ? x = this.escapedValue(u, t, i) : o === \"text\" && (x = this.rawValue(u)), x !== void 0 && (s += x);\n return s;\n};\nC.prototype.renderSection = function(e, t, n, r, i) {\n var s = this, u = \"\", o = t.lookup(e[1]);\n function x(y) {\n return s.render(y, t, n, i);\n }\n if (o) {\n if (H(o))\n for (var h = 0, p = o.length; h < p; ++h)\n u += this.renderTokens(e[4], t.push(o[h]), n, r, i);\n else if (typeof o == \"object\" || typeof o == \"string\" || typeof o == \"number\")\n u += this.renderTokens(e[4], t.push(o), n, r, i);\n else if (X(o)) {\n if (typeof r != \"string\")\n throw new Error(\"Cannot use higher-order sections without the original template\");\n o = o.call(t.view, r.slice(e[3], e[5]), x), o != null && (u += o);\n } else\n u += this.renderTokens(e[4], t, n, r, i);\n return u;\n }\n};\nC.prototype.renderInverted = function(e, t, n, r, i) {\n var s = t.lookup(e[1]);\n if (!s || H(s) && s.length === 0)\n return this.renderTokens(e[4], t, n, r, i);\n};\nC.prototype.indentPartial = function(e, t, n) {\n for (var r = t.replace(/[^ \\t]/g, \"\"), i = e.split(`\n`), s = 0; s < i.length; s++)\n i[s].length && (s > 0 || !n) && (i[s] = r + i[s]);\n return i.join(`\n`);\n};\nC.prototype.renderPartial = function(e, t, n, r) {\n if (n) {\n var i = this.getConfigTags(r), s = X(n) ? n(e[1]) : n[e[1]];\n if (s != null) {\n var u = e[6], o = e[5], x = e[4], h = s;\n o == 0 && x && (h = this.indentPartial(s, x, u));\n var p = this.parse(h, i);\n return this.renderTokens(p, t, n, h, r);\n }\n }\n};\nC.prototype.unescapedValue = function(e, t) {\n var n = t.lookup(e[1]);\n if (n != null)\n return n;\n};\nC.prototype.escapedValue = function(e, t, n) {\n var r = this.getConfigEscape(n) || q.escape, i = t.lookup(e[1]);\n if (i != null)\n return typeof i == \"number\" && r === q.escape ? String(i) : r(i);\n};\nC.prototype.rawValue = function(e) {\n return e[1];\n};\nC.prototype.getConfigTags = function(e) {\n return H(e) ? e : e && typeof e == \"object\" ? e.tags : void 0;\n};\nC.prototype.getConfigEscape = function(e) {\n if (e && typeof e == \"object\" && !H(e))\n return e.escape;\n};\nvar q = {\n name: \"mustache.js\",\n version: \"4.2.0\",\n tags: [\"{{\", \"}}\"],\n clearCache: void 0,\n escape: void 0,\n parse: void 0,\n render: void 0,\n Scanner: void 0,\n Context: void 0,\n Writer: void 0,\n /**\n * Allows a user to override the default caching strategy, by providing an\n * object with set, get and clear methods. This can also be used to disable\n * the cache by setting it to the literal `undefined`.\n */\n set templateCache(a) {\n L.templateCache = a;\n },\n /**\n * Gets the default or overridden caching object from the default writer.\n */\n get templateCache() {\n return L.templateCache;\n }\n}, L = new C();\nq.clearCache = function() {\n return L.clearCache();\n};\nq.parse = function(e, t) {\n return L.parse(e, t);\n};\nq.render = function(e, t, n, r) {\n if (typeof e != \"string\")\n throw new TypeError('Invalid template! Template should be a \"string\" but \"' + ye(e) + '\" was given as the first argument for mustache#render(template, view, partials)');\n return L.render(e, t, n, r);\n};\nq.escape = be;\nq.Scanner = z;\nq.Context = D;\nq.Writer = C;\nconst je = {\n \"*\": {\n prefix: \"每\",\n suffix: \"\",\n text: \"未知\",\n \"*\": {\n any: { text: \"每 {{field.id}}\" },\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n step: { text: \"每 {{step.value}}\" }\n },\n month: {\n \"*\": { prefix: \"的\" },\n any: { text: \"每月\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"的\" },\n any: { text: \"每日\" },\n value: { text: \"{{value.alt}}号\" },\n range: { text: \"{{start.alt}}号-{{end.alt}}号\" },\n noSpecific: {\n text: \"无特定日期\"\n }\n },\n dayOfWeek: {\n \"*\": { prefix: \"的\" },\n any: { text: \"一周的每一天\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: {\n text: \"无特定星期几\"\n }\n },\n hour: {\n \"*\": { prefix: \"的\" },\n any: { text: \"每小时\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n any: { text: \"每分钟\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n any: { text: \"每秒\" }\n }\n },\n minute: {\n text: \"分\"\n },\n hour: {\n text: \"小时\",\n minute: {\n \"*\": {\n prefix: \":\",\n suffix: \"分钟\"\n },\n any: { text: \"每\" }\n }\n },\n day: {\n text: \"天\"\n },\n week: {\n text: \"周\",\n dayOfWeek: {\n \"*\": { prefix: \"的\" },\n any: { text: \"每天\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n }\n },\n month: {\n text: \"月\",\n dayOfWeek: {\n \"*\": { prefix: \"和\" }\n },\n day: {\n \"*\": { prefix: \"的\" }\n }\n },\n year: {\n text: \"年\",\n dayOfWeek: {\n \"*\": { prefix: \"和\" }\n }\n },\n //quartz format\n \"q-second\": {\n text: \"秒\"\n },\n \"q-minute\": {\n text: \"分钟\",\n second: {\n \"*\": {\n prefix: \":\",\n suffix: \"秒\"\n },\n any: { text: \"每\" }\n }\n },\n \"q-hour\": {\n text: \"小时\",\n minute: {\n \"*\": {\n prefix: \":\"\n }\n }\n }\n}, Ee = {\n \"*\": {\n prefix: \"Hver\",\n suffix: \"\",\n text: \"Ukendt\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n step: { text: \"hver {{step.value}}\" }\n },\n month: {\n \"*\": { prefix: \"i\" },\n any: { text: \"hver måned\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"og\" },\n any: { text: \"hver dag i måneden\" },\n value: { text: \"{{value.alt}}.\" },\n range: { text: \"{{start.alt}}.-{{end.alt}}.\" },\n noSpecific: {\n text: \"ingen specifik dag\"\n }\n },\n dayOfWeek: {\n \"*\": { prefix: \"på\" },\n any: { text: \"hver dag i ugen\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: {\n text: \"ingen specifik dag i ugen\"\n }\n },\n hour: {\n \"*\": { prefix: \"klokken\" },\n any: { text: \"hver time\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n any: { text: \"hvert minut\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n any: { text: \"hvert sekund\" }\n }\n },\n second: {\n prefix: \"Hvert\"\n },\n minute: {\n prefix: \"Hvert\",\n text: \"Minut\"\n },\n hour: {\n text: \"Time\",\n minute: {\n \"*\": {\n prefix: \"ved\",\n suffix: \"minutter\"\n },\n any: { text: \"alle\" }\n }\n },\n day: {\n text: \"Dag\"\n },\n week: {\n text: \"Uge\"\n },\n month: {\n text: \"Måned\",\n dayOfWeek: {\n \"*\": { prefix: \"og\" }\n }\n },\n year: {\n prefix: \"Hvert\",\n text: \"År\",\n dayOfWeek: {\n \"*\": { prefix: \"og\" }\n }\n },\n // quartz format\n \"q-second\": {\n text: \"Sekund\"\n },\n \"q-minute\": {\n text: \"Minut\",\n second: {\n \"*\": {\n suffix: \"sekund(er)\"\n },\n any: { text: \"hvert\" }\n }\n },\n \"q-hour\": {\n text: \"Time\",\n minute: {\n \"*\": {\n prefix: \"på\"\n }\n }\n }\n}, Re = {\n \"*\": {\n prefix: \"Jede\",\n suffix: \"\",\n text: \"Unknown\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n step: { text: \"alle {{step.value}}\" }\n },\n month: {\n \"*\": { prefix: \"im\" },\n any: {\n prefix: \"in\",\n text: \"jedem Monat\"\n },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"den\" },\n any: {\n prefix: \"an\",\n text: \"jedem Tag\"\n },\n step: {\n prefix: \"\",\n text: \"alle {{step.value}} Tage\"\n },\n noSpecific: {\n prefix: \"an\",\n text: \"keinem bestimmten Tag\"\n }\n },\n dayOfWeek: {\n \"*\": { prefix: \"am\" },\n any: {\n prefix: \"an\",\n text: \"jedem Wochentag\"\n },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: {\n prefix: \"und\",\n text: \"keinem bestimmten Wochentag\"\n }\n },\n hour: {\n \"*\": { prefix: \"um\" },\n any: {\n prefix: \"zu\",\n text: \"jeder Stunde\"\n },\n step: {\n prefix: \"\",\n text: \"alle {{step.value}} Stunden\"\n }\n },\n minute: {\n \"*\": { prefix: \":\" },\n any: { text: \"jede Minute\" },\n step: {\n prefix: \"\",\n text: \"alle {{step.value}} Minuten\"\n }\n },\n second: {\n \"*\": { prefix: \":\" },\n any: { text: \"jede Sekunde\" },\n step: {\n prefix: \"\",\n text: \"alle {{step.value}} Sekunden\"\n }\n }\n },\n minute: {\n text: \"Minute\"\n },\n hour: {\n text: \"Stunde\",\n minute: {\n \"*\": {\n prefix: \"zu\",\n suffix: \"Minute(n)\"\n },\n any: { text: \"jeder\" }\n }\n },\n day: {\n prefix: \"Jeden\",\n text: \"Tag\"\n },\n week: {\n text: \"Woche\"\n },\n month: {\n prefix: \"Jedes\",\n text: \"Monat\"\n },\n year: {\n prefix: \"Jedes\",\n text: \"Jahr\"\n },\n //quartz format\n \"q-second\": {\n text: \"Sekunde\"\n },\n \"q-minute\": {\n text: \"Minute\",\n second: {\n \"*\": {\n prefix: \"und\"\n }\n }\n },\n \"q-hour\": {\n text: \"Stunde\",\n minute: {\n \"*\": {\n prefix: \"und\"\n }\n },\n second: {\n \"*\": {\n prefix: \"und\"\n }\n }\n }\n}, $e = {\n \"*\": {\n prefix: \"Every\",\n suffix: \"\",\n text: \"Unknown\",\n \"*\": {\n any: { text: \"every {{field.id}}\" },\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n step: { text: \"every {{step.value}}\" },\n rangeStep: { text: \"{{start.text}}-{{end.text}}/{{step.value}}\" }\n },\n month: {\n \"*\": { prefix: \"in\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n rangeStep: { text: \"{{start.alt}}-{{end.alt}}/{{step.value}}\" }\n },\n day: {\n \"*\": { prefix: \"on\" },\n noSpecific: {\n text: \"no specific day\"\n }\n },\n dayOfWeek: {\n \"*\": { prefix: \"on\" },\n any: { text: \"every day of the week\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n rangeStep: { text: \"{{start.alt}}-{{end.alt}}/{{step.value}}\" },\n noSpecific: {\n text: \"no specific day of the week\"\n }\n },\n hour: {\n \"*\": { prefix: \"at\" }\n },\n minute: {\n \"*\": { prefix: \":\" }\n },\n second: {\n \"*\": { prefix: \":\" }\n }\n },\n minute: {\n text: \"Minute\"\n },\n hour: {\n text: \"Hour\",\n minute: {\n \"*\": {\n prefix: \"at\",\n suffix: \"minute(s)\"\n },\n any: { text: \"every\" }\n }\n },\n day: {\n text: \"Day\"\n },\n week: {\n text: \"Week\"\n },\n month: {\n text: \"Month\",\n dayOfWeek: {\n \"*\": { prefix: \"and\" }\n }\n },\n year: {\n text: \"Year\",\n dayOfWeek: {\n \"*\": { prefix: \"and\" }\n }\n },\n //quartz format\n \"q-second\": {\n text: \"Second\"\n },\n \"q-minute\": {\n text: \"Minute\",\n second: {\n \"*\": {\n prefix: \"at\",\n suffix: \"second(s)\"\n },\n any: { text: \"every\" }\n }\n },\n \"q-hour\": {\n text: \"Hour\",\n minute: {\n \"*\": {\n prefix: \"at\"\n }\n }\n }\n}, Pe = {\n \"*\": {\n prefix: \"todos los\",\n suffix: \"\",\n text: \"Desconocido\",\n \"*\": {\n any: { text: \"todos los {{ field.id }}\" },\n value: { text: \"{{ value.text }}\" },\n range: { text: \"{{ start.text }}-{{ end.text }}\" },\n step: { text: \"todos/as {{ step.value }}\" }\n },\n month: {\n \"*\": { prefix: \"en\" },\n any: { text: \"todos los meses\" },\n value: { text: \"{{ value.alt }}\" },\n range: { text: \"{{ start.alt }}-{{ end.alt }}\" }\n },\n day: {\n \"*\": { prefix: \"en\" },\n any: { text: \"todos los días\" },\n value: { text: \"los días {{ value.alt }}\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"de\" },\n any: { text: \"todos los días de la semana\" },\n value: { text: \"los {{ value.alt }}\" },\n range: { text: \"{{ start.alt }}-{{ end.alt }}\" }\n },\n hour: {\n \"*\": { prefix: \"a\" },\n any: { text: \"todas las horas\" },\n value: { text: \"las {{ value.text }}\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n any: { text: \"todos los minutos\" }\n }\n },\n minute: {\n prefix: \"todos los\",\n text: \"minutos\"\n },\n hour: {\n prefix: \"todas las\",\n text: \"horas\",\n minute: {\n \"*\": {\n prefix: \"a los\",\n suffix: \"minutos\"\n },\n any: { text: \"todos\", prefix: \"a\", suffix: \"los minutos\" }\n }\n },\n day: {\n text: \"Días\"\n },\n week: {\n text: \"Semanas\"\n },\n month: {\n text: \"Meses\",\n dayOfWeek: {\n \"*\": { prefix: \"y\" }\n }\n },\n year: {\n text: \"años\",\n dayOfWeek: {\n \"*\": { prefix: \"y\" }\n }\n }\n}, Ue = {\n \"*\": {\n prefix: \"Toutes\",\n suffix: \"\",\n text: \"Inconnu\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n step: { text: \"tous les {{step.value}}\" }\n },\n month: {\n \"*\": { prefix: \"en\" },\n any: { prefix: \"en\", text: \"tous les mois\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"le\" },\n any: { prefix: \"à\", text: \"tous les jours\" },\n step: { prefix: \"\", text: \"tous les {{step.value}} jours\" },\n noSpecific: { prefix: \"à\", text: \"aucun jour particulier\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"le\" },\n any: { prefix: \"à\", text: \"tous les jours de la semaine\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: { prefix: \"et\", text: \"aucun jour de la semaine particulier\" }\n },\n hour: {\n \"*\": { prefix: \"à\" },\n any: { prefix: \"à\", text: \"toutes les heures\" },\n step: { prefix: \"\", text: \"toutes les {{step.value}} heures\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n any: { text: \"toutes les minutes\" },\n step: { prefix: \"\", text: \"toutes les {{step.value}} minutes\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n any: { text: \"toutes les secondes\" },\n step: { prefix: \"\", text: \"toutes les {{step.value}} secondes\" }\n }\n },\n minute: { text: \"Minute\" },\n hour: {\n text: \"Heure\",\n minute: { \"*\": { prefix: \"à\", suffix: \"minute(s)\" }, any: { text: \"toutes\" } }\n },\n day: { prefix: \"Tous\", text: \"Jour\" },\n week: { text: \"Semaine\" },\n month: { prefix: \"Tous\", text: \"Mois\" },\n year: { prefix: \"Tous\", text: \"Année\" },\n //quartz format\n \"q-second\": { text: \"Seconde\" },\n \"q-minute\": { text: \"Minute\", second: { \"*\": { prefix: \"et\" } } },\n \"q-hour\": { text: \"Heure\", minute: { \"*\": { prefix: \"et\" } }, second: { \"*\": { prefix: \"et\" } } }\n}, De = {\n \"*\": {\n prefix: \"בכל\",\n suffix: \"\",\n text: \"לא ידוע\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n step: { text: \"כל {{step.value}}\" }\n },\n month: {\n \"*\": { prefix: \"ב\" },\n any: { text: \"כל חודש\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"ב\" },\n any: { text: \"כל יום\" },\n value: { text: \"יום {{value.alt}} לחודש\" },\n noSpecific: {\n text: \"ללא יום מוגדר\"\n }\n },\n dayOfWeek: {\n \"*\": { prefix: \"ב\" },\n any: { text: \"כל יום מימות השבוע\" },\n value: { text: \"ימי {{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: {\n text: \"ללא יום בשבוע מוגדר\"\n }\n },\n hour: {\n \"*\": { prefix: \"ב\" },\n any: { text: \"כל שעה\" },\n value: { text: \"שעה {{value.text}}\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n any: { text: \"כל דקה\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n any: { text: \"כל שניה\" }\n }\n },\n minute: {\n text: \"דקה\"\n },\n hour: {\n text: \"שעה\",\n minute: {\n \"*\": {\n prefix: \"ב\",\n suffix: \"דקות\"\n },\n any: { text: \"כל\" }\n }\n },\n day: {\n text: \"יום\"\n },\n week: {\n text: \"שבוע\"\n },\n month: {\n text: \"חודש\",\n dayOfWeek: {\n \"*\": { prefix: \"ו\" }\n }\n },\n year: {\n text: \"שנה\",\n dayOfWeek: {\n \"*\": { prefix: \"ו\" }\n }\n },\n //quartz format\n \"q-second\": {\n text: \"שניה\"\n },\n \"q-minute\": {\n text: \"דקה\",\n second: {\n \"*\": {\n prefix: \"ב\",\n suffix: \"שניות\"\n },\n any: { text: \"כל\" }\n }\n },\n \"q-hour\": {\n text: \"שעה\",\n minute: {\n \"*\": {\n prefix: \"ב\"\n }\n }\n }\n}, He = {\n \"*\": {\n prefix: \"हर\",\n suffix: \"\",\n text: \"अज्ञात\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n step: { text: \"{{step.value}} हर\" }\n },\n month: {\n \"*\": { prefix: \"में\" },\n any: { prefix: \"के\", text: \"हर महीने\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"के\" },\n any: { prefix: \"पर\", text: \"हर दिन\" },\n step: { prefix: \"\", text: \"{{step.value}} दिन हर\" },\n noSpecific: { prefix: \"पर\", text: \"कोई विशेष दिन नहीं\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"पर\" },\n any: { prefix: \"पर\", text: \"हर सप्ताह\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: { prefix: \"और\", text: \"कोई विशेष सप्ताह नहीं\" }\n },\n hour: {\n \"*\": { prefix: \"को\" },\n any: { prefix: \"पर\", text: \"हर घंटे\" },\n step: { prefix: \"\", text: \"{{step.value}} घंटे हर\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n any: { text: \"हर मिनट\" },\n step: { prefix: \"\", text: \"{{step.value}} मिनट हर\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n any: { text: \"हर सेकंड\" },\n step: { prefix: \"\", text: \"{{step.value}} सेकंड हर\" }\n }\n },\n minute: { text: \"मिनट\" },\n hour: { text: \"घंटा\", minute: { \"*\": { prefix: \"पर\", suffix: \"मिनट\" }, any: { text: \"हर\" } } },\n day: { prefix: \"हर\", text: \"दिन\" },\n week: { text: \"सप्ताह\" },\n month: { prefix: \"हर\", text: \"महीना\" },\n year: { prefix: \"हर\", text: \"साल\" },\n //quartz format\n \"q-second\": { text: \"सेकंड\" },\n \"q-minute\": { text: \"मिनट\", second: { \"*\": { prefix: \"और\" } } },\n \"q-hour\": { text: \"घंटा\", minute: { \"*\": { prefix: \"और\" } }, second: { \"*\": { prefix: \"और\" } } }\n}, Ne = {\n \"*\": {\n prefix: \"毎\",\n suffix: \"\",\n text: \"不明\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n step: { text: \"{{step.value}}ごとに\" }\n },\n month: {\n \"*\": { prefix: \"に\" },\n any: { prefix: \"の\", text: \"毎月\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"の\" },\n any: { prefix: \"に\", text: \"毎日\" },\n step: { prefix: \"\", text: \"{{step.value}}日ごとに\" },\n noSpecific: { prefix: \"に\", text: \"特定の日はなし\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"の\" },\n any: { prefix: \"に\", text: \"毎週\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: { prefix: \"と\", text: \"特定の曜日はなし\" }\n },\n hour: {\n \"*\": { prefix: \"の\" },\n any: { prefix: \"に\", text: \"毎時\" },\n step: { prefix: \"\", text: \"{{step.value}}時間ごとに\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n any: { text: \"毎分\" },\n step: { prefix: \"\", text: \"{{step.value}}分ごとに\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n any: { text: \"毎秒\" },\n step: { prefix: \"\", text: \"{{step.value}}秒ごとに\" }\n }\n },\n minute: { text: \"分\" },\n hour: { text: \"時\", minute: { \"*\": { prefix: \"に\", suffix: \"分\" }, any: { text: \"毎\" } } },\n day: { prefix: \"毎\", text: \"日\" },\n week: { text: \"週\" },\n month: { prefix: \"毎\", text: \"月\" },\n year: { prefix: \"毎\", text: \"年\" },\n //quartz format\n \"q-second\": { text: \"秒\" },\n \"q-minute\": { text: \"分\", second: { \"*\": { prefix: \"と\" } } },\n \"q-hour\": { text: \"時\", minute: { \"*\": { prefix: \"と\" } }, second: { \"*\": { prefix: \"と\" } } }\n}, Fe = {\n \"*\": {\n prefix: \"매\",\n suffix: \"\",\n text: \"알 수 없음\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n step: { text: \"{{step.value}}마다\" }\n },\n month: {\n \"*\": { prefix: \"에\" },\n any: { prefix: \"의\", text: \"매월\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"의\" },\n any: { prefix: \"에\", text: \"매일\" },\n step: { prefix: \"\", text: \"{{step.value}}일마다\" },\n noSpecific: { prefix: \"에\", text: \"특정한 날 없음\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"의\" },\n any: { prefix: \"에\", text: \"매주\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: { prefix: \"과\", text: \"특정한 요일 없음\" }\n },\n hour: {\n \"*\": { prefix: \"의\" },\n any: { prefix: \"에\", text: \"매시\" },\n step: { prefix: \"\", text: \"{{step.value}}시간마다\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n any: { text: \"매분\" },\n step: { prefix: \"\", text: \"{{step.value}}분마다\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n any: { text: \"매초\" },\n step: { prefix: \"\", text: \"{{step.value}}초마다\" }\n }\n },\n minute: { text: \"분\" },\n hour: { text: \"시\", minute: { \"*\": { prefix: \"에\", suffix: \"분\" }, any: { text: \"매\" } } },\n day: { prefix: \"매\", text: \"일\" },\n week: { text: \"주\" },\n month: { prefix: \"매\", text: \"월\" },\n year: { prefix: \"매\", text: \"년\" },\n //quartz format\n \"q-second\": { text: \"초\" },\n \"q-minute\": { text: \"분\", second: { \"*\": { prefix: \"와\" } } },\n \"q-hour\": { text: \"시\", minute: { \"*\": { prefix: \"와\" } }, second: { \"*\": { prefix: \"와\" } } }\n}, Le = {\n \"*\": {\n prefix: \"Todo(a)\",\n suffix: \"\",\n text: \"Desconhecido\",\n \"*\": {\n any: { text: \"todo {{field.id}}\" },\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n step: { text: \"todo {{step.value}}\" }\n },\n month: {\n \"*\": { prefix: \"de\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n any: { text: \"todo mês\" }\n },\n day: {\n \"*\": { prefix: \"no(s) dia(s)\" },\n any: { text: \"todos\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"de\" },\n any: { text: \"todos dias da semana\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n hour: {\n \"*\": { prefix: \"às\" },\n any: { text: \"cada hora\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n any: { text: \"cada minuto\" }\n }\n },\n minute: {\n text: \"Minuto\"\n },\n hour: {\n text: \"Hora\",\n minute: {\n \"*\": {\n prefix: \"e\",\n suffix: \"minuto(s)\"\n },\n any: { text: \"cada\" }\n }\n },\n day: {\n text: \"Dia\"\n },\n week: {\n text: \"Semana\"\n },\n month: {\n text: \"Mês\",\n dayOfWeek: {\n \"*\": { prefix: \"e de\" }\n }\n },\n year: {\n text: \"Ano\",\n dayOfWeek: {\n \"*\": { prefix: \"e de\" }\n }\n }\n}, ze = {\n \"*\": {\n prefix: \"Каждый\",\n suffix: \"\",\n text: \"Неизвестно\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n step: { text: \"каждый {{step.value}}\" }\n },\n month: {\n \"*\": { prefix: \"в\" },\n any: { prefix: \"в\", text: \"каждом месяце\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"в\" },\n any: { prefix: \"в\", text: \"каждый день\" },\n step: { prefix: \"\", text: \"каждые {{step.value}} дня\" },\n noSpecific: { prefix: \"в\", text: \"нет определенного дня\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"по\" },\n any: { prefix: \"по\", text: \"каждому дню недели\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: { prefix: \"и\", text: \"нет определенного дня недели\" }\n },\n hour: {\n \"*\": { prefix: \"в\" },\n any: { prefix: \"в\", text: \"каждый час\" },\n step: { prefix: \"\", text: \"каждые {{step.value}} часа\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n any: { text: \"каждую минуту\" },\n step: { prefix: \"\", text: \"каждые {{step.value}} минуты\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n any: { text: \"каждую секунду\" },\n step: { prefix: \"\", text: \"каждые {{step.value}} секунды\" }\n }\n },\n minute: { text: \"Минута\" },\n hour: {\n text: \"Час\",\n minute: { \"*\": { prefix: \"в\", suffix: \"минут(а/ы)\" }, any: { text: \"каждый\" } }\n },\n day: { prefix: \"Каждый\", text: \"День\" },\n week: { text: \"Неделя\" },\n month: { prefix: \"Каждый\", text: \"Месяц\" },\n year: { prefix: \"Каждый\", text: \"Год\" },\n //quartz format\n \"q-second\": { text: \"Секунда\" },\n \"q-minute\": { text: \"Минута\", second: { \"*\": { prefix: \"и\" } } },\n \"q-hour\": { text: \"Час\", minute: { \"*\": { prefix: \"и\" } }, second: { \"*\": { prefix: \"и\" } } }\n}, J = {\n empty: {},\n en: $e,\n de: Re,\n pt: Le,\n es: Pe,\n da: Ee,\n zh: je,\n he: De,\n ru: ze,\n fr: Ue,\n hi: He,\n ja: Ne,\n ko: Fe\n};\nclass Be {\n constructor(e) {\n d(this, \"dict\");\n this.dict = e;\n }\n /**\n * Gets a localization template by traversing the dictionary using provided keys.\n * @param keys - Array of keys to traverse through the localization dictionary\n * @returns The found template string or empty string if not found\n */\n getTemplate(...e) {\n const t = e.map((n) => [n, \"*\"]);\n return ae(this.dict, ...t) || \"\";\n }\n /**\n * Renders a localization template with the provided parameters using Mustache.\n * @param periodId - The period identifier (e.g. 'year', 'month')\n * @param fieldId - The field identifier (e.g. 'hour', 'minute')\n * @param fieldPattern - The pattern type of the field\n * @param position - The text position\n * @param params - Parameters to be interpolated into the template\n * @returns The rendered localization string\n */\n render(e, t, n, r, i) {\n const s = this.getTemplate(e, t, n, r);\n return q.render(s, i || {});\n }\n}\nfunction Je(a, e) {\n const [t] = a.split(\"-\"), n = J[a.toLowerCase()] || J[t.toLowerCase()] || J.en, r = G({}, J.en, n, e || {});\n return new Be(r);\n}\nfunction Qe(a) {\n const { period: e, field: t, initialCron: n = \"*\", l10n: r } = a, i = k(n), s = k(\"\"), u = k([]), o = k(\"\"), x = k(\"\"), h = k(\"\"), p = (l) => {\n const m = l instanceof F ? l.segments : [l];\n o.value = m.map((f) => r.render(e.value.id, t.id, f.type, j.Text, {\n field: t,\n ...f.items\n })).join(\",\"), x.value = r.getTemplate(e.value.id, t.id, l.type, j.Prefix), h.value = r.getTemplate(e.value.id, t.id, l.type, j.Suffix);\n }, y = (l) => {\n const m = _(l, t);\n m != null ? (u.value = m.toArray(), p(m)) : s.value = `${l} is not a valid cron segment (${t.id})`;\n }, W = (l) => {\n if (i.value == \"?\" && l.length == 0)\n return;\n const m = me(l, t);\n m != null ? (i.value = m.toCron(), p(m)) : s.value = `failed to convert ${l} to cron (${t.id})`;\n };\n y(n);\n const A = (l) => {\n const m = Array.from(l).sort((f, v) => f > v ? 1 : -1);\n u.value = m;\n };\n return g(i, (l) => {\n y(l);\n }), g(u, (l) => {\n W(l);\n }), g(e, () => {\n const l = _(i.value, t);\n l != null && p(l);\n }), {\n id: t.id,\n items: t.items,\n cron: i,\n selected: u,\n error: s,\n select: A,\n text: o,\n prefix: x,\n suffix: h\n };\n}\nfunction ie(a, e = \"*\") {\n return new Array(a).fill(e).join(\" \");\n}\nfunction Ke(a) {\n return a !== void 0;\n}\nclass Ye {\n constructor() {\n d(this, \"locale\", \"en\");\n d(this, \"format\", \"crontab\");\n }\n initialValue(e, t = \"*\") {\n return ie(e, t);\n }\n fields(e, t) {\n const n = e == \"quartz\" || e == \"spring\", r = pe(t, e), i = (s) => (u, { segmentMap: o }) => {\n if (u.cron.value == \"?\")\n return;\n const x = o.get(s);\n x && (x.cron.value = \"?\");\n };\n return [\n ...n ? [{ id: \"second\", items: r.secondItems }] : [],\n { id: \"minute\", items: r.minuteItems },\n { id: \"hour\", items: r.hourItems },\n {\n id: \"day\",\n items: r.dayItems,\n onChange: n ? i(\"dayOfWeek\") : void 0,\n segmentFactories: n ? [\n M.fromString,\n Q.fromString,\n P.fromString,\n $.fromString,\n U.fromString\n ] : void 0\n },\n { id: \"month\", items: r.monthItems },\n {\n id: \"dayOfWeek\",\n items: r.dayOfWeekItems,\n onChange: n ? i(\"day\") : void 0,\n segmentFactories: n ? [\n M.fromString,\n Q.fromString,\n P.fromString,\n $.fromString,\n U.fromString\n ] : void 0\n }\n ];\n }\n periods(e) {\n const t = e == \"quartz\" || e == \"spring\", n = t ? [{ id: \"q-second\", value: [] }] : [], r = t ? [\"second\"] : [], i = t ? \"q-\" : \"\";\n return [\n ...n,\n { id: i + \"minute\", value: [...r] },\n { id: i + \"hour\", value: [\"minute\", ...r] },\n { id: \"day\", value: [\"hour\", \"minute\", ...r] },\n { id: \"week\", value: [\"dayOfWeek\", \"hour\", \"minute\", ...r] },\n { id: \"month\", value: [\"day\", \"dayOfWeek\", \"hour\", \"minute\", ...r] },\n { id: \"year\", value: [\"month\", \"day\", \"dayOfWeek\", \"hour\", \"minute\", ...r] }\n ];\n }\n}\nfunction Ge(a, e, t) {\n const n = e.split(\" \");\n if (n.length !== t.length)\n return;\n const r = t.filter((i, s) => ![\"*\", \"?\"].includes(n[s])).map((i) => i.id);\n return a.find((i) => {\n const s = new Set(i.value);\n return r.every((u) => s.has(u));\n });\n}\nfunction Xe(a) {\n const e = new Ye(), t = a.locale ?? e.locale, n = a.format ?? e.format, { customLocale: r, fields: i = e.fields(n, t) } = a, s = a.initialValue ?? e.initialValue(i.length), u = Je(t, r), o = (a.periods ?? e.periods(n)).map((c) => ({\n ...c,\n text: c.text ?? u.getTemplate(c.id, j.Text)\n })), x = (a.initialPeriod ? o.find((c) => c.id == a.initialPeriod) : void 0) ?? Ge([...o].reverse(), s, i) ?? o[o.length - 1], h = k(s), p = k(\"\"), y = k(x), W = k(\"\"), A = k(\"\"), l = i.map((c) => Qe({ field: new le(c), l10n: u, period: y })), m = new Map(l.map((c) => [c.id, c])), f = re(() => y.value.value.map((c) => {\n const S = m.get(c);\n if (Ke(S))\n return S;\n throw Error(\"${fieldId} not found\");\n })), v = (c) => {\n if (!c) {\n h.value = ie(i.length);\n return;\n }\n const S = c.split(\" \");\n if (S.length !== i.length) {\n p.value = \"invalid pattern\";\n return;\n }\n for (let w = 0; w < S.length; w++)\n l[w].cron.value != S[w] && (l[w].cron.value = S[w]);\n p.value = \"\";\n };\n v(s);\n const O = () => {\n h.value = l.map((c) => y.value.value.includes(c.id) || c.cron.value == \"?\" ? c.cron.value : \"*\").join(\" \");\n }, I = () => {\n W.value = u.getTemplate(y.value.id, j.Prefix), A.value = u.getTemplate(y.value.id, j.Suffix);\n };\n return I(), g(h, v), g(y, () => {\n O(), I();\n }),