@vue-js-cron/light
Version:
lightweight vue.js cron editor
1 lines • 113 kB
Source Map (JSON)
{"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 oe = Object.defineProperty;\nvar le = (i, e, t) => e in i ? oe(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;\nvar d = (i, e, t) => (le(i, typeof e != \"symbol\" ? e + \"\" : e, t), t);\nimport { ref as k, watch as g, defineComponent as ne, computed as ie } from \"vue\";\nvar E = /* @__PURE__ */ ((i) => (i.Empty = \"empty\", i.Value = \"value\", i.Range = \"range\", i.EveryX = \"everyX\", i.Combined = \"combined\", i.NoSpecific = \"noSpecific\", i))(E || {}), V = /* @__PURE__ */ ((i) => (i.Prefix = \"prefix\", i.Suffix = \"suffix\", i.Text = \"text\", i))(V || {});\nclass fe {\n constructor(e) {\n d(this, \"field\");\n d(this, \"itemMap\");\n this.field = e, this.itemMap = this.field.items.reduce(\n (t, r) => (t[r.value] = r, 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 xe(i, e, t = 1) {\n const r = [];\n for (let n = i; n <= e; n += t)\n r.push(n);\n return r;\n}\nclass ce {\n constructor(e, t, r = 1) {\n d(this, \"start\");\n d(this, \"end\");\n d(this, \"step\");\n return this.start = e, this.end = t, this.step = r, new Proxy(this, {\n get: function(n, a) {\n const s = typeof a == \"string\" ? parseInt(a) : a;\n return typeof s == \"number\" && s >= 0 && s <= n.length ? n.start + n.step * s : Reflect.get(n, a);\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 I(i, e, t = (n) => n + \"\", r = (n) => n + \"\") {\n const n = [];\n for (const a of new ce(i, e))\n n.push({\n text: t(a),\n alt: r(a),\n value: a\n });\n return n;\n}\nfunction pe(i, e = \"crontab\") {\n const t = (n, a = !1) => new Date(2021, n - 1, 1).toLocaleDateString(i, {\n month: a ? \"short\" : \"long\"\n }), r = (n, a = !1) => new Date(2021, 0, 3 + n).toLocaleDateString(i, {\n weekday: a ? \"short\" : \"long\"\n });\n return {\n secondItems: I(0, 59, (n) => J(n, 2)),\n minuteItems: I(0, 59, (n) => J(n, 2)),\n hourItems: I(0, 23, (n) => J(n, 2)),\n dayItems: I(1, 31),\n monthItems: I(1, 12, t, (n) => t(n, !0)),\n dayOfWeekItems: e === \"quartz\" ? I(\n 1,\n 7,\n (n) => r(n - 1),\n (n) => r(n - 1, !0)\n ) : I(0, 6, r, (n) => r(n, !0))\n };\n}\nfunction J(i, e) {\n const t = i + \"\";\n return t.length < e ? new Array(e - t.length).fill(\"0\").join(\"\") + i : t;\n}\nfunction z(i) {\n return i && typeof i == \"object\" && !Array.isArray(i);\n}\nfunction Y(i, ...e) {\n if (!z(i) || e.length === 0)\n return;\n const t = e.shift();\n if (z(t))\n for (const [r, n] of Object.entries(t))\n z(n) ? (z(i[r]) || (i[r] = {}), Y(i[r], t[r])) : i[r] = t[r];\n return e.length > 0 && Y(i, e), i;\n}\nfunction ae(i, ...e) {\n if (e.length === 0)\n return i;\n for (const t of e[0])\n if (t in i) {\n const r = ae(i[t], ...e.slice(1));\n if (r !== void 0)\n return r;\n }\n}\nfunction de(i) {\n for (let e = 1; e < i.length; e++)\n if (i[e - 1] + 1 !== i[e])\n return !1;\n return !0;\n}\nfunction me() {\n throw new Error(\"not implemented\");\n}\nfunction ve(i, e, t = !0) {\n const r = [];\n for (let n = 0; n < i.length; n += e) {\n const a = i.slice(n, n + e);\n for (; t && a.length < e; )\n a.push(null);\n r.push(a);\n }\n return r;\n}\nclass B {\n constructor(e) {\n d(this, \"field\");\n d(this, \"type\", E.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 B(t);\n }\n}\nclass X {\n constructor(e) {\n d(this, \"field\");\n d(this, \"type\", E.Empty);\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 X(t);\n }\n static fromArray(e, t) {\n const { items: r } = t;\n if (e.length === 0)\n return new X(t);\n if (e.length !== r.length)\n return null;\n for (const n of r)\n if (!e.includes(n.value))\n return null;\n return de(r.map((n) => n.value)) ? new X(t) : null;\n }\n}\nconst L = class L {\n constructor(e, t, r) {\n d(this, \"field\");\n d(this, \"type\", E.Range);\n d(this, \"start\");\n d(this, \"end\");\n this.field = e, this.start = t, this.end = r;\n }\n toCron() {\n return `${this.start}-${this.end}`;\n }\n toArray() {\n const e = this.start, t = this.end;\n return xe(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 (!L.re.test(e))\n return null;\n const { min: r, max: n } = t, a = e.split(\"-\"), s = parseInt(a[0]), u = parseInt(a[1]);\n return s > u || s < r || u > n ? null : new L(t, s, u);\n }\n};\nd(L, \"re\", /^\\d+-\\d+$/);\nlet $ = L;\nconst Z = (i, e, t) => {\n const r = [];\n for (let n = e; n <= t; n += i)\n r.push(n);\n return r;\n}, j = class j {\n constructor(e, t, r, n) {\n d(this, \"field\");\n d(this, \"type\", E.EveryX);\n d(this, \"every\");\n d(this, \"start\");\n d(this, \"end\");\n this.field = e, this.every = t, this.start = r ?? e.min, this.end = n ?? e.max;\n }\n toCron() {\n return this.start == this.field.min && this.end == this.field.max ? `*/${this.every}` : `${this.start}-${this.end}/${this.every}`;\n }\n toArray() {\n return Z(this.every, this.start, this.end);\n }\n get items() {\n return {\n every: this.field.itemMap[this.every],\n start: this.field.itemMap[this.start],\n end: this.field.itemMap[this.end]\n };\n }\n static fromString(e, t) {\n if (!j.re.test(e))\n return null;\n const [r, n] = e.split(\"/\"), a = parseInt(n);\n if (a > t.items.length)\n return null;\n const s = e.split(\"-\").map((x) => parseInt(x)), u = r == \"*\" ? t.min : s[0], o = r == \"*\" ? t.max : s[1];\n return Z(a, u, o).length == 0 ? null : new j(t, a, u, o);\n }\n static fromArray(e, t) {\n const { min: r, max: n } = t;\n if (e.length < 3)\n return null;\n const a = e[1] - e[0];\n if (a <= 1 || e[0] != r)\n return null;\n const s = e[e.length - 1];\n if (n - s >= a)\n return null;\n for (let u = 2; u < e.length; u++)\n if (e[u] - e[u - 1] != a)\n return null;\n return new j(t, a, r, n);\n }\n};\nd(j, \"re\", /^(\\*|\\d+-\\d+)\\/\\d+$/);\nlet P = j;\nclass R {\n constructor(e, t) {\n d(this, \"field\");\n d(this, \"type\", E.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: r, max: n } = t, a = parseInt(e);\n return String(a) === e && a >= r && a <= n ? new R(t, a) : null;\n }\n static fromArray(e, t) {\n const { min: r, max: n } = t;\n if (e.length != 1)\n return null;\n const a = e[0];\n return a < r || a > n ? null : a;\n }\n}\nconst T = class T {\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 : E.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((r) => e.add(r));\n return Array.from(e);\n }\n get items() {\n return me();\n }\n static fromString(e, t) {\n const r = t.segmentFactories ?? T.segmentFactories;\n let n = [];\n for (const a of e.split(\",\")) {\n if (a === \"*\") {\n n = [new X(t)];\n break;\n }\n let s = null;\n for (const u of r)\n if (s = u(a, t), s !== null)\n break;\n if (s === null)\n return null;\n n.push(s);\n }\n return new T(t, n);\n }\n static fromArray(e, t) {\n const { min: r, max: n } = t, a = e[0], s = e[e.length - 1];\n if (a < r || s > n)\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 R(t, e[o])) : u.push(new $(t, e[o], e[x])), o = x + 1);\n return new T(t, u);\n }\n};\nd(T, \"segmentFactories\", [\n X.fromString,\n P.fromString,\n $.fromString,\n R.fromString\n]);\nlet D = T;\nfunction _(i, e) {\n return D.fromString(i, e);\n}\nfunction ye(i, e) {\n for (const t of [\n X.fromArray,\n P.fromArray,\n D.fromArray\n ]) {\n const r = t(i, e);\n if (r != null)\n return r;\n }\n return null;\n}\n/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\nvar he = Object.prototype.toString, F = Array.isArray || function(e) {\n return he.call(e) === \"[object Array]\";\n};\nfunction G(i) {\n return typeof i == \"function\";\n}\nfunction ge(i) {\n return F(i) ? \"array\" : typeof i;\n}\nfunction Q(i) {\n return i.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\nfunction ee(i, e) {\n return i != null && typeof i == \"object\" && e in i;\n}\nfunction Se(i, e) {\n return i != null && typeof i != \"object\" && i.hasOwnProperty && i.hasOwnProperty(e);\n}\nvar we = RegExp.prototype.test;\nfunction ke(i, e) {\n return we.call(i, e);\n}\nvar Ce = /\\S/;\nfunction Oe(i) {\n return !ke(Ce, i);\n}\nvar be = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"/\": \"/\",\n \"`\": \"`\",\n \"=\": \"=\"\n};\nfunction qe(i) {\n return String(i).replace(/[&<>\"'`=\\/]/g, function(t) {\n return be[t];\n });\n}\nvar We = /\\s*/, Ae = /\\s+/, te = /\\s*=/, Xe = /\\s*\\}/, Me = /#|\\^|\\/|>|\\{|&|=|!/;\nfunction Ie(i, e) {\n if (!i)\n return [];\n var t = !1, r = [], n = [], a = [], s = !1, u = !1, o = \"\", x = 0;\n function m() {\n if (s && !u)\n for (; a.length; )\n delete n[a.pop()];\n else\n a = [];\n s = !1, u = !1;\n }\n var c, h, A;\n function W(b) {\n if (typeof b == \"string\" && (b = b.split(Ae, 2)), !F(b) || b.length !== 2)\n throw new Error(\"Invalid tags: \" + b);\n c = new RegExp(Q(b[0]) + \"\\\\s*\"), h = new RegExp(\"\\\\s*\" + Q(b[1])), A = new RegExp(\"\\\\s*\" + Q(\"}\" + b[1]));\n }\n W(e || q.tags);\n for (var l = new N(i), v, f, y, O, M, p; !l.eos(); ) {\n if (v = l.pos, y = l.scanUntil(c), y)\n for (var S = 0, w = y.length; S < w; ++S)\n O = y.charAt(S), Oe(O) ? (a.push(n.length), o += O) : (u = !0, t = !0, o += \" \"), n.push([\"text\", O, v, v + 1]), v += 1, O === `\n` && (m(), o = \"\", x = 0, t = !1);\n if (!l.scan(c))\n break;\n if (s = !0, f = l.scan(Me) || \"name\", l.scan(We), f === \"=\" ? (y = l.scanUntil(te), l.scan(te), l.scanUntil(h)) : f === \"{\" ? (y = l.scanUntil(A), l.scan(Xe), l.scanUntil(h), f = \"&\") : y = l.scanUntil(h), !l.scan(h))\n throw new Error(\"Unclosed tag at \" + l.pos);\n if (f == \">\" ? M = [f, y, v, l.pos, o, x, t] : M = [f, y, v, l.pos], x++, n.push(M), f === \"#\" || f === \"^\")\n r.push(M);\n else if (f === \"/\") {\n if (p = r.pop(), !p)\n throw new Error('Unopened section \"' + y + '\" at ' + v);\n if (p[1] !== y)\n throw new Error('Unclosed section \"' + p[1] + '\" at ' + v);\n } else\n f === \"name\" || f === \"{\" || f === \"&\" ? u = !0 : f === \"=\" && W(y);\n }\n if (m(), p = r.pop(), p)\n throw new Error('Unclosed section \"' + p[1] + '\" at ' + l.pos);\n return Ee(Ve(n));\n}\nfunction Ve(i) {\n for (var e = [], t, r, n = 0, a = i.length; n < a; ++n)\n t = i[n], t && (t[0] === \"text\" && r && r[0] === \"text\" ? (r[1] += t[1], r[3] = t[3]) : (e.push(t), r = t));\n return e;\n}\nfunction Ee(i) {\n for (var e = [], t = e, r = [], n, a, s = 0, u = i.length; s < u; ++s)\n switch (n = i[s], n[0]) {\n case \"#\":\n case \"^\":\n t.push(n), r.push(n), t = n[4] = [];\n break;\n case \"/\":\n a = r.pop(), a[5] = n[2], t = r.length > 0 ? r[r.length - 1][4] : e;\n break;\n default:\n t.push(n);\n }\n return e;\n}\nfunction N(i) {\n this.string = i, this.tail = i, this.pos = 0;\n}\nN.prototype.eos = function() {\n return this.tail === \"\";\n};\nN.prototype.scan = function(e) {\n var t = this.tail.match(e);\n if (!t || t.index !== 0)\n return \"\";\n var r = t[0];\n return this.tail = this.tail.substring(r.length), this.pos += r.length, r;\n};\nN.prototype.scanUntil = function(e) {\n var t = this.tail.search(e), r;\n switch (t) {\n case -1:\n r = this.tail, this.tail = \"\";\n break;\n case 0:\n r = \"\";\n break;\n default:\n r = this.tail.substring(0, t), this.tail = this.tail.substring(t);\n }\n return this.pos += r.length, r;\n};\nfunction U(i, e) {\n this.view = i, this.cache = { \".\": this.view }, this.parent = e;\n}\nU.prototype.push = function(e) {\n return new U(e, this);\n};\nU.prototype.lookup = function(e) {\n var t = this.cache, r;\n if (t.hasOwnProperty(e))\n r = t[e];\n else {\n for (var n = this, a, s, u, o = !1; n; ) {\n if (e.indexOf(\".\") > 0)\n for (a = n.view, s = e.split(\".\"), u = 0; a != null && u < s.length; )\n u === s.length - 1 && (o = ee(a, s[u]) || Se(a, s[u])), a = a[s[u++]];\n else\n a = n.view[e], o = ee(n.view, e);\n if (o) {\n r = a;\n break;\n }\n n = n.parent;\n }\n t[e] = r;\n }\n return G(r) && (r = r.call(this.view)), r;\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 r = this.templateCache, n = e + \":\" + (t || q.tags).join(\":\"), a = typeof r < \"u\", s = a ? r.get(n) : void 0;\n return s == null && (s = Ie(e, t), a && r.set(n, s)), s;\n};\nC.prototype.render = function(e, t, r, n) {\n var a = this.getConfigTags(n), s = this.parse(e, a), u = t instanceof U ? t : new U(t, void 0);\n return this.renderTokens(s, u, r, e, n);\n};\nC.prototype.renderTokens = function(e, t, r, n, a) {\n for (var s = \"\", u, o, x, m = 0, c = e.length; m < c; ++m)\n x = void 0, u = e[m], o = u[0], o === \"#\" ? x = this.renderSection(u, t, r, n, a) : o === \"^\" ? x = this.renderInverted(u, t, r, n, a) : o === \">\" ? x = this.renderPartial(u, t, r, a) : o === \"&\" ? x = this.unescapedValue(u, t) : o === \"name\" ? x = this.escapedValue(u, t, a) : o === \"text\" && (x = this.rawValue(u)), x !== void 0 && (s += x);\n return s;\n};\nC.prototype.renderSection = function(e, t, r, n, a) {\n var s = this, u = \"\", o = t.lookup(e[1]);\n function x(h) {\n return s.render(h, t, r, a);\n }\n if (o) {\n if (F(o))\n for (var m = 0, c = o.length; m < c; ++m)\n u += this.renderTokens(e[4], t.push(o[m]), r, n, a);\n else if (typeof o == \"object\" || typeof o == \"string\" || typeof o == \"number\")\n u += this.renderTokens(e[4], t.push(o), r, n, a);\n else if (G(o)) {\n if (typeof n != \"string\")\n throw new Error(\"Cannot use higher-order sections without the original template\");\n o = o.call(t.view, n.slice(e[3], e[5]), x), o != null && (u += o);\n } else\n u += this.renderTokens(e[4], t, r, n, a);\n return u;\n }\n};\nC.prototype.renderInverted = function(e, t, r, n, a) {\n var s = t.lookup(e[1]);\n if (!s || F(s) && s.length === 0)\n return this.renderTokens(e[4], t, r, n, a);\n};\nC.prototype.indentPartial = function(e, t, r) {\n for (var n = t.replace(/[^ \\t]/g, \"\"), a = e.split(`\n`), s = 0; s < a.length; s++)\n a[s].length && (s > 0 || !r) && (a[s] = n + a[s]);\n return a.join(`\n`);\n};\nC.prototype.renderPartial = function(e, t, r, n) {\n if (r) {\n var a = this.getConfigTags(n), s = G(r) ? r(e[1]) : r[e[1]];\n if (s != null) {\n var u = e[6], o = e[5], x = e[4], m = s;\n o == 0 && x && (m = this.indentPartial(s, x, u));\n var c = this.parse(m, a);\n return this.renderTokens(c, t, r, m, n);\n }\n }\n};\nC.prototype.unescapedValue = function(e, t) {\n var r = t.lookup(e[1]);\n if (r != null)\n return r;\n};\nC.prototype.escapedValue = function(e, t, r) {\n var n = this.getConfigEscape(r) || q.escape, a = t.lookup(e[1]);\n if (a != null)\n return typeof a == \"number\" && n === q.escape ? String(a) : n(a);\n};\nC.prototype.rawValue = function(e) {\n return e[1];\n};\nC.prototype.getConfigTags = function(e) {\n return F(e) ? e : e && typeof e == \"object\" ? e.tags : void 0;\n};\nC.prototype.getConfigEscape = function(e) {\n if (e && typeof e == \"object\" && !F(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(i) {\n H.templateCache = i;\n },\n /**\n * Gets the default or overridden caching object from the default writer.\n */\n get templateCache() {\n return H.templateCache;\n }\n}, H = new C();\nq.clearCache = function() {\n return H.clearCache();\n};\nq.parse = function(e, t) {\n return H.parse(e, t);\n};\nq.render = function(e, t, r, n) {\n if (typeof e != \"string\")\n throw new TypeError('Invalid template! Template should be a \"string\" but \"' + ge(e) + '\" was given as the first argument for mustache#render(template, view, partials)');\n return H.render(e, t, r, n);\n};\nq.escape = qe;\nq.Scanner = N;\nq.Context = U;\nq.Writer = C;\nconst re = {\n \"*\": {\n prefix: \"每\",\n suffix: \"\",\n text: \"未知\",\n \"*\": {\n empty: { text: \"每 {{field.id}}\" },\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n everyX: { text: \"每 {{every.value}}\" }\n },\n month: {\n \"*\": { prefix: \"的\" },\n empty: { text: \"每月\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"的\" },\n empty: { text: \"每日\" },\n value: { text: \"{{value.alt}}号\" },\n range: { text: \"{{start.alt}}号-{{end.alt}}号\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"的\" },\n empty: { text: \"一周的每一天\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n hour: {\n \"*\": { prefix: \"的\" },\n empty: { text: \"每小时\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n empty: { text: \"每分钟\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n empty: { text: \"每秒\" }\n }\n },\n minute: {\n text: \"分\"\n },\n hour: {\n text: \"小时\",\n minute: {\n \"*\": {\n prefix: \":\",\n suffix: \"分钟\"\n },\n empty: { text: \"每\" }\n }\n },\n day: {\n text: \"天\"\n },\n week: {\n text: \"周\",\n dayOfWeek: {\n \"*\": { prefix: \"的\" },\n empty: { 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 empty: { text: \"每\" }\n }\n },\n \"q-hour\": {\n text: \"小时\",\n minute: {\n \"*\": {\n prefix: \":\"\n }\n }\n }\n}, je = {\n \"*\": {\n prefix: \"Hver\",\n suffix: \"\",\n text: \"Ukendt\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n everyX: { text: \"hver {{every.value}}\" }\n },\n month: {\n \"*\": { prefix: \"i\" },\n empty: { text: \"hver måned\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"og\" },\n empty: { 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 empty: { 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 empty: { text: \"hver time\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n empty: { text: \"hvert minut\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n empty: { 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 empty: { 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 empty: { text: \"hvert\" }\n }\n },\n \"q-hour\": {\n text: \"Time\",\n minute: {\n \"*\": {\n prefix: \"på\"\n }\n }\n }\n}, Te = {\n \"*\": {\n prefix: \"Jede\",\n suffix: \"\",\n text: \"Unknown\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n everyX: { text: \"alle {{every.value}}\" }\n },\n month: {\n \"*\": { prefix: \"im\" },\n empty: {\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 empty: {\n prefix: \"an\",\n text: \"jedem Tag\"\n },\n everyX: {\n prefix: \"\",\n text: \"alle {{every.value}} Tage\"\n },\n noSpecific: {\n prefix: \"an\",\n text: \"keinem bestimmten Tag\"\n }\n },\n dayOfWeek: {\n \"*\": { prefix: \"am\" },\n empty: {\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 empty: {\n prefix: \"zu\",\n text: \"jeder Stunde\"\n },\n everyX: {\n prefix: \"\",\n text: \"alle {{every.value}} Stunden\"\n }\n },\n minute: {\n \"*\": { prefix: \":\" },\n empty: { text: \"jede Minute\" },\n everyX: {\n prefix: \"\",\n text: \"alle {{every.value}} Minuten\"\n }\n },\n second: {\n \"*\": { prefix: \":\" },\n empty: { text: \"jede Sekunde\" },\n everyX: {\n prefix: \"\",\n text: \"alle {{every.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 empty: { 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 empty: { text: \"every {{field.id}}\" },\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n everyX: { text: \"every {{every.value}}\" }\n },\n month: {\n \"*\": { prefix: \"in\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"on\" },\n noSpecific: {\n text: \"no specific day\"\n }\n },\n dayOfWeek: {\n \"*\": { prefix: \"on\" },\n empty: { text: \"every day of the week\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\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 empty: { 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 empty: { 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 empty: { text: \"todos los {{ field.id }}\" },\n value: { text: \"{{ value.text }}\" },\n range: { text: \"{{ start.text }}-{{ end.text }}\" },\n everyX: { text: \"todos/as {{ every.value }}\" }\n },\n month: {\n \"*\": { prefix: \"en\" },\n empty: { text: \"todos los meses\" },\n value: { text: \"{{ value.alt }}\" },\n range: { text: \"{{ start.alt }}-{{ end.alt }}\" }\n },\n day: {\n \"*\": { prefix: \"en\" },\n empty: { text: \"todos los días\" },\n value: { text: \"los días {{ value.alt }}\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"de\" },\n empty: { 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 empty: { text: \"todas las horas\" },\n value: { text: \"las {{ value.text }}\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n empty: { 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 empty: { 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}, Re = {\n \"*\": {\n prefix: \"Toutes\",\n suffix: \"\",\n text: \"Inconnu\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n everyX: { text: \"tous les {{every.value}}\" }\n },\n month: {\n \"*\": { prefix: \"en\" },\n empty: { 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 empty: { prefix: \"à\", text: \"tous les jours\" },\n everyX: { prefix: \"\", text: \"tous les {{every.value}} jours\" },\n noSpecific: { prefix: \"à\", text: \"aucun jour particulier\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"le\" },\n empty: { 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 empty: { prefix: \"à\", text: \"toutes les heures\" },\n everyX: { prefix: \"\", text: \"toutes les {{every.value}} heures\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n empty: { text: \"toutes les minutes\" },\n everyX: { prefix: \"\", text: \"toutes les {{every.value}} minutes\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n empty: { text: \"toutes les secondes\" },\n everyX: { prefix: \"\", text: \"toutes les {{every.value}} secondes\" }\n }\n },\n minute: { text: \"Minute\" },\n hour: {\n text: \"Heure\",\n minute: { \"*\": { prefix: \"à\", suffix: \"minute(s)\" }, empty: { 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}, Ue = {\n \"*\": {\n prefix: \"בכל\",\n suffix: \"\",\n text: \"לא ידוע\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n everyX: { text: \"כל {{every.value}}\" }\n },\n month: {\n \"*\": { prefix: \"ב\" },\n empty: { text: \"כל חודש\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"ב\" },\n empty: { text: \"כל יום\" },\n value: { text: \"יום {{value.alt}} לחודש\" },\n noSpecific: {\n text: \"ללא יום מוגדר\"\n }\n },\n dayOfWeek: {\n \"*\": { prefix: \"ב\" },\n empty: { text: \"כל יום מימות השבוע\" },\n value: { text: \"ימי {{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: {\n text: \"ללא יום בשבוע מוגדר\"\n }\n },\n hour: {\n \"*\": { prefix: \"ב\" },\n empty: { text: \"כל שעה\" },\n value: { text: \"שעה {{value.text}}\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n empty: { text: \"כל דקה\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n empty: { text: \"כל שניה\" }\n }\n },\n minute: {\n text: \"דקה\"\n },\n hour: {\n text: \"שעה\",\n minute: {\n \"*\": {\n prefix: \"ב\",\n suffix: \"דקות\"\n },\n empty: { 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 empty: { text: \"כל\" }\n }\n },\n \"q-hour\": {\n text: \"שעה\",\n minute: {\n \"*\": {\n prefix: \"ב\"\n }\n }\n }\n}, Fe = {\n \"*\": {\n prefix: \"हर\",\n suffix: \"\",\n text: \"अज्ञात\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n everyX: { text: \"{{every.value}} हर\" }\n },\n month: {\n \"*\": { prefix: \"में\" },\n empty: { prefix: \"के\", text: \"हर महीने\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"के\" },\n empty: { prefix: \"पर\", text: \"हर दिन\" },\n everyX: { prefix: \"\", text: \"{{every.value}} दिन हर\" },\n noSpecific: { prefix: \"पर\", text: \"कोई विशेष दिन नहीं\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"पर\" },\n empty: { prefix: \"पर\", text: \"हर सप्ताह\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: { prefix: \"और\", text: \"कोई विशेष सप्ताह नहीं\" }\n },\n hour: {\n \"*\": { prefix: \"को\" },\n empty: { prefix: \"पर\", text: \"हर घंटे\" },\n everyX: { prefix: \"\", text: \"{{every.value}} घंटे हर\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n empty: { text: \"हर मिनट\" },\n everyX: { prefix: \"\", text: \"{{every.value}} मिनट हर\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n empty: { text: \"हर सेकंड\" },\n everyX: { prefix: \"\", text: \"{{every.value}} सेकंड हर\" }\n }\n },\n minute: { text: \"मिनट\" },\n hour: { text: \"घंटा\", minute: { \"*\": { prefix: \"पर\", suffix: \"मिनट\" }, empty: { 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: \"毎\",\n suffix: \"\",\n text: \"不明\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n everyX: { text: \"{{every.value}}ごとに\" }\n },\n month: {\n \"*\": { prefix: \"に\" },\n empty: { prefix: \"の\", text: \"毎月\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"の\" },\n empty: { prefix: \"に\", text: \"毎日\" },\n everyX: { prefix: \"\", text: \"{{every.value}}日ごとに\" },\n noSpecific: { prefix: \"に\", text: \"特定の日はなし\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"の\" },\n empty: { prefix: \"に\", text: \"毎週\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: { prefix: \"と\", text: \"特定の曜日はなし\" }\n },\n hour: {\n \"*\": { prefix: \"の\" },\n empty: { prefix: \"に\", text: \"毎時\" },\n everyX: { prefix: \"\", text: \"{{every.value}}時間ごとに\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n empty: { text: \"毎分\" },\n everyX: { prefix: \"\", text: \"{{every.value}}分ごとに\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n empty: { text: \"毎秒\" },\n everyX: { prefix: \"\", text: \"{{every.value}}秒ごとに\" }\n }\n },\n minute: { text: \"分\" },\n hour: { text: \"時\", minute: { \"*\": { prefix: \"に\", suffix: \"分\" }, empty: { 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}, De = {\n \"*\": {\n prefix: \"매\",\n suffix: \"\",\n text: \"알 수 없음\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n everyX: { text: \"{{every.value}}마다\" }\n },\n month: {\n \"*\": { prefix: \"에\" },\n empty: { prefix: \"의\", text: \"매월\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"의\" },\n empty: { prefix: \"에\", text: \"매일\" },\n everyX: { prefix: \"\", text: \"{{every.value}}일마다\" },\n noSpecific: { prefix: \"에\", text: \"특정한 날 없음\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"의\" },\n empty: { prefix: \"에\", text: \"매주\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: { prefix: \"과\", text: \"특정한 요일 없음\" }\n },\n hour: {\n \"*\": { prefix: \"의\" },\n empty: { prefix: \"에\", text: \"매시\" },\n everyX: { prefix: \"\", text: \"{{every.value}}시간마다\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n empty: { text: \"매분\" },\n everyX: { prefix: \"\", text: \"{{every.value}}분마다\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n empty: { text: \"매초\" },\n everyX: { prefix: \"\", text: \"{{every.value}}초마다\" }\n }\n },\n minute: { text: \"분\" },\n hour: { text: \"시\", minute: { \"*\": { prefix: \"에\", suffix: \"분\" }, empty: { 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}, He = {\n \"*\": {\n prefix: \"Todo(a)\",\n suffix: \"\",\n text: \"Desconhecido\",\n \"*\": {\n empty: { text: \"todo {{field.id}}\" },\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n everyX: { text: \"todo {{every.value}}\" }\n },\n month: {\n \"*\": { prefix: \"de\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n empty: { text: \"todo mês\" }\n },\n day: {\n \"*\": { prefix: \"no(s) dia(s)\" },\n empty: { text: \"todos\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"de\" },\n empty: { text: \"todos dias da semana\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n hour: {\n \"*\": { prefix: \"às\" },\n empty: { text: \"cada hora\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n empty: { 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 empty: { 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}, Ne = {\n \"*\": {\n prefix: \"Каждый\",\n suffix: \"\",\n text: \"Неизвестно\",\n \"*\": {\n value: { text: \"{{value.text}}\" },\n range: { text: \"{{start.text}}-{{end.text}}\" },\n everyX: { text: \"каждый {{every.value}}\" }\n },\n month: {\n \"*\": { prefix: \"в\" },\n empty: { prefix: \"в\", text: \"каждом месяце\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" }\n },\n day: {\n \"*\": { prefix: \"в\" },\n empty: { prefix: \"в\", text: \"каждый день\" },\n everyX: { prefix: \"\", text: \"каждые {{every.value}} дня\" },\n noSpecific: { prefix: \"в\", text: \"нет определенного дня\" }\n },\n dayOfWeek: {\n \"*\": { prefix: \"по\" },\n empty: { prefix: \"по\", text: \"каждому дню недели\" },\n value: { text: \"{{value.alt}}\" },\n range: { text: \"{{start.alt}}-{{end.alt}}\" },\n noSpecific: { prefix: \"и\", text: \"нет определенного дня недели\" }\n },\n hour: {\n \"*\": { prefix: \"в\" },\n empty: { prefix: \"в\", text: \"каждый час\" },\n everyX: { prefix: \"\", text: \"каждые {{every.value}} часа\" }\n },\n minute: {\n \"*\": { prefix: \":\" },\n empty: { text: \"каждую минуту\" },\n everyX: { prefix: \"\", text: \"каждые {{every.value}} минуты\" }\n },\n second: {\n \"*\": { prefix: \":\" },\n empty: { text: \"каждую секунду\" },\n everyX: { prefix: \"\", text: \"каждые {{every.value}} секунды\" }\n }\n },\n minute: { text: \"Минута\" },\n hour: {\n text: \"Час\",\n minute: { \"*\": { prefix: \"в\", suffix: \"минут(а/ы)\" }, empty: { 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}, K = {\n empty: {},\n en: $e,\n de: Te,\n pt: He,\n es: Pe,\n da: je,\n zh: re,\n \"zh-cn\": re,\n he: Ue,\n ru: Ne,\n fr: Re,\n hi: Fe,\n ja: Le,\n ko: De\n};\nclass ze {\n constructor(e) {\n d(this, \"dict\");\n this.dict = e;\n }\n getLocaleStr(...e) {\n const t = e.map((r) => [r, \"*\"]);\n return ae(this.dict, ...t) || \"\";\n }\n render(e, t, r, n, a) {\n const s = this.getLocaleStr(e, t, r, n);\n return q.render(s, a || {});\n }\n}\nfunction Be(i, e) {\n const [t] = i.split(\"-\"), r = K[i.toLowerCase()] || K[t.toLowerCase()] || K.en, n = Y(r, e || {});\n return new ze(n);\n}\nfunction Je(i) {\n const { period: e, field: t, initialCron: r = \"*\", locale: n } = i, a = k(r), s = k(\"\"), u = k([]), o = k(\"\"), x = k(\"\"), m = k(\"\"), c = (l) => {\n const v = l instanceof D ? l.segments : [l];\n o.value = v.map((f) => n.render(e.value.id, t.id, f.type, V.Text, {\n field: t,\n ...f.items\n })).join(\",\"), x.value = n.getLocaleStr(e.value.id, t.id, l.type, V.Prefix), m.value = n.getLocaleStr(e.value.id, t.id, l.type, V.Suffix);\n }, h = (l) => {\n const v = _(l, t);\n v != null ? (u.value = v.toArray(), c(v)) : s.value = `${l} is not a valid cron segment (${t.id})`;\n }, A = (l) => {\n if (a.value == \"?\" && l.length == 0)\n return;\n const v = ye(l, t);\n v != null ? (a.value = v.toCron(), c(v)) : s.value = `failed to convert ${l} to cron (${t.id})`;\n };\n h(r);\n const W = (l) => {\n const v = Array.from(l).sort((f, y) => f > y ? 1 : -1);\n u.value = v;\n };\n return g(a, (l) => {\n h(l);\n }), g(u, (l) => {\n A(l);\n }), g(e, () => {\n const l = _(a.value, t);\n l != null && c(l);\n }), {\n id: t.id,\n items: t.items,\n cron: a,\n selected: u,\n error: s,\n select: W,\n text: o,\n prefix: x,\n suffix: m\n };\n}\nfunction se(i, e = \"*\") {\n return new Array(i).fill(e).join(\" \");\n}\nfunction Qe(i) {\n return i !== void 0;\n}\nclass Ke {\n constructor() {\n d(this, \"locale\", \"en\");\n d(this, \"format\", \"crontab\");\n }\n initialValue(e, t = \"*\") {\n return se(e, t);\n }\n fields(e, t) {\n const r = e == \"quartz\" || e == \"spring\", n = pe(t, e), a = (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 ...r ? [{ id: \"second\", items: n.secondItems }] : [],\n { id: \"minute\", items: n.minuteItems },\n { id: \"hour\", items: n.hourItems },\n {\n id: \"day\",\n items: n.dayItems,\n onChange: r ? a(\"dayOfWeek\") : void 0,\n segmentFactories: r ? [\n X.fromString,\n B.fromString,\n P.fromString,\n $.fromString,\n R.fromString\n ] : void 0\n },\n { id: \"month\", items: n.monthItems },\n {\n id: \"dayOfWeek\",\n items: n.dayOfWeekItems,\n onChange: r ? a(\"day\") : void 0,\n segmentFactories: r ? [\n X.fromString,\n B.fromString,\n P.fromString,\n $.fromString,\n R.fromString\n ] : void 0\n }\n ];\n }\n periods(e) {\n const t = e == \"quartz\" || e == \"spring\", r = t ? [{ id: \"q-second\", value: [] }] : [], n = t ? [\"second\"] : [], a = t ? \"q-\" : \"\";\n return [\n ...r,\n { id: a + \"minute\", value: [...n] },\n { id: a + \"hour\", value: [\"minute\", ...n] },\n { id: \"day\", value: [\"hour\", \"minute\", ...n] },\n { id: \"week\", value: [\"dayOfWeek\", \"hour\", \"minute\", ...n] },\n { id: \"month\", value: [\"day\", \"dayOfWeek\", \"hour\", \"minute\", ...n] },\n { id: \"year\", value: [\"month\", \"day\", \"dayOfWeek\", \"hour\", \"minute\", ...n] }\n ];\n }\n}\nfunction Ye(i, e, t) {\n const r = e.split(\" \");\n if (r.length !== t.length)\n return;\n const n = t.filter((a, s) => ![\"*\", \"?\"].includes(r[s])).map((a) => a.id);\n return i.find((a) => {\n const s = new Set(a.value);\n return n.every((u) => s.has(u));\n });\n}\nfunction Ge(i) {\n const e = new Ke(), t = i.locale ?? e.locale, r = i.format ?? e.format, { customLocale: n, fields: a = e.fields(r, t) } = i, s = i.initialValue ?? e.initialValue(a.length), u = Be(t, n), o = (i.periods ?? e.periods(r)).map((p) => ({\n ...p,\n text: p.text ?? u.getLocaleStr(p.id, V.Text)\n })), x = (i.initialPeriod ? o.find((p) => p.id == i.initialPeriod) : void 0) ?? Ye([...o].reverse(), s, a) ?? o[o.length - 1], m = k(s), c = k(\"\"), h = k(x), A = k(\"\"), W = k(\"\"), l = a.map((p) => Je({ field: new fe(p), locale: u, period: h })), v = new Map(l.map((p) => [p.id, p])), f = ie(() => h.value.value.map((p) => {\n const S = v.get(p);\n if (Qe(S))\n return S;\n throw Error(\"${fieldId} not found\");\n })), y = (p) => {\n if (!p) {\n m.value = se(a.length);\n return;\n }\n const S = p.split(\" \");\n if (S.length !== a.length) {\n c.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 c.value = \"\";\n };\n y(s);\n const O = () => {\n m.value = l.map((p) => h.value.value.includes(p.id) || p.cron.value == \"?\" ? p.cron.value : \"*\").join(\" \");\n }, M = () => {\n A.value = u.getLocaleStr(h.value.id, V.Prefix), W.value = u.getLocaleStr(h.value.id, V.Suffix);\n };\n return M(), g(m, y), g(h, () => {\n O(), M();\n }), l.forEach((p, S) => {\n g(p.cron, () => {\n var w, b;\n (b = (w = a[S]).onChange) == null || b.call(w, p, { segmentMap: v }), O();\n }), g(p.error, (w) => {\n c.value = w;\n });\n }), {\n cron: m,\n error: c,\n segments: l,\n selected: f,\n period: {\n select: (p) => {\n const S = o.map((w) => w.id).indexOf(p);\n S != -1 && (h.value = o[S]);\n },\n selected: h,\n items: o,\n prefix: A,\n suffix: W\n }\n };\n}\nfunction Ze(i, { emit: e }) {\n const t = {\n ...i,\n initialValue: i.modelValue,\n initialPeriod: i.period\n }, r = Ge(t);\n return g(\n () => i.modelValue,\n (n) => {\n n && (r.cron.value = n);\n }\n ),