{"version":3,"file":"applyDateFns.mjs","names":["applyDateFns","dateFns","now","Date","applyDateFn","d","next","_next$1$beforeNow","_next$1$afterNow","Array","isArray","Error","setFullYear","setMonth","setDate","getDate","getDay","setHours","setMinutes","setSeconds","setMilliseconds","getTime","beforeNow","reduce","afterNow","a","b","Math","abs","getFullYear","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","end","slice"],"sources":["../../src/util/applyDateFns.ts"],"sourcesContent":["import { DateFn } from './DateFn'\n\nexport function applyDateFns(\n  dateFns: DateFn[],\n  { now = new Date() }: { now?: Date } = {}\n): Date | [Date, Date] {\n  function applyDateFn(\n    d: Date | [Date, Date],\n    next: DateFn\n  ): Date | [Date, Date] {\n    if (Array.isArray(d)) {\n      throw new Error(`can't apply a DateFn after makeInterval`)\n    }\n    d = new Date(d)\n    switch (next[0]) {\n      case 'now':\n        return now\n      case 'setYear':\n        d.setFullYear(next[1])\n        return d\n      case 'setMonth':\n        d.setMonth(next[1])\n        return d\n      case 'setDate':\n        d.setDate(next[1])\n        return d\n      case 'setDay':\n        d.setDate(d.getDate() + (next[1] - d.getDay()))\n        return d\n      case 'setHours':\n        d.setHours(next[1])\n        return d\n      case 'setMinutes':\n        d.setMinutes(next[1])\n        return d\n      case 'setSeconds':\n        d.setSeconds(next[1])\n        return d\n      case 'setMilliseconds':\n        d = new Date(d)\n        d.setMilliseconds(next[1])\n        return d\n      case 'startOfYear':\n        d.setMonth(0)\n      // eslint-disable-next-line no-fallthrough\n      case 'startOfMonth':\n        d.setDate(1)\n      // eslint-disable-next-line no-fallthrough\n      case 'startOfDay':\n        d.setHours(0)\n      // eslint-disable-next-line no-fallthrough\n      case 'startOfHour':\n        d.setMinutes(0)\n      // eslint-disable-next-line no-fallthrough\n      case 'startOfMinute':\n        d.setSeconds(0)\n      // eslint-disable-next-line no-fallthrough\n      case 'startOfSecond':\n        d.setMilliseconds(0)\n        return d\n      case 'if':\n        return d.getTime() < now.getTime()\n          ? next[1].beforeNow?.reduce(applyDateFn, d) || d\n          : d.getTime() > now.getTime()\n          ? next[1].afterNow?.reduce(applyDateFn, d) || d\n          : d\n      case 'closestToNow': {\n        const a = next[1].reduce(applyDateFn, d)\n        const b = next[2].reduce(applyDateFn, d)\n        if (Array.isArray(a) || Array.isArray(b)) {\n          throw new Error(`can't use makeInteval inside closestToNow`)\n        }\n        return Math.abs(a.getTime() - d.getTime()) <\n          Math.abs(b.getTime() - d.getTime())\n          ? a\n          : b\n      }\n      case 'addYears':\n        d.setFullYear(d.getFullYear() + next[1])\n        return d\n      case 'addMonths':\n        d.setMonth(d.getMonth() + next[1])\n        return d\n      case 'addWeeks':\n        d.setDate(d.getDate() + next[1] * 7)\n        return d\n      case 'addDays':\n        d.setDate(d.getDate() + next[1])\n        return d\n      case 'addHours':\n        d.setHours(d.getHours() + next[1])\n        return d\n      case 'addMinutes':\n        d.setMinutes(d.getMinutes() + next[1])\n        return d\n      case 'addSeconds':\n        d.setSeconds(d.getSeconds() + next[1])\n        return d\n      case 'addMilliseconds':\n        d.setMilliseconds(d.getMilliseconds() + next[1])\n        return d\n      case 'makeInterval': {\n        const end = (next.slice(1) as DateFn[]).reduce(applyDateFn, d)\n        if (Array.isArray(end)) {\n          throw new Error(`can't use makeInterval inside makeInterval`)\n        }\n        if (end < d) {\n          throw new Error(\n            'expression seems invalid, produced an end date before the start date'\n          )\n        }\n        return [d, end]\n      }\n    }\n    return d\n  }\n\n  return dateFns.reduce(applyDateFn, now)\n}\n"],"mappings":"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","ignoreList":[]}