{"version":3,"file":"core.umd.cjs","names":[],"sources":["../src/types.ts","../src/util.ts","../src/cron.ts","../../node_modules/mustache/mustache.mjs","../src/locale/cn.ts","../src/locale/da.ts","../src/locale/de.ts","../src/locale/en.ts","../src/locale/es.ts","../src/locale/fr.ts","../src/locale/he.ts","../src/locale/hi.ts","../src/locale/it.ts","../src/locale/ja.ts","../src/locale/ko.ts","../src/locale/pt.ts","../src/locale/ru.ts","../src/locale/uk.ts","../src/locale/index.ts","../src/components/cron-segment.ts","../src/components/cron-core.ts","../src/components/select.ts","../src/index.ts"],"sourcesContent":["import type { CronContext } from './components/cron-core'\nimport type { UseCronSegmentReturn } from './components/cron-segment'\n\nexport type CronFormat = 'crontab' | 'quartz' | 'spring'\n\nexport interface CronSegment {\n  field: FieldWrapper\n  type: FieldPattern\n  toCron: () => string\n  toArray: () => number[]\n  items: Record<string, FieldItem>\n}\n\nexport type SegmentFromArray = (arr: number[], field: FieldWrapper) => CronSegment | null\nexport type SegmentFromString = (str: string, field: FieldWrapper) => CronSegment | null\n\nexport enum FieldPattern {\n  Any = 'any', // *\n  Value = 'value', // a\n  Range = 'range', // a-b\n  Step = 'step', // */x\n  StepFrom = `stepFrom`, // a/x\n  RangeStep = 'rangeStep', // a-b/x\n  Combined = 'combined',\n  NoSpecific = 'noSpecific', // ?\n}\n\nexport enum TextPosition {\n  Prefix = 'prefix',\n  Suffix = 'suffix',\n  Text = 'text',\n}\n\nexport interface FieldItem {\n  value: number\n  text: string\n  alt: string\n}\n\nexport interface Field {\n  id: string\n  items: FieldItem[]\n  onChange?: (segment: UseCronSegmentReturn, ctx: CronContext) => void\n  segmentFactories?: SegmentFromString[]\n  default?: string\n}\n\nexport interface Period {\n  /**\n   * The id of the period\n   */\n  id: string\n\n  /**\n   * The value determines which fields are visible\n   */\n  value: string[]\n\n  /**\n   * The display name of the period\n   */\n  text?: string\n}\n\ninterface FieldContext {\n  format: CronFormat\n}\nexport class FieldWrapper {\n  field: Field\n  itemMap: Record<number, FieldItem>\n  ctx: FieldContext\n\n  constructor(field: Field, ctx: FieldContext) {\n    this.field = field\n    this.ctx = ctx\n\n    this.itemMap = this.field.items.reduce(\n      (acc, item) => {\n        acc[item.value] = item\n        return acc\n      },\n      {} as Record<number, FieldItem>,\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\n  get min() {\n    return this.items[0].value\n  }\n\n  get max() {\n    return this.items[this.items.length - 1].value\n  }\n\n  getItem(value: number) {\n    return this.itemMap[value]\n  }\n}\n","import type { CronFormat, FieldItem } from './types'\n\nfunction range(start: number, end: number, step = 1) {\n  const r = []\n  for (let i = start; i <= end; i += step) {\n    r.push(i)\n  }\n  return r\n}\n\nclass Range {\n  [name: string]: number\n  start: number\n  end: number\n  step: number\n\n  constructor(start: number, end: number, step = 1) {\n    this.start = start\n    this.end = end\n    this.step = step\n\n    return new Proxy(this, {\n      get: function (target, prop) {\n        const i = typeof prop === 'string' ? parseInt(prop) : prop\n        if (typeof i === 'number' && i >= 0 && i <= target.length) {\n          return target.start + target.step * i\n        }\n        return Reflect.get(target, prop)\n      },\n    })\n  }\n\n  get length() {\n    return (this.end - this.start) / this.step + 1\n  }\n\n  [Symbol.iterator]() {\n    let index = -1\n    return {\n      next: () => {\n        return { value: this[++index], done: !(this[index + 1] !== undefined) }\n      },\n    }\n  }\n}\n\nexport type toText = (value: number) => string\n\n/**\n * generate items for fields\n * @param min - first value\n * @param max - last value\n * @param genText - returns a string representation of value\n * @param genAltText - returns an alternative string representation of value\n * @returns array of items\n */\nfunction genItems(\n  min: number,\n  max: number,\n  genText: toText = (value) => {\n    return value + ''\n  },\n  genAltText: toText = (value) => {\n    return value + ''\n  },\n): FieldItem[] {\n  const res = []\n  for (const i of new Range(min, max)) {\n    res.push({\n      text: genText(i),\n      alt: genAltText(i),\n      value: i,\n    })\n  }\n  return res\n}\n\n/**\n *\n * @param locale - locale code, e.g.: en, en-GB de-DE\n * @param [format='crontab'] format of cron expression\n * @returns items for minute, hour, day, month and day of week\n */\nfunction defaultItems(localeCode: string, format: CronFormat = 'crontab') {\n  const monthName = (month: number, short: boolean = false) => {\n    return new Date(2021, month - 1, 1).toLocaleDateString(localeCode, {\n      month: short ? 'short' : 'long',\n    })\n  }\n\n  const weekdayName = (weekday: number, short: boolean = false) => {\n    // if weekday is 0, this is the first sunday in 2021\n    return new Date(2021, 0, 3 + weekday).toLocaleDateString(localeCode, {\n      weekday: short ? 'short' : 'long',\n    })\n  }\n\n  return {\n    secondItems: genItems(0, 59, (value) => pad(value, 2)),\n    minuteItems: genItems(0, 59, (value) => pad(value, 2)),\n    hourItems: genItems(0, 23, (value) => pad(value, 2)),\n    dayItems: genItems(1, 31),\n    monthItems: genItems(1, 12, monthName, (value) => monthName(value, true)),\n    dayOfWeekItems:\n      format === 'quartz'\n        ? genItems(\n            1,\n            7,\n            (value) => weekdayName(value - 1),\n            (value) => weekdayName(value - 1, true),\n          )\n        : genItems(0, 6, weekdayName, (value) => weekdayName(value, true)),\n  }\n}\n\n/**\n * pads numbers\n * @param n - number to pad\n * @param width - length of final string\n * @example\n * ```\n * //returns \"001\"\n * util.pad(1,3)\n * ```\n * @returns the padded number\n */\nfunction pad(n: number, width: number) {\n  const s = n + ''\n  return s.length < width ? new Array(width - s.length).fill('0').join('') + n : s\n}\n\n/**\n * determines whether the passed value is an object\n * @returns true if value is an object, otherwise false\n */\nfunction isObject(value: any): value is { [key: string]: any } {\n  return value && typeof value === 'object' && !Array.isArray(value)\n}\n\n/**\n * copies (deep copy) all properties from each source to target\n */\nfunction deepMerge(target: Object, ...sources: { [key: string]: any }[]) {\n  if (!isObject(target) || sources.length === 0) return\n  const source = sources.shift()\n\n  if (isObject(source)) {\n    for (const [key, value] of Object.entries(source)) {\n      if (isObject(value)) {\n        if (!isObject(target[key])) {\n          target[key] = {}\n        }\n        deepMerge(target[key], source[key])\n      } else {\n        target[key] = source[key]\n      }\n    }\n  }\n\n  if (sources.length > 0) deepMerge(target, ...sources)\n  return target\n}\n\nfunction traverse(obj: { [key: string]: any }, ...keys: string[][]): any {\n  if (keys.length === 0) {\n    return obj\n  }\n\n  for (const key of keys[0]) {\n    if (key in obj) {\n      const res = traverse(obj[key], ...keys.slice(1))\n      if (res !== undefined) {\n        return res\n      }\n    }\n  }\n}\n\nfunction isSquence(numbers: number[]) {\n  for (let i = 1; i < numbers.length; i++) {\n    if (numbers[i - 1] + 1 !== numbers[i]) {\n      return false\n    }\n  }\n  return true\n}\n\nfunction unimplemented(): never {\n  throw new Error('not implemented')\n}\n\nfunction splitArray<T>(arr: T[], chunkSize: number, fill: boolean = true): (T | null)[][] {\n  const res = []\n\n  for (let i = 0; i < arr.length; i += chunkSize) {\n    const slice: (T | null)[] = arr.slice(i, i + chunkSize)\n    while (fill && slice.length < chunkSize) {\n      slice.push(null)\n    }\n    res.push(slice)\n  }\n\n  return res\n}\n\nexport {\n  deepMerge,\n  defaultItems,\n  genItems,\n  isObject,\n  isSquence,\n  pad,\n  Range,\n  range,\n  splitArray,\n  traverse,\n  unimplemented,\n}\n","import { FieldPattern, FieldWrapper, type CronSegment, type SegmentFromString } from './types'\nimport { isSquence, range, unimplemented } from './util'\n\nclass NoSpecificSegment implements CronSegment {\n  field: FieldWrapper\n  type: FieldPattern = FieldPattern.NoSpecific\n\n  constructor(field: FieldWrapper) {\n    this.field = field\n  }\n\n  toCron() {\n    return '?'\n  }\n\n  toArray() {\n    return []\n  }\n\n  get items() {\n    return {}\n  }\n\n  static fromString(str: string, field: FieldWrapper) {\n    if (str !== '?') {\n      return null\n    }\n    return new NoSpecificSegment(field)\n  }\n}\n\nclass AnySegment implements CronSegment {\n  field: FieldWrapper\n  type: FieldPattern = FieldPattern.Any\n\n  constructor(field: FieldWrapper) {\n    this.field = field\n  }\n\n  toCron() {\n    return '*'\n  }\n\n  toArray() {\n    return []\n  }\n\n  get items() {\n    return {}\n  }\n\n  static fromString(str: string, field: FieldWrapper) {\n    if (str !== '*') {\n      return null\n    }\n    return new AnySegment(field)\n  }\n\n  static fromArray(arr: number[], field: FieldWrapper) {\n    const { items } = field\n\n    if (arr.length === 0) {\n      return new AnySegment(field)\n    }\n    if (arr.length !== items.length) {\n      return null\n    }\n\n    for (const item of items) {\n      if (!arr.includes(item.value)) {\n        return null\n      }\n    }\n    if (!isSquence(items.map((item) => item.value))) {\n      return null\n    }\n    return new AnySegment(field)\n  }\n}\n\nclass RangeSegment implements CronSegment {\n  static re = /^\\d+-\\d+$/\n\n  field: FieldWrapper\n  type: FieldPattern = FieldPattern.Range\n  start: number\n  end: number\n\n  constructor(field: FieldWrapper, start: number, end: number) {\n    this.field = field\n    this.start = start\n    this.end = end\n  }\n\n  toCron() {\n    return `${this.start}-${this.end}`\n  }\n\n  toArray() {\n    const start = this.start\n    const end = this.end\n\n    return range(start, end)\n  }\n\n  get items() {\n    return {\n      start: this.field.itemMap[this.start],\n      end: this.field.itemMap[this.end],\n    }\n  }\n\n  static fromString(str: string, field: FieldWrapper) {\n    if (!RangeSegment.re.test(str)) {\n      return null\n    }\n\n    const { min, max } = field\n    const range = str.split('-')\n    const start = parseInt(range[0])\n    const end = parseInt(range[1])\n\n    if (start > end || start < min || end > max) {\n      return null\n    }\n\n    return new RangeSegment(field, start, end)\n  }\n}\n\nfunction _rangeWithStep(n: number, min: number, max: number) {\n  const res = []\n  for (let i = min; i <= max; i += n) {\n    res.push(i)\n  }\n  return res\n}\n\nfunction parseRange(s: string, field: FieldWrapper): [number, number] {\n  if (s === '*') {\n    return [field.min, field.max]\n  }\n  const range = s.split('-').map((s) => parseInt(s))\n  if (range.length === 1 && field.ctx.format !== 'crontab') {\n    return [range[0], field.max]\n  }\n  return [range[0], range[1]]\n}\n\nclass StepSegment implements CronSegment {\n  static re = /^(\\*|\\d+(-\\d+)?)\\/\\d+$/\n\n  field: FieldWrapper\n  step: number\n  start: number\n  end: number\n\n  constructor(field: FieldWrapper, step: number, start?: number, end?: number) {\n    this.field = field\n    this.step = step\n    this.start = start ?? field.min\n    this.end = end ?? field.max\n  }\n\n  get type() {\n    const { min, max } = this.field\n    if (this.field.ctx.format !== 'crontab' && this.start !== min && max - this.end < this.step) {\n      return FieldPattern.StepFrom\n    }\n    if (this.start !== min || max - this.end >= this.step) {\n      return FieldPattern.RangeStep\n    }\n    return FieldPattern.Step\n  }\n\n  toCron() {\n    if (this.type === FieldPattern.StepFrom) {\n      return `${this.start}/${this.step}`\n    }\n    if (this.type === FieldPattern.RangeStep) {\n      return `${this.start}-${this.end}/${this.step}`\n    }\n    return `*/${this.step}`\n  }\n\n  toArray() {\n    return _rangeWithStep(this.step, this.start, this.end)\n  }\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\n  static fromString(str: string, field: FieldWrapper) {\n    if (!StepSegment.re.test(str)) {\n      return null\n    }\n\n    const [rangeStr, stepStr] = str.split('/')\n    const step = parseInt(stepStr)\n\n    if (step > field.items.length) {\n      return null\n    }\n\n    const [min, max] = parseRange(rangeStr, field)\n\n    if (_rangeWithStep(step, min, max).length == 0) {\n      return null\n    }\n\n    return new StepSegment(field, step, min, max)\n  }\n\n  static fromArray(arr: number[], field: FieldWrapper) {\n    if (arr.length < 3) {\n      return null\n    }\n\n    const step = arr[1] - arr[0]\n    if (step <= 1) {\n      return null\n    }\n\n    for (let i = 2; i < arr.length; i++) {\n      if (arr[i] - arr[i - 1] != step) {\n        return null\n      }\n    }\n\n    return new StepSegment(field, step, arr[0], arr[arr.length - 1])\n  }\n}\n\nclass ValueSegment implements CronSegment {\n  field: FieldWrapper\n  type: FieldPattern = FieldPattern.Value\n  value: number\n\n  constructor(field: FieldWrapper, value: number) {\n    this.field = field\n    this.value = value\n  }\n\n  toCron() {\n    return `${this.value}`\n  }\n\n  toArray() {\n    return [this.value]\n  }\n\n  get items() {\n    return {\n      value: this.field.itemMap[this.value],\n    }\n  }\n\n  static fromString(str: string, field: FieldWrapper) {\n    const { min, max } = field\n    const value = parseInt(str)\n    return String(value) === str && value >= min && value <= max\n      ? new ValueSegment(field, value)\n      : null\n  }\n\n  static fromArray(arr: number[], field: FieldWrapper) {\n    const { min, max } = field\n\n    if (arr.length != 1) {\n      return null\n    }\n\n    const value = arr[0]\n    if (value < min || value > max) {\n      return null\n    }\n\n    return value\n  }\n}\n\nclass CombinedSegment implements CronSegment {\n  static segmentFactories: SegmentFromString[] = [\n    AnySegment.fromString,\n    StepSegment.fromString,\n    RangeSegment.fromString,\n    ValueSegment.fromString,\n  ]\n\n  field: FieldWrapper\n  segments: CronSegment[]\n\n  constructor(field: FieldWrapper, segments: CronSegment[] = []) {\n    this.field = field\n    this.segments = segments\n  }\n\n  get type() {\n    if (this.segments.length == 1) {\n      return this.segments[0].type\n    }\n    return FieldPattern.Range\n  }\n\n  addSegment(segment: CronSegment) {\n    this.segments.push(segment)\n  }\n\n  toCron() {\n    return this.segments.map((c) => c.toCron()).join(',')\n  }\n\n  toArray() {\n    const values = new Set<number>()\n    for (const seg of this.segments) {\n      seg.toArray().forEach((value) => values.add(value))\n    }\n    return Array.from(values)\n  }\n\n  get items() {\n    return unimplemented()\n  }\n\n  static fromString(str: string, field: FieldWrapper) {\n    const factories = field.segmentFactories ?? CombinedSegment.segmentFactories\n    let segments: CronSegment[] = []\n    for (const strSeg of str.split(',')) {\n      if (strSeg === '*') {\n        segments = [new AnySegment(field)]\n        break\n      }\n\n      let segment = null\n      for (const fromString of factories) {\n        segment = fromString(strSeg, field)\n        if (segment !== null) {\n          break\n        }\n      }\n      if (segment === null) {\n        return null\n      }\n      segments.push(segment)\n    }\n    return new CombinedSegment(field, segments)\n  }\n\n  static fromArray(arr: number[], field: FieldWrapper) {\n    const { min, max } = field\n\n    const minValue = arr[0]\n    const maxValue = arr[arr.length - 1]\n\n    if (minValue < min) {\n      return null\n    }\n    if (maxValue > max) {\n      return null\n    }\n\n    const ranges: CronSegment[] = []\n    let start = 0\n    for (let i = 0; i < arr.length; i++) {\n      if (arr[i + 1] === undefined || arr[i + 1] - arr[i] > 1) {\n        if (i === start) {\n          ranges.push(new ValueSegment(field, arr[start]))\n        } else {\n          ranges.push(new RangeSegment(field, arr[start], arr[i]))\n        }\n        start = i + 1\n      }\n    }\n\n    return new CombinedSegment(field, ranges)\n  }\n}\n\nfunction cronToSegment(cron: string, field: FieldWrapper) {\n  return CombinedSegment.fromString(cron, field)\n}\n\nfunction arrayToSegment(arr: number[], field: FieldWrapper) {\n  for (const fromArray of [\n    AnySegment.fromArray,\n    StepSegment.fromArray,\n    CombinedSegment.fromArray,\n  ]) {\n    const seg = fromArray(arr, field)\n    if (seg != null) {\n      return seg\n    }\n  }\n  return null\n}\n\nexport {\n  AnySegment,\n  arrayToSegment,\n  CombinedSegment,\n  cronToSegment,\n  NoSpecificSegment,\n  RangeSegment,\n  StepSegment,\n  ValueSegment,\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\nvar objectToString = Object.prototype.toString;\nvar isArray = Array.isArray || function isArrayPolyfill (object) {\n  return objectToString.call(object) === '[object Array]';\n};\n\nfunction isFunction (object) {\n  return typeof object === 'function';\n}\n\n/**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\nfunction typeStr (obj) {\n  return isArray(obj) ? 'array' : typeof obj;\n}\n\nfunction escapeRegExp (string) {\n  return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n}\n\n/**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\nfunction hasProperty (obj, propName) {\n  return obj != null && typeof obj === 'object' && (propName in obj);\n}\n\n/**\n * Safe way of detecting whether or not the given thing is a primitive and\n * whether it has the given property\n */\nfunction primitiveHasOwnProperty (primitive, propName) {\n  return (\n    primitive != null\n    && typeof primitive !== 'object'\n    && primitive.hasOwnProperty\n    && primitive.hasOwnProperty(propName)\n  );\n}\n\n// Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n// See https://github.com/janl/mustache.js/issues/189\nvar regExpTest = RegExp.prototype.test;\nfunction testRegExp (re, string) {\n  return regExpTest.call(re, string);\n}\n\nvar nonSpaceRe = /\\S/;\nfunction isWhitespace (string) {\n  return !testRegExp(nonSpaceRe, string);\n}\n\nvar entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;',\n  '`': '&#x60;',\n  '=': '&#x3D;'\n};\n\nfunction escapeHtml (string) {\n  return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n    return entityMap[s];\n  });\n}\n\nvar whiteRe = /\\s*/;\nvar spaceRe = /\\s+/;\nvar equalsRe = /\\s*=/;\nvar curlyRe = /\\s*\\}/;\nvar tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n/**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n *\n * Tokens for partials also contain two more elements: 1) a string value of\n * indendation prior to that tag and 2) the index of that tag on that line -\n * eg a value of 2 indicates the partial is the third tag on this line.\n */\nfunction parseTemplate (template, tags) {\n  if (!template)\n    return [];\n  var lineHasNonSpace = false;\n  var sections = [];     // Stack to hold section tokens\n  var tokens = [];       // Buffer to hold the tokens\n  var spaces = [];       // Indices of whitespace tokens on the current line\n  var hasTag = false;    // Is there a {{tag}} on the current line?\n  var nonSpace = false;  // Is there a non-space char on the current line?\n  var indentation = '';  // Tracks indentation for tags that use it\n  var tagIndex = 0;      // Stores a count of number of tags encountered on a line\n\n  // Strips all whitespace tokens array for the current line\n  // if there was a {{#tag}} on it and otherwise only space.\n  function stripSpace () {\n    if (hasTag && !nonSpace) {\n      while (spaces.length)\n        delete tokens[spaces.pop()];\n    } else {\n      spaces = [];\n    }\n\n    hasTag = false;\n    nonSpace = false;\n  }\n\n  var openingTagRe, closingTagRe, closingCurlyRe;\n  function compileTags (tagsToCompile) {\n    if (typeof tagsToCompile === 'string')\n      tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n    if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n      throw new Error('Invalid tags: ' + tagsToCompile);\n\n    openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n    closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n    closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n  }\n\n  compileTags(tags || mustache.tags);\n\n  var scanner = new Scanner(template);\n\n  var start, type, value, chr, token, openSection;\n  while (!scanner.eos()) {\n    start = scanner.pos;\n\n    // Match any text between tags.\n    value = scanner.scanUntil(openingTagRe);\n\n    if (value) {\n      for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n        chr = value.charAt(i);\n\n        if (isWhitespace(chr)) {\n          spaces.push(tokens.length);\n          indentation += chr;\n        } else {\n          nonSpace = true;\n          lineHasNonSpace = true;\n          indentation += ' ';\n        }\n\n        tokens.push([ 'text', chr, start, start + 1 ]);\n        start += 1;\n\n        // Check for whitespace on the current line.\n        if (chr === '\\n') {\n          stripSpace();\n          indentation = '';\n          tagIndex = 0;\n          lineHasNonSpace = false;\n        }\n      }\n    }\n\n    // Match the opening tag.\n    if (!scanner.scan(openingTagRe))\n      break;\n\n    hasTag = true;\n\n    // Get the tag type.\n    type = scanner.scan(tagRe) || 'name';\n    scanner.scan(whiteRe);\n\n    // Get the tag value.\n    if (type === '=') {\n      value = scanner.scanUntil(equalsRe);\n      scanner.scan(equalsRe);\n      scanner.scanUntil(closingTagRe);\n    } else if (type === '{') {\n      value = scanner.scanUntil(closingCurlyRe);\n      scanner.scan(curlyRe);\n      scanner.scanUntil(closingTagRe);\n      type = '&';\n    } else {\n      value = scanner.scanUntil(closingTagRe);\n    }\n\n    // Match the closing tag.\n    if (!scanner.scan(closingTagRe))\n      throw new Error('Unclosed tag at ' + scanner.pos);\n\n    if (type == '>') {\n      token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];\n    } else {\n      token = [ type, value, start, scanner.pos ];\n    }\n    tagIndex++;\n    tokens.push(token);\n\n    if (type === '#' || type === '^') {\n      sections.push(token);\n    } else if (type === '/') {\n      // Check section nesting.\n      openSection = sections.pop();\n\n      if (!openSection)\n        throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n      if (openSection[1] !== value)\n        throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n    } else if (type === 'name' || type === '{' || type === '&') {\n      nonSpace = true;\n    } else if (type === '=') {\n      // Set the tags for the next time around.\n      compileTags(value);\n    }\n  }\n\n  stripSpace();\n\n  // Make sure there are no open sections when we're done.\n  openSection = sections.pop();\n\n  if (openSection)\n    throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n  return nestTokens(squashTokens(tokens));\n}\n\n/**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\nfunction squashTokens (tokens) {\n  var squashedTokens = [];\n\n  var token, lastToken;\n  for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n    token = tokens[i];\n\n    if (token) {\n      if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n        lastToken[1] += token[1];\n        lastToken[3] = token[3];\n      } else {\n        squashedTokens.push(token);\n        lastToken = token;\n      }\n    }\n  }\n\n  return squashedTokens;\n}\n\n/**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\nfunction nestTokens (tokens) {\n  var nestedTokens = [];\n  var collector = nestedTokens;\n  var sections = [];\n\n  var token, section;\n  for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n    token = tokens[i];\n\n    switch (token[0]) {\n      case '#':\n      case '^':\n        collector.push(token);\n        sections.push(token);\n        collector = token[4] = [];\n        break;\n      case '/':\n        section = sections.pop();\n        section[5] = token[2];\n        collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n        break;\n      default:\n        collector.push(token);\n    }\n  }\n\n  return nestedTokens;\n}\n\n/**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\nfunction Scanner (string) {\n  this.string = string;\n  this.tail = string;\n  this.pos = 0;\n}\n\n/**\n * Returns `true` if the tail is empty (end of string).\n */\nScanner.prototype.eos = function eos () {\n  return this.tail === '';\n};\n\n/**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\nScanner.prototype.scan = function scan (re) {\n  var match = this.tail.match(re);\n\n  if (!match || match.index !== 0)\n    return '';\n\n  var string = match[0];\n\n  this.tail = this.tail.substring(string.length);\n  this.pos += string.length;\n\n  return string;\n};\n\n/**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\nScanner.prototype.scanUntil = function scanUntil (re) {\n  var index = this.tail.search(re), match;\n\n  switch (index) {\n    case -1:\n      match = this.tail;\n      this.tail = '';\n      break;\n    case 0:\n      match = '';\n      break;\n    default:\n      match = this.tail.substring(0, index);\n      this.tail = this.tail.substring(index);\n  }\n\n  this.pos += match.length;\n\n  return match;\n};\n\n/**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\nfunction Context (view, parentContext) {\n  this.view = view;\n  this.cache = { '.': this.view };\n  this.parent = parentContext;\n}\n\n/**\n * Creates a new context using the given view with this context\n * as the parent.\n */\nContext.prototype.push = function push (view) {\n  return new Context(view, this);\n};\n\n/**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\nContext.prototype.lookup = function lookup (name) {\n  var cache = this.cache;\n\n  var value;\n  if (cache.hasOwnProperty(name)) {\n    value = cache[name];\n  } else {\n    var context = this, intermediateValue, names, index, lookupHit = false;\n\n    while (context) {\n      if (name.indexOf('.') > 0) {\n        intermediateValue = context.view;\n        names = name.split('.');\n        index = 0;\n\n        /**\n         * Using the dot notion path in `name`, we descend through the\n         * nested objects.\n         *\n         * To be certain that the lookup has been successful, we have to\n         * check if the last object in the path actually has the property\n         * we are looking for. We store the result in `lookupHit`.\n         *\n         * This is specially necessary for when the value has been set to\n         * `undefined` and we want to avoid looking up parent contexts.\n         *\n         * In the case where dot notation is used, we consider the lookup\n         * to be successful even if the last \"object\" in the path is\n         * not actually an object but a primitive (e.g., a string, or an\n         * integer), because it is sometimes useful to access a property\n         * of an autoboxed primitive, such as the length of a string.\n         **/\n        while (intermediateValue != null && index < names.length) {\n          if (index === names.length - 1)\n            lookupHit = (\n              hasProperty(intermediateValue, names[index])\n              || primitiveHasOwnProperty(intermediateValue, names[index])\n            );\n\n          intermediateValue = intermediateValue[names[index++]];\n        }\n      } else {\n        intermediateValue = context.view[name];\n\n        /**\n         * Only checking against `hasProperty`, which always returns `false` if\n         * `context.view` is not an object. Deliberately omitting the check\n         * against `primitiveHasOwnProperty` if dot notation is not used.\n         *\n         * Consider this example:\n         * ```\n         * Mustache.render(\"The length of a football field is {{#length}}{{length}}{{/length}}.\", {length: \"100 yards\"})\n         * ```\n         *\n         * If we were to check also against `primitiveHasOwnProperty`, as we do\n         * in the dot notation case, then render call would return:\n         *\n         * \"The length of a football field is 9.\"\n         *\n         * rather than the expected:\n         *\n         * \"The length of a football field is 100 yards.\"\n         **/\n        lookupHit = hasProperty(context.view, name);\n      }\n\n      if (lookupHit) {\n        value = intermediateValue;\n        break;\n      }\n\n      context = context.parent;\n    }\n\n    cache[name] = value;\n  }\n\n  if (isFunction(value))\n    value = value.call(this.view);\n\n  return value;\n};\n\n/**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\nfunction Writer () {\n  this.templateCache = {\n    _cache: {},\n    set: function set (key, value) {\n      this._cache[key] = value;\n    },\n    get: function get (key) {\n      return this._cache[key];\n    },\n    clear: function clear () {\n      this._cache = {};\n    }\n  };\n}\n\n/**\n * Clears all cached templates in this writer.\n */\nWriter.prototype.clearCache = function clearCache () {\n  if (typeof this.templateCache !== 'undefined') {\n    this.templateCache.clear();\n  }\n};\n\n/**\n * Parses and caches the given `template` according to the given `tags` or\n * `mustache.tags` if `tags` is omitted,  and returns the array of tokens\n * that is generated from the parse.\n */\nWriter.prototype.parse = function parse (template, tags) {\n  var cache = this.templateCache;\n  var cacheKey = template + ':' + (tags || mustache.tags).join(':');\n  var isCacheEnabled = typeof cache !== 'undefined';\n  var tokens = isCacheEnabled ? cache.get(cacheKey) : undefined;\n\n  if (tokens == undefined) {\n    tokens = parseTemplate(template, tags);\n    isCacheEnabled && cache.set(cacheKey, tokens);\n  }\n  return tokens;\n};\n\n/**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n *\n * If the optional `config` argument is given here, then it should be an\n * object with a `tags` attribute or an `escape` attribute or both.\n * If an array is passed, then it will be interpreted the same way as\n * a `tags` attribute on a `config` object.\n *\n * The `tags` attribute of a `config` object must be an array with two\n * string values: the opening and closing tags used in the template (e.g.\n * [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n *\n * The `escape` attribute of a `config` object must be a function which\n * accepts a string as input and outputs a safely escaped string.\n * If an `escape` function is not provided, then an HTML-safe string\n * escaping function is used as the default.\n */\nWriter.prototype.render = function render (template, view, partials, config) {\n  var tags = this.getConfigTags(config);\n  var tokens = this.parse(template, tags);\n  var context = (view instanceof Context) ? view : new Context(view, undefined);\n  return this.renderTokens(tokens, context, partials, template, config);\n};\n\n/**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\nWriter.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, config) {\n  var buffer = '';\n\n  var token, symbol, value;\n  for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n    value = undefined;\n    token = tokens[i];\n    symbol = token[0];\n\n    if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate, config);\n    else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate, config);\n    else if (symbol === '>') value = this.renderPartial(token, context, partials, config);\n    else if (symbol === '&') value = this.unescapedValue(token, context);\n    else if (symbol === 'name') value = this.escapedValue(token, context, config);\n    else if (symbol === 'text') value = this.rawValue(token);\n\n    if (value !== undefined)\n      buffer += value;\n  }\n\n  return buffer;\n};\n\nWriter.prototype.renderSection = function renderSection (token, context, partials, originalTemplate, config) {\n  var self = this;\n  var buffer = '';\n  var value = context.lookup(token[1]);\n\n  // This function is used to render an arbitrary template\n  // in the current context by higher-order sections.\n  function subRender (template) {\n    return self.render(template, context, partials, config);\n  }\n\n  if (!value) return;\n\n  if (isArray(value)) {\n    for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n      buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate, config);\n    }\n  } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n    buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate, config);\n  } else if (isFunction(value)) {\n    if (typeof originalTemplate !== 'string')\n      throw new Error('Cannot use higher-order sections without the original template');\n\n    // Extract the portion of the original template that the section contains.\n    value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n    if (value != null)\n      buffer += value;\n  } else {\n    buffer += this.renderTokens(token[4], context, partials, originalTemplate, config);\n  }\n  return buffer;\n};\n\nWriter.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate, config) {\n  var value = context.lookup(token[1]);\n\n  // Use JavaScript's definition of falsy. Include empty arrays.\n  // See https://github.com/janl/mustache.js/issues/186\n  if (!value || (isArray(value) && value.length === 0))\n    return this.renderTokens(token[4], context, partials, originalTemplate, config);\n};\n\nWriter.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {\n  var filteredIndentation = indentation.replace(/[^ \\t]/g, '');\n  var partialByNl = partial.split('\\n');\n  for (var i = 0; i < partialByNl.length; i++) {\n    if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {\n      partialByNl[i] = filteredIndentation + partialByNl[i];\n    }\n  }\n  return partialByNl.join('\\n');\n};\n\nWriter.prototype.renderPartial = function renderPartial (token, context, partials, config) {\n  if (!partials) return;\n  var tags = this.getConfigTags(config);\n\n  var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n  if (value != null) {\n    var lineHasNonSpace = token[6];\n    var tagIndex = token[5];\n    var indentation = token[4];\n    var indentedValue = value;\n    if (tagIndex == 0 && indentation) {\n      indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);\n    }\n    var tokens = this.parse(indentedValue, tags);\n    return this.renderTokens(tokens, context, partials, indentedValue, config);\n  }\n};\n\nWriter.prototype.unescapedValue = function unescapedValue (token, context) {\n  var value = context.lookup(token[1]);\n  if (value != null)\n    return value;\n};\n\nWriter.prototype.escapedValue = function escapedValue (token, context, config) {\n  var escape = this.getConfigEscape(config) || mustache.escape;\n  var value = context.lookup(token[1]);\n  if (value != null)\n    return (typeof value === 'number' && escape === mustache.escape) ? String(value) : escape(value);\n};\n\nWriter.prototype.rawValue = function rawValue (token) {\n  return token[1];\n};\n\nWriter.prototype.getConfigTags = function getConfigTags (config) {\n  if (isArray(config)) {\n    return config;\n  }\n  else if (config && typeof config === 'object') {\n    return config.tags;\n  }\n  else {\n    return undefined;\n  }\n};\n\nWriter.prototype.getConfigEscape = function getConfigEscape (config) {\n  if (config && typeof config === 'object' && !isArray(config)) {\n    return config.escape;\n  }\n  else {\n    return undefined;\n  }\n};\n\nvar mustache = {\n  name: 'mustache.js',\n  version: '4.2.0',\n  tags: [ '{{', '}}' ],\n  clearCache: undefined,\n  escape: undefined,\n  parse: undefined,\n  render: undefined,\n  Scanner: undefined,\n  Context: undefined,\n  Writer: undefined,\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 (cache) {\n    defaultWriter.templateCache = cache;\n  },\n  /**\n   * Gets the default or overridden caching object from the default writer.\n   */\n  get templateCache () {\n    return defaultWriter.templateCache;\n  }\n};\n\n// All high-level mustache.* functions use this writer.\nvar defaultWriter = new Writer();\n\n/**\n * Clears all cached templates in the default writer.\n */\nmustache.clearCache = function clearCache () {\n  return defaultWriter.clearCache();\n};\n\n/**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\nmustache.parse = function parse (template, tags) {\n  return defaultWriter.parse(template, tags);\n};\n\n/**\n * Renders the `template` with the given `view`, `partials`, and `config`\n * using the default writer.\n */\nmustache.render = function render (template, view, partials, config) {\n  if (typeof template !== 'string') {\n    throw new TypeError('Invalid template! Template should be a \"string\" ' +\n                        'but \"' + typeStr(template) + '\" was given as the first ' +\n                        'argument for mustache#render(template, view, partials)');\n  }\n\n  return defaultWriter.render(template, view, partials, config);\n};\n\n// Export the escaping function so that the user may override it.\n// See https://github.com/janl/mustache.js/issues/244\nmustache.escape = escapeHtml;\n\n// Export these mainly for testing, but also for advanced usage.\nmustache.Scanner = Scanner;\nmustache.Context = Context;\nmustache.Writer = Writer;\n\nexport default mustache;\n","import type { Localization } from './types'\n\nconst locale: Localization = {\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\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}\n\nexport default locale\n","import type { Localization } from './types'\n\nconst locale: Localization = {\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\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\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}\n\nexport default locale\n","import type { Localization } from './types'\n\nconst locale: Localization = {\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\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}\n\nexport default locale\n","import type { Localization } from './types'\n\nconst locale: Localization = {\n  '*': {\n    prefix: 'Every',\n    suffix: '',\n    text: 'Unknown',\n    '*': {\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      stepFrom: { text: '{{start.text}}/{{step.value}}' },\n    },\n    month: {\n      '*': { prefix: 'in' },\n      any: { text: 'every month' },\n      value: { text: '{{value.alt}}' },\n      range: { text: '{{start.alt}}-{{end.alt}}' },\n      rangeStep: { text: '{{start.alt}}-{{end.alt}}/{{step.value}}' },\n      stepFrom: { text: '{{start.alt}}/{{step.value}}' },\n    },\n    day: {\n      '*': { prefix: 'on' },\n      any: { text: 'every day' },\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      stepFrom: { text: '{{start.alt}}/{{step.value}}' },\n      noSpecific: {\n        text: 'no specific day of the week',\n      },\n    },\n    hour: {\n      '*': { prefix: 'at' },\n      any: { text: 'every hour' },\n    },\n    minute: {\n      '*': { prefix: ':' },\n      any: { text: 'every minute' },\n    },\n    second: {\n      '*': { prefix: ':' },\n      any: { text: 'every second' },\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\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}\n\nexport default locale\n","import type { Localization } from './types'\n\nconst locale: Localization = {\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}\n\nexport default locale\n","import type { Localization } from './types'\n\n/**\n * French localization generated with GPT-4\n */\nconst locale: Localization = {\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\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}\n\nexport default locale\n","import type { Localization } from './types'\n\nconst locale: Localization = {\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\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}\n\nexport default locale\n","import type { Localization } from './types'\n\n/**\n * Hindi localization generated with GPT-4\n */\nconst locale: Localization = {\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\n  //quartz format\n  'q-second': { text: 'सेकंड' },\n  'q-minute': { text: 'मिनट', second: { '*': { prefix: 'और' } } },\n  'q-hour': { text: 'घंटा', minute: { '*': { prefix: 'और' } }, second: { '*': { prefix: 'और' } } },\n}\n\nexport default locale\n","import type { Localization } from './types'\n\n/**\n * French localization generated with GPT-4\n */\nconst locale: Localization = {\n  '*': {\n    prefix: 'Tutti',\n    suffix: '',\n    text: 'Sconosciuto',\n    '*': {\n      value: { text: '{{value.text}}' },\n      range: { text: '{{start.text}}-{{end.text}}' },\n      step: { text: 'ogni {{step.value}}' },\n    },\n    month: {\n      '*': { prefix: 'in' },\n      any: { prefix: 'in', text: 'ogni mese' },\n      value: { text: '{{value.alt}}' },\n      range: { text: '{{start.alt}}-{{end.alt}}' },\n    },\n    day: {\n      '*': { prefix: 'il' },\n      any: { prefix: 'il', text: 'ogni giorno' },\n      step: { prefix: '', text: 'ogni {{step.value}} giorni' },\n      noSpecific: { prefix: 'il', text: 'nessun giorno specifico' },\n    },\n    dayOfWeek: {\n      '*': { prefix: 'il' },\n      any: { prefix: 'il', text: 'ogni giorno della settimana' },\n      value: { text: '{{value.alt}}' },\n      range: { text: '{{start.alt}}-{{end.alt}}' },\n      noSpecific: { prefix: 'e', text: 'nessun giorno della settimana specifico' },\n    },\n    hour: {\n      '*': { prefix: 'alle' },\n      any: { prefix: 'alle', text: 'ogni ora' },\n      step: { prefix: '', text: 'ogni {{step.value}} ore' },\n    },\n    minute: {\n      '*': { prefix: ':' },\n      any: { text: 'ogni minuto' },\n      step: { prefix: '', text: 'ogni {{step.value}} minuti' },\n    },\n    second: {\n      '*': { prefix: ':' },\n      any: { text: 'ogni secondo' },\n      step: { prefix: '', text: 'ogni {{step.value}} secondi' },\n    },\n  },\n  minute: { text: 'Minuto' },\n  hour: {\n    text: 'Ora',\n    minute: { '*': { prefix: 'al', suffix: 'minuto/i' }, any: { text: 'tutti' } },\n  },\n  day: { prefix: 'Tutti', text: 'Giorno' },\n  week: { text: 'Settimana' },\n  month: { prefix: 'Tutti', text: 'Mese' },\n  year: { prefix: 'Tutti', text: 'Anno' },\n\n  //quartz format\n  'q-second': { text: 'Secondo' },\n  'q-minute': { text: 'Minuto', second: { '*': { prefix: 'e' } } },\n  'q-hour': { text: 'Ora', minute: { '*': { prefix: 'e' } }, second: { '*': { prefix: 'e' } } },\n}\n\nexport default locale\n","import type { Localization } from './types'\n\n/**\n * Japanese localization generated with GPT-4\n */\nconst locale: Localization = {\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\n  //quartz format\n  'q-second': { text: '秒' },\n  'q-minute': { text: '分', second: { '*': { prefix: 'と' } } },\n  'q-hour': { text: '時', minute: { '*': { prefix: 'と' } }, second: { '*': { prefix: 'と' } } },\n}\n\nexport default locale\n","import type { Localization } from './types'\n\nconst locale: Localization = {\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\n  //quartz format\n  'q-second': { text: '초' },\n  'q-minute': { text: '분', second: { '*': { prefix: '와' } } },\n  'q-hour': { text: '시', minute: { '*': { prefix: '와' } }, second: { '*': { prefix: '와' } } },\n}\n\nexport default locale\n","import type { Localization } from './types'\n\nconst locale: Localization = {\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}\n\nexport default locale\n","import type { Localization } from './types'\n\n/**\n * Russian localization generated with GPT-4\n */\nconst locale: Localization = {\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\n  //quartz format\n  'q-second': { text: 'Секунда' },\n  'q-minute': { text: 'Минута', second: { '*': { prefix: 'и' } } },\n  'q-hour': { text: 'Час', minute: { '*': { prefix: 'и' } }, second: { '*': { prefix: 'и' } } },\n}\n\nexport default locale\n","import type { Localization } from './types'\n\n/**\n * Ukrainian localization\n */\nconst locale: Localization = {\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\n  //quartz format\n  'q-second': { text: 'Секунда' },\n  'q-minute': { text: 'Хвилина', second: { '*': { prefix: 'и' } } },\n  'q-hour': { text: 'Година', minute: { '*': { prefix: 'і' } }, second: { '*': { prefix: 'і' } } },\n}\n\nexport default locale\n","import type { FieldPattern, TextPosition } from '@/types'\nimport Mustache from 'mustache'\nimport { deepMerge, traverse } from '../util'\nimport cn from './cn'\nimport da from './da'\nimport de from './de'\nimport en from './en'\nimport es from './es'\nimport fr from './fr'\nimport he from './he'\nimport hi from './hi'\nimport it from './it'\nimport ja from './ja'\nimport ko from './ko'\nimport pt from './pt'\nimport ru from './ru'\nimport uk from './uk'\nimport type { Localization } from './types'\n\nconst locales: Record<string, Localization> = {\n  empty: {},\n  en,\n  de,\n  pt,\n  es,\n  da,\n  zh: cn,\n  he,\n  ru,\n  fr,\n  hi,\n  ja,\n  ko,\n  it,\n  uk,\n}\n\nclass L10nEngine {\n  dict: Localization\n\n  constructor(dict: Localization) {\n    this.dict = dict\n  }\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(...keys: string[]) {\n    const k = keys.map((key) => [key, '*'])\n    return traverse(this.dict, ...k) || ''\n  }\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(\n    periodId: string,\n    fieldId: string,\n    fieldPattern: FieldPattern,\n    position: TextPosition,\n    params: any,\n  ) {\n    const template = this.getTemplate(periodId, fieldId, fieldPattern, position)\n    return Mustache.render(template, params || {})\n  }\n}\n\n/**\n * Creates a localization engine for the specified locale.\n * @param localeCode - Locale code (e.g. 'en', 'en-GB', 'de-DE')\n * @param mixin - Optional dictionary to override default locale strings\n * @returns A new L10nEngine instance for the specified locale with English as fallback\n */\nfunction createL10n(localeCode: string, mixin?: Localization) {\n  const [language] = localeCode.split('-')\n  const l = locales[localeCode.toLowerCase()] || locales[language.toLowerCase()] || locales.en\n  // Note: always use an empty object as target\n  const dict = deepMerge({}, locales.en, l, mixin || {}) as Localization\n  return new L10nEngine(dict)\n}\n\nexport { createL10n, L10nEngine }\n\n// The following prompt was used for localizations translated with GPT-4:\n//\n// You are a service that translates user requests into JSON objects of type \"Localizations\" according to the following TypeScript definitions:\n// ```typescript\n// export type PartialRecord<K extends keyof any, T> = Partial<Record<K, T>>\n\n// export type PositionedLocalization = PartialRecord<TextPosition, string>\n// export type CronLocalization = PartialRecord<FieldPattern | '*', PositionedLocalization>\n\n// export interface FieldLocalization {\n//   // Allow custom field ids\n//   [fieldId: string]: unknown\n\n//   /** `*` is used as a wildcard and matches any field id */\n//   '*'?: CronLocalization\n//   second?: CronLocalization\n//   minute?: CronLocalization\n//   hour?: CronLocalization\n//   day?: CronLocalization\n//   month?: CronLocalization\n//   dayOfWeek?: CronLocalization\n// }\n\n// export type PeriodLocalization = PositionedLocalization | FieldLocalization\n\n// /**\n//  * Interface to define localizations for vue-js-cron\n//  * The localization strings are accessed by {periodId}.{fieldId}.{fieldPattern}.{position}\n//  */\n// export interface Localization {\n//   /** Allows custom period ids */\n//   [periodId: string]: unknown\n\n//   /** `*` is used as a wildcard and matches any period id */\n//   '*'?: PeriodLocalization\n//   minute?: PeriodLocalization\n//   hour?: PeriodLocalization\n//   day?: PeriodLocalization\n//   week?: PeriodLocalization\n//   month?: PeriodLocalization\n//   year?: PeriodLocalization\n// }\n// ```\n// The following is a user request:\n// \"\"\"\n// Translate the following Javascript object from German into Russian:\n// {\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\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// }\n// \"\"\"\n// The following is the user request translated into a JSON object with 2 spaces of indentation and no properties with the value undefined:\n","import { CombinedSegment, arrayToSegment, cronToSegment } from '@/cron'\nimport type { L10nEngine } from '@/locale'\nimport { TextPosition, type CronSegment, type FieldWrapper, type Period } from '@/types'\nimport { ref, watch, type Ref } from 'vue'\n\nexport interface FieldOptions {\n  l10n: L10nEngine\n  period: Ref<Period>\n  field: FieldWrapper\n  initialCron?: string\n}\n\nexport function useCronSegment(options: FieldOptions) {\n  const { period, field, initialCron = '*', l10n } = options\n\n  const cron = ref(initialCron)\n  const error = ref('')\n  const selected = ref<number[]>([])\n\n  const text = ref('')\n  const prefix = ref('')\n  const suffix = ref('')\n\n  const translate = (seg: CronSegment) => {\n    const segments = seg instanceof CombinedSegment ? seg.segments : [seg]\n\n    text.value = segments\n      .map((seg) => {\n        return l10n.render(period.value.id, field.id, seg.type, TextPosition.Text, {\n          field: field,\n          ...seg.items,\n        })\n      })\n      .join(',')\n\n    prefix.value = l10n.getTemplate(period.value.id, field.id, seg.type, TextPosition.Prefix)\n    suffix.value = l10n.getTemplate(period.value.id, field.id, seg.type, TextPosition.Suffix)\n  }\n\n  const parseCron = (cron: string) => {\n    const seg = cronToSegment(cron, field)\n    if (seg != null) {\n      selected.value = seg.toArray()\n      translate(seg)\n    } else {\n      error.value = `${cron} is not a valid cron segment (${field.id})`\n    }\n  }\n\n  const toCron = (value: number[]) => {\n    if (cron.value == '?' && value.length == 0) {\n      return\n    }\n\n    const seg = arrayToSegment(value, field)\n    if (seg != null) {\n      cron.value = seg.toCron()\n      translate(seg)\n    } else {\n      error.value = `failed to convert ${value} to cron (${field.id})`\n    }\n  }\n\n  parseCron(initialCron)\n\n  const select = (evt: number[]) => {\n    const sorted = Array.from(evt).sort((a, b) => {\n      return a > b ? 1 : -1\n    })\n    selected.value = sorted\n  }\n\n  watch(cron, (value) => {\n    parseCron(value)\n  })\n\n  watch(selected, (value) => {\n    toCron(value)\n  })\n\n  watch(period, () => {\n    const seg = cronToSegment(cron.value, field)\n    if (seg != null) {\n      translate(seg)\n    }\n  })\n\n  return {\n    id: field.id,\n    items: field.items,\n    cron,\n    selected,\n    error,\n    select,\n    text,\n    prefix,\n    suffix,\n  }\n}\n\nexport type UseCronSegmentReturn = ReturnType<typeof useCronSegment>\n","import { AnySegment, NoSpecificSegment, RangeSegment, StepSegment, ValueSegment } from '@/cron'\nimport { createL10n } from '@/locale'\nimport type { Localization } from '@/locale/types'\nimport {\n  computed,\n  defineComponent,\n  ref,\n  watch,\n  type ExtractPropTypes,\n  type PropType,\n  type SetupContext,\n} from 'vue'\nimport { FieldWrapper, TextPosition, type CronFormat, type Field, type Period } from '../types'\nimport { defaultItems } from '../util'\nimport { useCronSegment, type UseCronSegmentReturn } from './cron-segment'\n\nexport interface CronOptions {\n  initialValue?: string\n  initialPeriod?: string\n  locale?: string\n  fields?: Field[]\n  periods?: Period[]\n  customLocale?: Localization\n  format?: CronFormat\n}\n\nexport interface CronContext {\n  segmentMap: Map<string, UseCronSegmentReturn>\n}\n\nfunction createCron(fields: Field[]) {\n  return fields.map((f) => f.default ?? '*').join(' ')\n}\n\nfunction isDefined<T>(obj: T | undefined): obj is T {\n  return obj !== undefined\n}\n\nexport class DefaultCronOptions {\n  locale = 'en'\n\n  format: CronFormat = 'crontab'\n\n  initialValue(fields: Field[]) {\n    return createCron(fields)\n  }\n\n  fields(format: CronFormat, locale: string): Field[] {\n    const isQuartz = format == 'quartz' || format == 'spring'\n    const items = defaultItems(locale, format)\n\n    const setNoSpecific = (fieldId: string) => {\n      return (value: UseCronSegmentReturn, { segmentMap }: CronContext) => {\n        if (value.cron.value == '?') {\n          return\n        }\n\n        const segment = segmentMap.get(fieldId)\n        if (!segment) {\n          return\n        }\n        segment.cron.value = '?'\n      }\n    }\n\n    return [\n      ...(isQuartz ? [{ id: 'second', items: items.secondItems }] : []),\n      { id: 'minute', items: items.minuteItems },\n      { id: 'hour', items: items.hourItems },\n      {\n        id: 'day',\n        items: items.dayItems,\n        onChange: isQuartz ? setNoSpecific('dayOfWeek') : undefined,\n        segmentFactories: isQuartz\n          ? [\n              AnySegment.fromString,\n              NoSpecificSegment.fromString,\n              StepSegment.fromString,\n              RangeSegment.fromString,\n              ValueSegment.fromString,\n            ]\n          : undefined,\n      },\n      { id: 'month', items: items.monthItems },\n      {\n        id: 'dayOfWeek',\n        default: format === 'quartz' ? '?' : undefined,\n        items: items.dayOfWeekItems,\n        onChange: isQuartz ? setNoSpecific('day') : undefined,\n        segmentFactories: isQuartz\n          ? [\n              AnySegment.fromString,\n              NoSpecificSegment.fromString,\n              StepSegment.fromString,\n              RangeSegment.fromString,\n              ValueSegment.fromString,\n            ]\n          : undefined,\n      },\n    ]\n  }\n\n  periods(format: CronFormat): Period[] {\n    const isQuartz = format == 'quartz' || format == 'spring'\n    const second = isQuartz ? [{ id: 'q-second', value: [] }] : []\n    const secondField = isQuartz ? ['second'] : []\n    const prefix = isQuartz ? 'q-' : ''\n\n    return [\n      ...second,\n      { id: prefix + 'minute', value: [...secondField] },\n      { id: prefix + 'hour', value: ['minute', ...secondField] },\n      { id: 'day', value: ['hour', 'minute', ...secondField] },\n      { id: 'week', value: ['dayOfWeek', 'hour', 'minute', ...secondField] },\n      { id: 'month', value: ['day', 'dayOfWeek', 'hour', 'minute', ...secondField] },\n      { id: 'year', value: ['month', 'day', 'dayOfWeek', 'hour', 'minute', ...secondField] },\n    ]\n  }\n}\n\nexport function findFirstPeriod(\n  periods: Period[],\n  cron: string,\n  fields: Field[],\n): Period | undefined {\n  const segments = cron.split(' ')\n  if (segments.length !== fields.length) {\n    return\n  }\n  const dirtyFields = fields.filter((_, i) => !['*', '?'].includes(segments[i])).map((f) => f.id)\n  // find the first period, which includes all dirty fields\n  return periods.find((p) => {\n    const visible = new Set(p.value)\n    return dirtyFields.every((fid) => visible.has(fid))\n  })\n}\n\nexport function useCron(options: CronOptions) {\n  const cronDefaults = new DefaultCronOptions()\n\n  const locale = options.locale ?? cronDefaults.locale\n  const format = options.format ?? cronDefaults.format\n  const { customLocale, fields = cronDefaults.fields(format, locale) } = options\n  const initialValue = options.initialValue ?? cronDefaults.initialValue(fields)\n\n  const l10n = createL10n(locale, customLocale)\n  const periods = (options.periods ?? cronDefaults.periods(format)).map((p) => {\n    return {\n      ...p,\n      text: p.text ?? l10n.getTemplate(p.id, TextPosition.Text),\n    }\n  })\n  const initialPeriod =\n    (options.initialPeriod ? periods.find((p) => p.id == options.initialPeriod) : undefined) ??\n    findFirstPeriod([...periods].reverse(), initialValue, fields) ??\n    periods[periods.length - 1]\n\n  const cron = ref(initialValue)\n  const error = ref('')\n  const period = ref(initialPeriod)\n  const periodPrefix = ref('')\n  const periodSuffix = ref('')\n  const segments = fields.map((f) => {\n    return useCronSegment({ field: new FieldWrapper(f, { format: format }), l10n, period })\n  })\n\n  const segmentMap = new Map(segments.map((s) => [s.id, s]))\n  const selected = computed(() => {\n    return period.value.value.map((fieldId) => {\n      const segment = segmentMap.get(fieldId)\n      if (isDefined(segment)) {\n        return segment\n      }\n      throw Error('${fieldId} not found')\n    })\n  })\n\n  const fromCron = (value: string) => {\n    if (!value) {\n      cron.value = createCron(fields)\n      return\n    }\n\n    const strSegments = value.split(' ')\n\n    if (strSegments.length !== fields.length) {\n      error.value = 'invalid pattern'\n      return\n    }\n\n    for (let i = 0; i < strSegments.length; i++) {\n      if (segments[i].cron.value != strSegments[i]) {\n        segments[i].cron.value = strSegments[i]\n      }\n    }\n    error.value = ''\n  }\n  fromCron(initialValue)\n\n  const toCron = () => {\n    cron.value = segments\n      .map((s) => {\n        return period.value.value.includes(s.id) || s.cron.value == '?' ? s.cron.value : '*'\n      })\n      .join(' ')\n  }\n\n  const translate = () => {\n    periodPrefix.value = l10n.getTemplate(period.value.id, TextPosition.Prefix)\n    periodSuffix.value = l10n.getTemplate(period.value.id, TextPosition.Suffix)\n  }\n  translate()\n\n  watch(cron, fromCron)\n  watch(period, () => {\n    toCron()\n    translate()\n  })\n\n  segments.forEach((s, i) => {\n    watch(s.cron, () => {\n      fields[i].onChange?.(s, { segmentMap })\n      toCron()\n    })\n    watch(s.error, (value) => {\n      error.value = value\n    })\n  })\n\n  return {\n    cron,\n    error,\n    segments,\n    selected,\n    period: {\n      select: (periodId: string) => {\n        const i = periods.map((p) => p.id).indexOf(periodId)\n        if (i == -1) {\n          return\n        }\n        period.value = periods[i]\n      },\n      selected: period,\n      items: periods,\n      prefix: periodPrefix,\n      suffix: periodSuffix,\n    },\n  }\n}\n\n/**\n * @interface\n */\nexport type UseCronReturn = ReturnType<typeof useCron>\n\nexport function setupCron(\n  props: CronCoreProps,\n  { emit }: SetupContext<['update:model-value', 'update:period', 'error']>,\n): UseCronReturn {\n  const options: CronOptions = {\n    ...props,\n    initialValue: props.modelValue,\n    initialPeriod: props.period,\n  }\n\n  const cron = useCron(options)\n\n  watch(\n    () => props.modelValue,\n    (value) => {\n      if (value) {\n        cron.cron.value = value\n      }\n    },\n  )\n\n  watch(\n    () => props.period,\n    (value) => {\n      if (value) {\n        cron.period.select(value)\n      }\n    },\n  )\n\n  watch(\n    cron.cron,\n    (value) => {\n      emit('update:model-value', value)\n    },\n    { immediate: props.modelValue === undefined },\n  )\n\n  watch(cron.period.selected, (value) => {\n    emit('update:period', value.id)\n  })\n\n  watch(cron.error, (error) => {\n    emit('error', error)\n  })\n\n  return cron\n}\n\nexport const cronCoreProps = () => ({\n  /**\n   * The value of the cron expression\n   *\n   * @defaultValue crontab: `* * * * *`, quartz: `* * * * * *`\n   */\n  modelValue: {\n    type: String,\n  },\n  /**\n   * The id of a period to select\n   *\n   * @defaultValue last entry of `CronCoreProps.periods`\n   */\n  period: {\n    type: String,\n  },\n  /**\n   * The format of the cron expression, either crontab, quartz or spring\n   *\n   * @defaultValue `crontab`\n   */\n  format: {\n    type: String as PropType<CronFormat>,\n  },\n  /**\n   * The locale of the component, such as `en`, `de`, etc.\n   *\n   * @defaultValue `en`\n   */\n  locale: {\n    type: String,\n  },\n  /** The segments of the cron expression, such as second, minute, hour, etc. */\n  fields: {\n    type: Array as PropType<Field[]>,\n  },\n  /** The periods to select, e.g. Every month, day, etc.  */\n  periods: {\n    type: Array as PropType<Period[]>,\n  },\n  /** The custom locale object, used to override values of the current {@link Localization} */\n  customLocale: {\n    type: Object as PropType<Localization>,\n  },\n  /** Number of columns in the dropdown,\n   * e.g. the possible values of minute (0-59) will be displayed in a grid with 5 columns\n   *\n   * @defaultValue\n   * ```\n   * {\n   *    second: 5,\n   *    minute: 5,\n   *    hour: 4,\n   *    day: 4,\n   *  }\n   * ```\n   */\n  cols: {\n    type: Object as PropType<Record<string, number>>,\n    default: () => {\n      return {\n        second: 5,\n        minute: 5,\n        hour: 4,\n        day: 4,\n      }\n    },\n  },\n  /** Disable the cron editor */\n  disabled: {\n    type: Boolean,\n    default: false,\n  },\n\n  /** Whether the cron fields can be cleared */\n  clearable: {\n    type: Boolean,\n    default: true,\n  },\n})\n\n/**\n * Properties of {@link CronCore}.\n * These properties are shared across all cron components\n *\n * @interface\n */\nexport type CronCoreProps = Partial<ExtractPropTypes<ReturnType<typeof cronCoreProps>>>\n\nexport const CronCore = defineComponent({\n  name: 'VueCronCore',\n  props: cronCoreProps(),\n  emits: ['update:model-value', 'update:period', 'error'],\n  setup(props, ctx) {\n    const { error, selected, period } = setupCron(props, ctx)\n\n    return () => {\n      const slotProps = {\n        error: error,\n        fields: selected.value.map((s) => {\n          return {\n            id: s.id,\n            items: s.items,\n            cron: s.cron.value,\n            selectedStr: s.text.value,\n            events: {\n              'update:model-value': s.select,\n            },\n            attrs: {\n              modelValue: s.selected.value,\n            },\n            prefix: s.prefix.value,\n            suffix: s.suffix.value,\n          }\n        }),\n\n        period: {\n          attrs: {\n            modelValue: period.selected.value.id,\n          },\n          events: {\n            'update:model-value': period.select,\n          },\n          items: period.items,\n          prefix: period.prefix.value,\n          suffix: period.suffix.value,\n        },\n      }\n\n      return ctx.slots.default?.(slotProps)\n    }\n  },\n})\n","import {\n  computed,\n  defineComponent,\n  ref,\n  watch,\n  type PropType,\n  type Ref,\n  type SetupContext,\n  type WatchSource,\n} from 'vue'\nimport { splitArray } from '..'\n\ninterface SetOptions<T> {\n  items: T[]\n}\n\nexport function useSet<T>(options: SetOptions<T>) {\n  const { items } = options\n\n  const values = new Set<T>()\n  const updated = ref(0)\n\n  const forceUpdate = () => {\n    updated.value = updated.value + 1\n  }\n\n  const add = (item: T) => {\n    if (items.indexOf(item) == -1) {\n      return\n    }\n    values.add(item)\n    forceUpdate()\n  }\n\n  const has = (item: T) => {\n    return values.has(item)\n  }\n\n  const remove = (item: T) => {\n    if (values.delete(item)) {\n      forceUpdate()\n    }\n  }\n\n  const clear = () => {\n    values.clear()\n    forceUpdate()\n  }\n\n  const toggle = (item: T) => {\n    if (has(item)) {\n      remove(item)\n    } else {\n      add(item)\n    }\n  }\n\n  const equals = (items: T[]) => {\n    if (items.length != values.size) {\n      return false\n    }\n    for (const item of items) {\n      if (!values.has(item)) {\n        return false\n      }\n    }\n    return true\n  }\n\n  return {\n    values,\n    add,\n    toggle,\n    remove,\n    clear,\n    updated,\n    equals,\n  }\n}\n\nexport interface SelectOptions<T, V> extends SetOptions<T> {\n  multiple?: boolean\n  itemText?: string | ((item: T) => string)\n  itemValue?: string | ((item: T) => V)\n  cols?: number\n}\n\nexport function selectProps<T, V>() {\n  return {\n    modelValue: {\n      type: [String, Number, Array] as PropType<V | V[]>,\n    },\n    selection: {\n      type: String,\n    },\n    clearable: {\n      type: Boolean,\n      default: false,\n    },\n    items: {\n      type: Array as PropType<Array<T>>,\n      default: () => [],\n    },\n    multiple: {\n      type: Boolean,\n      default: false,\n    },\n    cols: {\n      type: Number,\n      default: 1,\n    },\n    itemText: {\n      type: [String, Function] as PropType<string | ((item: T) => string)>,\n      default: 'text',\n    },\n    itemValue: {\n      type: [String, Function] as PropType<string | ((item: T) => V)>,\n      default: 'value',\n    },\n    disabled: {\n      type: Boolean,\n      default: false,\n    },\n  }\n}\n\nexport function useSelect<T, V>(options: SelectOptions<T, V>) {\n  const { items, cols = 1, multiple = false, itemText = 'text', itemValue = 'value' } = options\n  const s = useSet<T>(options)\n  const selected: Ref<V[] | V> = multiple ? ref<Array<any>>([]) : ref<any>(null)\n  const selectedStr = ref('')\n\n  const select = (item: T) => {\n    if (multiple) {\n      s.toggle(item)\n    } else {\n      s.clear()\n      s.add(item)\n    }\n  }\n\n  const has = (item: T | null): boolean => {\n    if (item === null) {\n      return false\n    }\n    const value = getValue(item)\n    if (Array.isArray(selected.value)) {\n      return selected.value.includes(value)\n    } else {\n      return selected.value === value\n    }\n  }\n\n  const getValue = (item: any): V => {\n    if (typeof itemValue == 'function') {\n      return itemValue(item)\n    } else {\n      return item[itemValue]\n    }\n  }\n\n  const getText = (item: any): string => {\n    if (typeof itemText == 'function') {\n      return itemText(item)\n    } else {\n      return item[itemText]\n    }\n  }\n\n  const itemMap = new Map(items.map((i) => [getValue(i), i]))\n\n  const setItems = (items: T[]) => {\n    if (s.equals(items)) {\n      return\n    }\n    s.clear()\n    items.forEach((i) => select(i))\n  }\n\n  const setValues = (values: V[] | V) => {\n    values = Array.isArray(values) ? values : [values]\n    const items = values.map((v) => itemMap.get(v)).filter((item): item is T => !!item)\n    setItems(items)\n  }\n\n  watch(s.updated, () => {\n    const items = Array.from(s.values)\n    selected.value = multiple ? items.map(getValue) : getValue(items[0])\n    selectedStr.value = items.map(getText).join(',')\n  })\n\n  const isEmpty = computed(() => {\n    return multiple\n      ? !Array.isArray(selected.value) || selected.value.length == 0\n      : !!selected.value\n  })\n\n  return {\n    ...s,\n    select,\n    selected,\n    selectedStr,\n    itemRows: splitArray(items, cols),\n    setItems,\n    setValues,\n    isEmpty,\n    has,\n  }\n}\n\n/**\n * @interface\n */\nexport type UseSelectReturn<T, V> = ReturnType<typeof useSelect<T, V>>\n\nexport function setupSelect<T, V>(\n  options: SelectOptions<T, V>,\n  modelValue: WatchSource<V>,\n  { emit }: SetupContext<['update:model-value']>,\n): UseSelectReturn<T, V> {\n  const s = useSelect(options)\n\n  watch(s.selected, () => {\n    emit('update:model-value', s.selected.value)\n  })\n\n  watch(\n    modelValue,\n    (value) => {\n      if (value) {\n        s.setValues(value)\n      }\n    },\n    { immediate: true },\n  )\n\n  return s\n}\n\nexport const RenderlessSelect = defineComponent({\n  name: 'RenderlessSelect',\n  props: {\n    ...selectProps<any, any>(),\n    modelValue: {\n      type: [String, Number, Array],\n    },\n    selection: {\n      type: String,\n    },\n    clearable: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  emits: ['update:modelValue'],\n  setup(props, { emit, slots }) {\n    const s = useSelect<any, any>(props)\n\n    watch(s.selected, () => {\n      emit('update:modelValue', s.selected.value)\n    })\n\n    watch(\n      () => props.modelValue,\n      (value) => {\n        if (value) {\n          s.setValues(value)\n        }\n      },\n      { immediate: true },\n    )\n\n    return () => {\n      const slotProps = {\n        selectedStr: props.selection || s.selectedStr.value,\n        modelValue: props.modelValue,\n        items: props.items,\n        select: s.select,\n        isSelected: s.has,\n        clearable: props.clearable && !s.isEmpty.value,\n        clear: s.clear,\n        cols: props.cols,\n        rows: s.itemRows.length,\n        itemRows: s.itemRows,\n        multiple: props.multiple,\n        itemText: props.itemText,\n        itemValue: props.itemValue,\n      }\n\n      return slots.default?.(slotProps)\n    }\n  },\n})\n","import { type App } from 'vue'\nimport { CronCore } from './components/cron-core'\n\nexport {\n  CronCore,\n  cronCoreProps,\n  setupCron,\n  useCron,\n  type CronContext,\n  type CronCoreProps,\n  type CronOptions,\n  type UseCronReturn,\n} from './components/cron-core'\nexport {\n  RenderlessSelect,\n  selectProps,\n  setupSelect,\n  useSelect,\n  type SelectOptions,\n  type UseSelectReturn,\n} from './components/select'\nexport { createL10n, L10nEngine } from './locale'\nexport type * from './locale/types'\nexport type * from './types'\nexport { FieldPattern, FieldWrapper, TextPosition } from './types'\nexport { defaultItems, genItems, pad, splitArray, type toText } from './util'\n\nexport const CronCorePlugin = {\n  install: (app: App) => {\n    app.component('CronCore', CronCore)\n  },\n}\nexport default CronCorePlugin\n"],"x_google_ignoreList":[3],"mappings":"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"}