{"version":3,"file":"moment_wrapper.cjs","sources":["../../../src/datetime/moment_wrapper.ts"],"sourcesContent":["import moment, { Moment, MomentInput, DurationInputArg1, DurationInputArg2 } from 'moment';\nimport { tz } from 'moment-timezone';\n\nimport { TimeZone } from '../types/time';\n/* eslint-disable id-blacklist, no-restricted-imports */\nexport interface DateTimeBuiltinFormat {\n  __momentBuiltinFormatBrand: any;\n}\nexport const ISO_8601: DateTimeBuiltinFormat = moment.ISO_8601;\nexport type DateTimeInput = Date | string | number | Array<string | number> | DateTime | null; // | undefined;\nexport type FormatInput = string | DateTimeBuiltinFormat | undefined;\nexport type DurationInput = string | number | DateTimeDuration;\nexport type DurationUnit =\n  | 'year'\n  | 'years'\n  | 'y'\n  | 'month'\n  | 'months'\n  | 'M'\n  | 'week'\n  | 'weeks'\n  | 'isoWeek'\n  | 'w'\n  | 'day'\n  | 'days'\n  | 'd'\n  | 'hour'\n  | 'hours'\n  | 'h'\n  | 'minute'\n  | 'minutes'\n  | 'm'\n  | 'second'\n  | 'seconds'\n  | 's'\n  | 'millisecond'\n  | 'milliseconds'\n  | 'ms'\n  | 'quarter'\n  | 'quarters'\n  | 'Q';\n\nexport interface DateTimeLocale {\n  firstDayOfWeek: () => number;\n}\n\nexport interface DateTimeDuration {\n  asHours: () => number;\n  hours: () => number;\n  minutes: () => number;\n  seconds: () => number;\n  asSeconds: () => number;\n}\n\nexport interface DateTime extends Object {\n  add: (amount?: DateTimeInput, unit?: DurationUnit) => DateTime;\n  set: (unit: DurationUnit | 'date', amount: DateTimeInput) => void;\n  diff: (amount: DateTimeInput, unit?: DurationUnit, truncate?: boolean) => number;\n  endOf: (unitOfTime: DurationUnit) => DateTime;\n  format: (formatInput?: FormatInput) => string;\n  fromNow: (withoutSuffix?: boolean) => string;\n  from: (formaInput: DateTimeInput) => string;\n  isSame: (input?: DateTimeInput, granularity?: DurationUnit) => boolean;\n  isBefore: (input?: DateTimeInput) => boolean;\n  isValid: () => boolean;\n  local: () => DateTime;\n  locale: (locale: string) => DateTime;\n  startOf: (unitOfTime: DurationUnit) => DateTime;\n  subtract: (amount?: DateTimeInput, unit?: DurationUnit) => DateTime;\n  toDate: () => Date;\n  toISOString: (keepOffset?: boolean) => string;\n  isoWeekday: (day?: number | string) => number | string;\n  valueOf: () => number;\n  unix: () => number;\n  utc: () => DateTime;\n  utcOffset: () => number;\n  hour?: () => number;\n  minute?: () => number;\n}\n\nexport const setLocale = (language: string) => {\n  moment.locale(language);\n};\n\nexport const getLocale = () => {\n  return moment.locale();\n};\n\nexport const getLocaleData = (): DateTimeLocale => {\n  return moment.localeData();\n};\n\nexport const isDateTimeInput = (value: unknown): value is DateTimeInput => {\n  return (\n    value === null ||\n    typeof value === 'string' ||\n    typeof value === 'number' ||\n    value instanceof Date ||\n    (Array.isArray(value) && value.every((v) => typeof v === 'string' || typeof v === 'number')) ||\n    isDateTime(value)\n  );\n};\n\nexport const isDateTime = (value: unknown): value is DateTime => {\n  return moment.isMoment(value);\n};\n\nexport const toUtc = (input?: DateTimeInput, formatInput?: FormatInput): DateTime => {\n  return moment.utc(input as MomentInput, formatInput) as DateTime;\n};\n\nexport const toDuration = (input?: DurationInput, unit?: DurationUnit): DateTimeDuration => {\n  // moment built-in types are a bit flaky, for example `isoWeek` is not in the type definition but it's present in the js source.\n  return moment.duration(input as DurationInputArg1, unit as DurationInputArg2) as DateTimeDuration;\n};\n\nexport const dateTime = (input?: DateTimeInput, formatInput?: FormatInput): DateTime => {\n  return moment(input as MomentInput, formatInput) as DateTime;\n};\n\nexport const dateTimeAsMoment = (input?: DateTimeInput) => {\n  return dateTime(input) as Moment;\n};\n\nexport const dateTimeForTimeZone = (\n  timezone?: TimeZone,\n  input?: DateTimeInput,\n  formatInput?: FormatInput\n): DateTime => {\n  if (timezone && timezone !== 'browser') {\n    let result: moment.Moment;\n\n    if (typeof input === 'string' && formatInput) {\n      result = tz(input, formatInput, timezone);\n    } else {\n      result = tz(input, timezone);\n    }\n\n    if (isDateTime(result)) {\n      return result;\n    }\n  }\n\n  return dateTime(input, formatInput);\n};\n\nexport const getWeekdayIndex = (day: string) => {\n  return moment.weekdays().findIndex((wd) => wd.toLowerCase() === day.toLowerCase());\n};\n\nexport const getWeekdayIndexByEnglishName = (day: string) =>\n  ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'].findIndex(\n    (wd) => wd.toLowerCase() === day.toLowerCase()\n  );\n\nexport const setWeekStart = (weekStart?: string) => {\n  const suffix = '-weekStart';\n  const language = getLocale().replace(suffix, '');\n  const dow = weekStart ? getWeekdayIndexByEnglishName(weekStart) : -1;\n  if (dow !== -1) {\n    moment.updateLocale(language + suffix, {\n      parentLocale: language,\n      week: {\n        dow,\n      },\n    });\n  } else {\n    setLocale(language);\n  }\n};\n"],"names":["moment","tz"],"mappings":";;;;;;;;;;;;AAQO,MAAM,WAAkCA,uBAAA,CAAO;AAwE/C,MAAM,SAAA,GAAY,CAAC,QAAA,KAAqB;AAC7C,EAAAA,uBAAA,CAAO,OAAO,QAAQ,CAAA;AACxB;AAEO,MAAM,YAAY,MAAM;AAC7B,EAAA,OAAOA,wBAAO,MAAA,EAAO;AACvB;AAEO,MAAM,gBAAgB,MAAsB;AACjD,EAAA,OAAOA,wBAAO,UAAA,EAAW;AAC3B;AAEO,MAAM,eAAA,GAAkB,CAAC,KAAA,KAA2C;AACzE,EAAA,OACE,KAAA,KAAU,IAAA,IACV,OAAO,KAAA,KAAU,QAAA,IACjB,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,YAAiB,IAAA,IAChB,KAAA,CAAM,OAAA,CAAQ,KAAK,KAAK,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,KAAM,OAAO,CAAA,KAAM,QAAA,IAAY,OAAO,CAAA,KAAM,QAAQ,CAAA,IAC1F,UAAA,CAAW,KAAK,CAAA;AAEpB;AAEO,MAAM,UAAA,GAAa,CAAC,KAAA,KAAsC;AAC/D,EAAA,OAAOA,uBAAA,CAAO,SAAS,KAAK,CAAA;AAC9B;AAEO,MAAM,KAAA,GAAQ,CAAC,KAAA,EAAuB,WAAA,KAAwC;AACnF,EAAA,OAAOA,uBAAA,CAAO,GAAA,CAAI,KAAA,EAAsB,WAAW,CAAA;AACrD;AAEO,MAAM,UAAA,GAAa,CAAC,KAAA,EAAuB,IAAA,KAA0C;AAE1F,EAAA,OAAOA,uBAAA,CAAO,QAAA,CAAS,KAAA,EAA4B,IAAyB,CAAA;AAC9E;AAEO,MAAM,QAAA,GAAW,CAAC,KAAA,EAAuB,WAAA,KAAwC;AACtF,EAAA,OAAOA,uBAAA,CAAO,OAAsB,WAAW,CAAA;AACjD;AAEO,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAA0B;AACzD,EAAA,OAAO,SAAS,KAAK,CAAA;AACvB;AAEO,MAAM,mBAAA,GAAsB,CACjC,QAAA,EACA,KAAA,EACA,WAAA,KACa;AACb,EAAA,IAAI,QAAA,IAAY,aAAa,SAAA,EAAW;AACtC,IAAA,IAAI,MAAA;AAEJ,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,WAAA,EAAa;AAC5C,MAAA,MAAA,GAASC,WAAA,CAAG,KAAA,EAAO,WAAA,EAAa,QAAQ,CAAA;AAAA,IAC1C,CAAA,MAAO;AACL,MAAA,MAAA,GAASA,WAAA,CAAG,OAAO,QAAQ,CAAA;AAAA,IAC7B;AAEA,IAAA,IAAI,UAAA,CAAW,MAAM,CAAA,EAAG;AACtB,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,OAAO,QAAA,CAAS,OAAO,WAAW,CAAA;AACpC;AAEO,MAAM,eAAA,GAAkB,CAAC,GAAA,KAAgB;AAC9C,EAAA,OAAOD,uBAAA,CAAO,QAAA,EAAS,CAAE,SAAA,CAAU,CAAC,EAAA,KAAO,EAAA,CAAG,WAAA,EAAY,KAAM,GAAA,CAAI,WAAA,EAAa,CAAA;AACnF;AAEO,MAAM,4BAAA,GAA+B,CAAC,GAAA,KAC3C,CAAC,QAAA,EAAU,QAAA,EAAU,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,QAAA,EAAU,UAAU,CAAA,CAAE,SAAA;AAAA,EAC7E,CAAC,EAAA,KAAO,EAAA,CAAG,WAAA,EAAY,KAAM,IAAI,WAAA;AACnC;AAEK,MAAM,YAAA,GAAe,CAAC,SAAA,KAAuB;AAClD,EAAA,MAAM,MAAA,GAAS,YAAA;AACf,EAAA,MAAM,QAAA,GAAW,SAAA,EAAU,CAAE,OAAA,CAAQ,QAAQ,EAAE,CAAA;AAC/C,EAAA,MAAM,GAAA,GAAM,SAAA,GAAY,4BAAA,CAA6B,SAAS,CAAA,GAAI,CAAA,CAAA;AAClE,EAAA,IAAI,QAAQ,CAAA,CAAA,EAAI;AACd,IAAAA,uBAAA,CAAO,YAAA,CAAa,WAAW,MAAA,EAAQ;AAAA,MACrC,YAAA,EAAc,QAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ;AAAA;AACF,KACD,CAAA;AAAA,EACH,CAAA,MAAO;AACL,IAAA,SAAA,CAAU,QAAQ,CAAA;AAAA,EACpB;AACF;;;;;;;;;;;;;;;;;"}