{"version":3,"sources":["../src/range.ts"],"sourcesContent":["import { format } from \"./format\"\nimport { ap } from \"./ap\"\nimport type { FormatToken } from \"./types\"\n/**\n * Returns an array of options for a given token in a given locale.\n * @param token - Get the full range of options for a given token\n * @param locale - The locale to fetch the options for.\n */\nexport function range(\n  token: FormatToken,\n  locale = \"en\",\n  genitive = false\n): string[] {\n  const r: (n: number, c: (index: number) => string | number) => string[] = (\n    n,\n    c\n  ) =>\n    Array(n)\n      .fill(\"\")\n      .map((_, i) => `${c(i)}`)\n\n  if (token === \"M\") return r(12, (i) => i + 1)\n  if (token === \"MM\")\n    return r(12, (i) => {\n      const m = i + 1\n      return m < 10 ? `0${m}` : m\n    })\n  // MMM and MMMM\n  if (token.startsWith(\"M\"))\n    return range(\"MM\").map((m) =>\n      format(`2000-${m}-05`, token, locale, genitive)\n    )\n  if (token.startsWith(\"d\"))\n    return r(7, (i) => `0${i + 2}`).map((d) =>\n      format(`2022-10-${d}`, token, locale)\n    )\n  if (token === \"a\")\n    return [ap(\"am\", locale).toLowerCase(), ap(\"pm\", locale).toLowerCase()]\n  if (token === \"A\")\n    return [ap(\"am\", locale).toUpperCase(), ap(\"pm\", locale).toUpperCase()]\n  if (token.startsWith(\"Y\")) {\n    const year = new Date().getFullYear()\n    return r(120, (i) => i + 1).reduce(\n      (ranges, i) => {\n        if (i !== \"120\")\n          ranges.push(format(`${year + Number(i)}-06-06`, token, locale))\n        ranges.unshift(format(`${year - Number(i)}-06-06`, token, locale))\n        return ranges\n      },\n      [format(`${year}-06-06`, token, locale)]\n    )\n  }\n  if (token.startsWith(\"D\"))\n    return r(31, (i) => `${token === \"DD\" && i < 9 ? \"0\" : \"\"}${i + 1}`)\n  if (token.startsWith(\"H\"))\n    return r(24, (i) => `${token === \"HH\" && i < 10 ? \"0\" : \"\"}${i}`)\n  if (token.startsWith(\"h\"))\n    return r(12, (i) => `${token === \"hh\" && i < 9 ? \"0\" : \"\"}${i + 1}`)\n  if (token.startsWith(\"m\") || token.startsWith(\"s\"))\n    return r(60, (i) => `${token.length > 1 && i < 10 ? \"0\" : \"\"}${i}`)\n  return []\n}\n"],"mappings":";AAAA,SAAS,cAAc;AACvB,SAAS,UAAU;AAOZ,SAAS,MACd,OACA,SAAS,MACT,WAAW,OACD;AACV,QAAM,IAAoE,CACxE,GACA,MAEA,MAAM,CAAC,EACJ,KAAK,EAAE,EACP,IAAI,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE;AAE5B,MAAI,UAAU,IAAK,QAAO,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;AAC5C,MAAI,UAAU;AACZ,WAAO,EAAE,IAAI,CAAC,MAAM;AAClB,YAAM,IAAI,IAAI;AACd,aAAO,IAAI,KAAK,IAAI,CAAC,KAAK;AAAA,IAC5B,CAAC;AAEH,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,MAAM,IAAI,EAAE;AAAA,MAAI,CAAC,MACtB,OAAO,QAAQ,CAAC,OAAO,OAAO,QAAQ,QAAQ;AAAA,IAChD;AACF,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE;AAAA,MAAI,CAAC,MACnC,OAAO,WAAW,CAAC,IAAI,OAAO,MAAM;AAAA,IACtC;AACF,MAAI,UAAU;AACZ,WAAO,CAAC,GAAG,MAAM,MAAM,EAAE,YAAY,GAAG,GAAG,MAAM,MAAM,EAAE,YAAY,CAAC;AACxE,MAAI,UAAU;AACZ,WAAO,CAAC,GAAG,MAAM,MAAM,EAAE,YAAY,GAAG,GAAG,MAAM,MAAM,EAAE,YAAY,CAAC;AACxE,MAAI,MAAM,WAAW,GAAG,GAAG;AACzB,UAAM,QAAO,oBAAI,KAAK,GAAE,YAAY;AACpC,WAAO,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AAAA,MAC1B,CAAC,QAAQ,MAAM;AACb,YAAI,MAAM;AACR,iBAAO,KAAK,OAAO,GAAG,OAAO,OAAO,CAAC,CAAC,UAAU,OAAO,MAAM,CAAC;AAChE,eAAO,QAAQ,OAAO,GAAG,OAAO,OAAO,CAAC,CAAC,UAAU,OAAO,MAAM,CAAC;AACjE,eAAO;AAAA,MACT;AAAA,MACA,CAAC,OAAO,GAAG,IAAI,UAAU,OAAO,MAAM,CAAC;AAAA,IACzC;AAAA,EACF;AACA,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,EAAE,IAAI,CAAC,MAAM,GAAG,UAAU,QAAQ,IAAI,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;AACrE,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,EAAE,IAAI,CAAC,MAAM,GAAG,UAAU,QAAQ,IAAI,KAAK,MAAM,EAAE,GAAG,CAAC,EAAE;AAClE,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,EAAE,IAAI,CAAC,MAAM,GAAG,UAAU,QAAQ,IAAI,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;AACrE,MAAI,MAAM,WAAW,GAAG,KAAK,MAAM,WAAW,GAAG;AAC/C,WAAO,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,SAAS,KAAK,IAAI,KAAK,MAAM,EAAE,GAAG,CAAC,EAAE;AACpE,SAAO,CAAC;AACV;","names":[]}