Lightcord/LightcordApi/js/main.min.js.map

1 line
1.2 MiB
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack://LightcordApi/webpack/bootstrap","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/toDate/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://LightcordApi/./src/alias/react.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isValid/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/addDays/index.js","webpack://LightcordApi/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://LightcordApi/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://LightcordApi/./src/modules/WebpackLoader.ts","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/addMonths/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getHours/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getMinutes/index.js","webpack://LightcordApi/./node_modules/classnames/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfDay/index.js","webpack://LightcordApi/./src/modules/noop.ts","webpack://LightcordApi/./node_modules/date-fns/esm/isSameDay/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isAfter/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/addWeeks/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfQuarter/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getQuarter/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/subMonths/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/addYears/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/format/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isBefore/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfDay/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/addHours/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/subDays/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/addMinutes/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getTime/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/parse/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setQuarter/index.js","webpack://LightcordApi/./src/alias/react-dom.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfWeekYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getDate/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setHours/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setMinutes/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/subYears/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setYear/index.js","webpack://LightcordApi/./node_modules/@babel/runtime/helpers/extends.js","webpack://LightcordApi/./src/modules/Utils.ts","webpack://LightcordApi/./node_modules/date-fns/esm/getWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isSameYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isSameMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isSameQuarter/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getDay/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://LightcordApi/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://LightcordApi/./node_modules/define-properties/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isWithinInterval/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/min/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/max/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isDate/index.js","webpack://LightcordApi/./src/modules/uuid.ts","webpack://LightcordApi/./node_modules/date-fns/esm/parseISO/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setSeconds/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getWeekYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isEqual/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getDaysInMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getSeconds/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/subWeeks/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/assign/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://LightcordApi/./src/components/inputs/TextInput.tsx","webpack://LightcordApi/./src/components/general/Title.tsx","webpack://LightcordApi/./src/modules/cloneNullProto.ts","webpack://LightcordApi/./src/modules/excludeProperties.ts","webpack://LightcordApi/./src/components/private/Notices.tsx","webpack://LightcordApi/./node_modules/date-fns/esm/subHours/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/subMinutes/index.js","webpack://LightcordApi/./node_modules/warning/warning.js","webpack://LightcordApi/./node_modules/create-react-context/lib/index.js","webpack://LightcordApi/./src/modules/BDModules.ts","webpack://LightcordApi/./src/components/components.ts","webpack://LightcordApi/./src/components/inputs/Button.tsx","webpack://LightcordApi/external \"powercord/webpack\"","webpack://LightcordApi/./src/components/general/AlertBox.tsx","webpack://LightcordApi/./src/modules/DiscordTools.ts","webpack://LightcordApi/./src/components/private/Notice.tsx","webpack://LightcordApi/external \"events\"","webpack://LightcordApi/./src/components/general/Flex.tsx","webpack://LightcordApi/./src/components/general/Text.ts","webpack://LightcordApi/./src/components/inputs/DateRange.tsx","webpack://LightcordApi/./src/components/inputs/DateInput.tsx","webpack://LightcordApi/./node_modules/prop-types/index.js","webpack://LightcordApi/./node_modules/object-keys/index.js","webpack://LightcordApi/./node_modules/object-keys/isArguments.js","webpack://LightcordApi/./node_modules/es-abstract/helpers/callBind.js","webpack://LightcordApi/./node_modules/function-bind/index.js","webpack://LightcordApi/./node_modules/has-symbols/index.js","webpack://LightcordApi/./node_modules/object-is/implementation.js","webpack://LightcordApi/./node_modules/object-is/polyfill.js","webpack://LightcordApi/./node_modules/regexp.prototype.flags/implementation.js","webpack://LightcordApi/./node_modules/regexp.prototype.flags/polyfill.js","webpack://LightcordApi/./src/modules/environnement.ts","webpack://LightcordApi/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://LightcordApi/./node_modules/deep-equal/index.js","webpack://LightcordApi/./src/index.ts","webpack://LightcordApi/./src/components/inputs/Switch.tsx","webpack://LightcordApi/./src/components/inputs/RadioGroup.tsx","webpack://LightcordApi/./src/components/inputs/TextArea.tsx","webpack://LightcordApi/./src/components/inputs/Dropdown.tsx","webpack://LightcordApi/./src/components/general/SettingsTitle.tsx","webpack://LightcordApi/./src/components/general/Tabs.tsx","webpack://LightcordApi/./src/components/general/SettingSubTitle.tsx","webpack://LightcordApi/./src/components/general/CodeBlock.tsx","webpack://LightcordApi/./src/components/general/Tooltip.ts","webpack://LightcordApi/./src/components/inputs/ColorPicker.tsx","webpack://LightcordApi/./src/modules/PluginUtilities.ts","webpack://LightcordApi/external \"uuid/v1\"","webpack://LightcordApi/external \"uuid/v4\"","webpack://LightcordApi/./src/components/general/ErrorCatcher.tsx","webpack://LightcordApi/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://LightcordApi/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://LightcordApi/./node_modules/object-keys/implementation.js","webpack://LightcordApi/./node_modules/is-arguments/index.js","webpack://LightcordApi/./node_modules/object-is/index.js","webpack://LightcordApi/./node_modules/function-bind/implementation.js","webpack://LightcordApi/./node_modules/es-abstract/GetIntrinsic.js","webpack://LightcordApi/./node_modules/has-symbols/shams.js","webpack://LightcordApi/./node_modules/object-is/shim.js","webpack://LightcordApi/./node_modules/is-regex/index.js","webpack://LightcordApi/./node_modules/regexp.prototype.flags/index.js","webpack://LightcordApi/./node_modules/regexp.prototype.flags/shim.js","webpack://LightcordApi/./node_modules/is-date-object/index.js","webpack://LightcordApi/./node_modules/create-react-context/lib/implementation.js","webpack://LightcordApi/./node_modules/gud/index.js","webpack://LightcordApi/./src/modules/patchers.ts","webpack://LightcordApi/./src/modules/Unfreeze.ts","webpack://LightcordApi/./src/modules/lazyLoader.ts","webpack://LightcordApi/./src/modules/settings.ts","webpack://LightcordApi/external \"electron\"","webpack://LightcordApi/./node_modules/date-fns/esm/add/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isWeekend/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isSunday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isSaturday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/addBusinessDays/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfISOWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getISOWeekYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setISOWeekYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/addISOWeekYears/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/addQuarters/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/addSeconds/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/areIntervalsOverlapping/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/closestIndexTo/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/closestTo/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/compareAsc/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/compareDesc/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInBusinessDays/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInCalendarISOWeekYears/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInCalendarISOWeeks/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInCalendarQuarters/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInDays/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInHours/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/subISOWeekYears/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInISOWeekYears/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInMonths/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/differenceInYears/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/eachDayOfInterval/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/eachHourOfInterval/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/eachMonthOfInterval/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/eachQuarterOfInterval/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/eachWeekOfInterval/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/eachWeekendOfInterval/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/eachWeekendOfMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/eachWeekendOfYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/eachYearOfInterval/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfDecade/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfHour/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfISOWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfISOWeekYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfMinute/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfQuarter/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfSecond/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfToday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfTomorrow/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/endOfYesterday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/formatDistance/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/formatDistanceStrict/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/formatDistanceToNow/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/formatDistanceToNowStrict/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/formatDuration/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/formatISO/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/formatISO9075/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/formatISODuration/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/formatRFC3339/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/formatRFC7231/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/formatRelative/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/fromUnixTime/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getDayOfYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isLeapYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getDaysInYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getDecade/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getISODay/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getISOWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getISOWeeksInYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getMilliseconds/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getOverlappingDaysInIntervals/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getUnixTime/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getWeekOfMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/lastDayOfMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/getWeeksInMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/sub/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/intervalToDuration/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isExists/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isFirstDayOfMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isFriday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isFuture/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isMatch/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isMonday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isPast/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfHour/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isSameHour/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isSameWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isSameISOWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isSameISOWeekYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfMinute/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isSameMinute/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfSecond/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isSameSecond/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isThisHour/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isThisISOWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isThisMinute/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isThisMonth/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isThisQuarter/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isThisSecond/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isThisWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isThisYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isThursday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isToday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isTomorrow/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isTuesday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isWednesday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/isYesterday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/lastDayOfDecade/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/lastDayOfWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/lastDayOfISOWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/lastDayOfISOWeekYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/lastDayOfQuarter/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/lastDayOfYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/lightFormat/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/parseJSON/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/roundToNearestMinutes/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/set/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setDate/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setDay/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setDayOfYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setISODay/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setISOWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setMilliseconds/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setWeek/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/setWeekYear/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfDecade/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfToday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfTomorrow/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/startOfYesterday/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/subBusinessDays/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/subQuarters/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/subSeconds/index.js","webpack://LightcordApi/./node_modules/date-fns/esm/constants/index.js","webpack://LightcordApi/./node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","webpack://LightcordApi/./node_modules/popper.js/dist/esm/popper.js","webpack://LightcordApi/./node_modules/react-popper/lib/esm/Manager.js","webpack://LightcordApi/./node_modules/react-popper/lib/esm/utils.js","webpack://LightcordApi/./node_modules/react-popper/lib/esm/Popper.js","webpack://LightcordApi/./node_modules/react-popper/lib/esm/Reference.js","webpack://LightcordApi/./node_modules/react-datepicker/dist/es/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","getDefault","getModuleExports","object","property","prototype","hasOwnProperty","p","s","requiredArgs","required","args","length","TypeError","toDate","argument","arguments","argStr","toString","Date","getTime","console","warn","Error","stack","NaN","toInteger","dirtyNumber","number","Number","isNaN","Math","ceil","floor","window","React","BdApi","e","require","EDApi","addLeadingZeros","targetLength","sign","output","abs","getYear","dirtyDate","date","year","getFullYear","isValid","getDateMillisecondsPart","getTimezoneOffsetInMilliseconds","baseTimezoneOffset","getTimezoneOffset","setSeconds","startOfWeek","dirtyOptions","options","locale","localeWeekStartsOn","weekStartsOn","defaultWeekStartsOn","RangeError","day","getDay","diff","setDate","getDate","setHours","addDays","dirtyAmount","amount","_assertThisInitialized","self","ReferenceError","_defineProperty","obj","configurable","writable","BDModules","WebpackLoader","id","filter","result","props","mod","doesMatch","prop","default","WebpackLoaderError","message","super","this","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","round","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","getMonth","daysInMonth","setFullYear","getHours","hours","dirtyMonth","month","dateWithDesiredMonth","min","getMinutes","minutes","hasOwn","classNames","classes","arg","argType","push","Array","isArray","inner","apply","join","startOfDay","NOOP","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","width","String","defaultWidth","formats","formatLong","full","long","medium","short","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","context","formattingValues","defaultFormattingWidth","_defaultWidth","_width","values","argumentCallback","buildMatchFn","dirtyString","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","match","matchedString","parsePatterns","defaultParseWidth","findIndex","array","predicate","pattern","test","findKey","valueCallback","rest","slice","code","formatDistance","token","count","replace","addSuffix","comparison","formatRelative","_date","_baseDate","_options","localize","ordinalNumber","_dirtyOptions","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchPatternFn","parseResult","parsePattern","parseInt","any","index","firstWeekContainsDate","isAfter","dirtyDateToCompare","dateToCompare","subMilliseconds","addWeeks","days","startOfUTCWeek","getUTCDay","setUTCDate","getUTCDate","setUTCHours","formatters","y","signedYear","getUTCFullYear","M","getUTCMonth","a","dayPeriodEnumValue","getUTCHours","toUpperCase","h","H","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","fractionalSeconds","pow","addMilliseconds","timestamp","startOfMonth","startOfQuarter","currentMonth","startOfUTCISOWeek","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","indexOf","isProtectedWeekYearToken","throwProtectedError","format","input","concat","getQuarter","subMonths","differenceInCalendarMonths","dateLeft","dateRight","yearDiff","monthDiff","addYears","differenceInCalendarYears","dayPeriodEnum","formatTimezoneShort","offset","dirtyDelimiter","absOffset","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","G","unit","lightFormatters","Y","signedWeekYear","getUTCWeekYear","weekYear","twoDigitYear","R","isoWeekYear","getUTCISOWeekYear","u","Q","q","L","w","week","getUTCWeek","I","isoWeek","getUTCISOWeek","D","dayOfYear","getUTCDayOfYear","setUTCMonth","startOfYearTimestamp","difference","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","b","B","K","k","X","_localize","timezoneOffset","_originalDate","x","O","z","originalDate","T","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","utcDate","formatterOptions","map","substring","firstCharacter","longFormatter","longFormatters","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isBefore","startOfYear","cleanDate","endOfDay","addHours","subDays","addMinutes","setUTCDay","dirtyDay","currentDay","remainder","dayIndex","numericPatterns","timezonePatterns","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","RegExp","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","priority","parse","set","flags","setUTCFullYear","incompatibleTokens","isTwoDigitYear","validate","normalizedTwoDigitYear","_match","_flags","firstWeekOfYear","setUTCWeek","dirtyWeek","setUTCISOWeek","dirtyISOWeek","subPriority","isLeapYear","wholeWeekDays","setUTCISODay","isPM","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","timestampIsSet","_token","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","dateString","formatString","subFnOptions","setters","dateToSystemTimezone","tokens","usedTokens","parser","incompatibleToken","_i","usedToken","fullToken","uniquePrioritySetters","setter","sort","setterArray","convertedDate","setQuarter","dirtyQuarter","oldQuarter","ReactDOM","endOfMonth","startOfWeekYear","firstWeek","dirtyHours","setMinutes","dirtyMinutes","subYears","setYear","dirtyYear","_extends","assign","target","source","Utils","ReactElement","element","document","createElement","render","path","segments","split","seg","undefined","color","fill","res","className","startsWith","dom","traverseUp","domFiber","keys","find","_currentElement","compFiber","_owner","_instance","GetCompFiber","fiber","parentFiber","return","type","stateNode","classnames","classname","removeDa","includes","JSON","stringify","formatJSObject","original","log","color_name","Lightcord","DiscordModules","constants","Colors","str","func","times","results","LightcordApiError","getWeek","isSameYear","isSameMonth","isSameQuarter","dateLeftStartOfQuarter","dateRightStartOfQuarter","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","_inheritsLoose","subClass","superClass","constructor","__proto__","hasSymbols","toStr","origDefineProperty","supportsDescriptors","_","arePropertyDescriptorsSupported","fn","defineProperties","predicates","getOwnPropertySymbols","differenceInCalendarWeeks","startOfWeekLeft","startOfWeekRight","endOfWeek","isWithinInterval","dirtyInterval","interval","startTime","start","endTime","end","dirtyDatesArray","datesArray","forEach","currentDate","max","isDate","uuid","uuidv4","v1","uuidv1","v4","patterns","dateTimeDelimiter","timeZoneDelimiter","timezone","dateRegex","timeRegex","timezoneRegex","parseISO","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","parseTime","parseTimezone","timeString","substr","exec","regex","captures","century","isWeekDate","parseDateUnit","validateWeekDate","_year","dayOfISOWeekYear","fourthOfJanuaryDay","validateDate","daysInMonths","validateDayOfYearDate","parseTimeUnit","seconds","validateTime","parseFloat","timezoneString","validateTimezone","_hours","dirtySeconds","getWeekYear","isEqual","dirtyLeftDate","dirtyRightDate","getDaysInMonth","monthIndex","lastDayOfMonth","getSeconds","subWeeks","dateLongFormatter","timeLongFormatter","P","dateTimeLongFormatter","dateTimeFormat","datePattern","timePattern","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","dirtyObject","startOfUTCWeekYear","startOfUTCISOWeekYear","fourthOfJanuary","TextInputModules","AllPreviews","getInternalTextInput","TextInput","PureComponent","onChange","onFocus","onBlur","state","displayName","hasSet","setState","forceUpdate","ev","TextAreaComponent","size","disabled","placeholder","error","maxLength","inputClassName","defaultProps","help","TitleModules","Title","Component","colorStandard","size32","h2","colorModule","sizeModule","titleModule","size14","defaultColor","defaultMarginh2","children","cloneNullProto","excludeProperties","newObj","events","EventEmitter","Notices","noticeHandler","on","off","hasNotice","notice","notices","subHours","subMinutes","warning","_react2","_interopRequireDefault","_implementation2","createContext","req","filterDangerous","mods","protect","theModule","remove","clear","getToken","getEmail","showToken","proxy","Proxy","getOwnPropertyDescriptor","setReq","__extra_id__","mdl","Webpackloader","ids","dangerousBDModules","DangerousWebpackloader","RadioGroupProxied","createProxyErrorCatcherClass","inputs","Button","Switch","Choices","RadioGroup","TextArea","Dropdown","ColorPicker","DateRange","DateInput","general","SettingsTitle","SettingSubTitle","Tabs","CodeBlock","Tooltip","AlertBox","Flex","FlexChild","ErrorCatcher","Text","ButtonModules","hover","findByUniqueProperties","flexModule","euhModule1","buttonModule","colorsModule","onClick","onMouseDown","wrapper","look","hoverColor","style","onRightClick","toLowerCase","Looks","Sizes","HoverColors","buttonSize","ButtonSizes","ButtonHovers","hasHover","classListButton","flexChild","button","ButtonLooks","ButtonColors","grow","ref","flex","onMouseEnter","onMouseLeave","onContextMenu","contents","buttonWrapper","colors","looks","sizes","hovers","AlertBoxModules","Markdown","wrap","info","soundModule","DiscordTools","data","text","newData","defaultNotice","emit","Notice","notification","Notification","title","onclick","onshow","onShow","onclose","onClose","sound","createSound","created","play","EventHandler","removed","showing","nextTickRefresh","eventFunc","event","listener","once","process","nextTick","update","buttonText","splice","NoticeModules","noticeInfo","noticeClasses","pop","setImmediate","dismiss","role","tabIndex","getModules","FlexModules","FlexComponent","Direction","Align","Justify","Child","classList","flexGrow","weight","firstLetterUppercase","getColor","textCase","Constants","family","selectable","tag","weights","textCases","familys","executeXTimes","small","medium_small","medium_large","large","DateConstants","DATE_FORMAT","defaultEnd","defaultStart","dateFormat","now","maxDate","minDate","filterDate","showMonthYearPicker","oldProps","handleChange","defaultValue","getMinDate","handleStartChange","startDate","endDate","selectsStart","getMaxDate","handleEndChange","_datefns","DateInputModules","AnimatedCalendarPickerModules","getDateFNS","getEmotion","inputResetKey","isCalendarPickerOpen","calendarRight","calendarTop","inputRef","isDateValid","closeCalendarPicker","newvalue","currentTarget","iso","valueOf","rect","getBoundingClientRect","bottom","right","innerWidth","selectsEnd","isModalInput","AnimatedCalendarPicker","onClickOutside","onSelect","handleDateChange","top","Clickable","TransitionGroup","css","position","paddingRight","handleInputBlur","getCurrentValue","setRef","opacity","padding","transform","transition","toggleCalendarVisibility","createPortal","component","transitionAppear","renderCalendarPicker","body","menuAnimation","Value","timing","toValue","duration","interpolation","interpolate","inputRange","outputRange","emotion","div","marginRight","margintop","zIndex","translateY","CalendarPicker","f","v","DatePicker","fixedHeight","inline","selected","isArgs","origKeys","keysShim","originalKeys","shim","shimObjectKeys","isArguments","callee","GetIntrinsic","$apply","$call","$reflectApply","callBind","applyBind","implementation","Function","origSymbol","global","hasSymbolSham","hasNativeSymbols","numberIsNaN","is","getPolyfill","$Object","$TypeError","ignoreCase","multiline","dotAll","unicode","sticky","$gOPD","descriptor","isNative","isImported","_objectWithoutPropertiesLoose","excluded","sourceKeys","objectKeys","isRegex","deepEqual","actual","expected","opts","strict","objEquiv","isUndefinedOrNull","aIsRegex","bIsRegex","aIsBuffer","isBuffer","bIsBuffer","ka","kb","copy","patchers","patch","LightcordApi","Components","unfreeze","LazyLoad","settings","Api","SwitchModules","SwitchComponent","checked","RadioGroupModule","RadioGroupComponent","itemType","ItemTypes","infoClassName","desc","TextAreaModules","onKeyDown","autoFocus","resizeable","autosize","rows","DropdownModules","DropdownComponent","label","searchable","clearable","isMulti","valueRenderer","multiValueRenderer","optionRenderer","styleOverrides","lightThemeColorOverrides","darkThemeColorOverrides","marginTop60","marginModule","marginBottom20","tabsElements","active","tabs","tab","setActive","Tab","TabContainer","btoa","marginTop","marginBottom","backgroundColor","borderRadius","tabId","isActive","changeTab","h5","marginBottom4","CodeBlockModules","markup","messageContent","scrollbarGhostHairline","listLanguages","marginBottom8","messageModule1","messageModule2","scrollbarModule1","hightlightJS","marginModule1","language","content","dangerouslySetInnerHTML","__html","highlight","TooltipModules","height","positions","Positions","baseColors","ColorPickerModules","isFetching","lastColor","val","ColorPickerComponent","then","resolve","Promise","GuildSettingsRoles","renderRoleSettings","guild","roles","isOwner","currentUser","getSelectedRole","renderHeader","renderColorPicker","locked","everyone","_ctor","customColor","HexColorToDecimal","PluginUtilities","items","renderSettingsToReact","elem","ReactToHTMLElement","item","getNestedProps","ErrorCatcherModules","hasSentNotification","emptyStateImage","emptyState","emptyClasses","showNotification","icon","setTimeout","close","emptyStateHeader","emptyStateSubtext","errorInfo","componentStack","Class","ClassCopy","Proxied","entries","getOwnPropertyDescriptors","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","bool","symbol","arrayOf","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","has","isEnumerable","propertyIsEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","isObject","isFunction","isString","theKeys","skipProto","j","skipConstructor","equalsConstructorPrototypeIfNotBuggy","hasToStringTag","isStandardArguments","isLegacyArguments","supportsStandardArguments","define","polyfill","ERROR_MESSAGE","that","bound","binder","boundLength","boundArgs","Empty","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","getProto","getPrototypeOf","asyncGenIterator","TypedArray","Uint8Array","INTRINSICS","ArrayBuffer","iterator","asyncIterator","Atomics","Boolean","DataView","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","EvalError","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","isFinite","Map","all","reject","Reflect","Set","SharedArrayBuffer","SyntaxError","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakMap","WeakSet","$replace","rePropName","reEscapeChar","stringToPath","quote","subString","getBaseIntrinsic","allowMissing","parts","sym","symObj","getOwnPropertyNames","syms","shimObjectIs","testObjectIs","regexExec","isRegexMarker","badStringifier","throwRegexMarker","toPrimitive","gOPD","flagsBound","TypeErr","shimFlags","proto","isDateObject","tryDateGetDayCall","tryDateObject","_react","_propTypes2","_gud2","_classCallCheck","instance","Constructor","_possibleConstructorReturn","_inherits","setPrototypeOf","createEventEmitter","handlers","handler","newValue","changedBits","createReactContext","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","Provider","_Component","_temp","_this","_len","_key","emitter","getChildContext","_ref","componentWillReceiveProps","nextProps","oldValue","objectIs","childContextTypes","Consumer","_Component2","_temp2","_this2","_len2","_key2","getValue","onUpdate","observedBits","componentDidMount","componentWillUnmount","onlyChild","contextTypes","getModule","ensureExported","catch","async","appClasses","buildRender","returnValue","newchildren","container","buildRenderChannelSidebar","renderChannelSidebar","hasClass","base","querySelector","FindReact","awaitLogin","UserPopout","userModule","getCurrentUser","render1","userId","guildId","channelId","disableUserProfileLink","PopoutProps","render2","UserPopoutComponent","user","UserProfile","render3","UserProfileComponent","loginPromise","hasCompletedLogin","AuthenticationStore","isAuthenticated","isResolved","dispatcher","subscribe","oo","cache","getObject","setModule","thisArg","deleteProperty","enumerate","ownKeys","attributes","isExtensible","preventExtensions","Settings","electron","ipcRenderer","sendSync","add","years","months","weeks","dateWithMonths","dateWithDays","minutesToAdd","secondsToAdd","msToAdd","finalDate","isWeekend","isSunday","isSaturday","addBusinessDays","startedOnWeekend","fullWeeks","restDays","startOfISOWeek","getISOWeekYear","startOfISOWeekYear","setISOWeekYear","dirtyISOWeekYear","addISOWeekYears","addQuarters","addSeconds","areIntervalsOverlapping","dirtyIntervalLeft","dirtyIntervalRight","intervalLeft","intervalRight","leftStartTime","leftEndTime","rightStartTime","rightEndTime","inclusive","closestIndexTo","minDistance","timeToCompare","distance","closestTo","compareAsc","compareDesc","differenceInBusinessDays","calendarDifference","differenceInCalendarISOWeekYears","differenceInCalendarISOWeeks","startOfISOWeekLeft","startOfISOWeekRight","differenceInCalendarQuarters","quarterDiff","compareLocalAsc","getMilliseconds","differenceInDays","isLastDayNotFull","differenceInMilliseconds","differenceInHours","subISOWeekYears","differenceInISOWeekYears","isLastISOWeekYearNotFull","differenceInMinutes","differenceInMonths","isLastMonthNotFull","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","isLastYearNotFull","eachDayOfInterval","dates","step","eachHourOfInterval","eachMonthOfInterval","eachQuarterOfInterval","startDateQuarter","endDateQuarter","quarters","currentQuarter","eachWeekOfInterval","startDateWeek","endDateWeek","currentWeek","eachWeekendOfInterval","dateInterval","weekends","eachWeekendOfMonth","endOfYear","eachWeekendOfYear","eachYearOfInterval","endOfDecade","decade","endOfHour","endOfISOWeek","endOfISOWeekYear","setMilliseconds","endOfMinute","endOfQuarter","endOfSecond","endOfToday","endOfTomorrow","endOfYesterday","cloneObject","dirtyBaseDate","localizeOptions","offsetInSeconds","includeSeconds","nearestMonth","monthsSinceStartOfYear","formatDistanceStrict","roundingMethodFn","roundingMethod","formatDistanceToNow","formatDistanceToNowStrict","defaultFormat","formatDuration","zero","reduce","acc","formatISO","representation","tzOffset","dateDelimiter","timeDelimiter","absoluteOffset","hourOffset","minuteOffset","hour","minute","second","separator","formatISO9075","formatISODuration","_duration$years","_duration$months","_duration$days","_duration$hours","_duration$minutes","_duration$seconds","formatRFC3339","fractionDigits","fractionalSecond","formatRFC7231","dayName","monthName","baseDate","utcBaseDate","fromUnixTime","dirtyUnixTime","unixTime","getDayOfYear","getDaysInYear","getDecade","getISODay","getISOWeek","getISOWeeksInYear","thisYear","nextYear","getOverlappingDaysInIntervals","isOverlapping","overlapStartDate","overlapEndDate","differenceInMs","getUnixTime","getWeekOfMonth","currentDayOfMonth","startWeekDay","lastDayOfFirstWeek","weekNumber","remainingDaysAfterFirstWeek","getWeeksInMonth","sub","dateWithoutMonths","dateWithoutDays","minutestoSub","secondstoSub","mstoSub","intervalToDuration","remainingMonths","remainingDays","remainingHours","remainingMinutes","remainingSeconds","isExists","isFirstDayOfMonth","isFriday","isFuture","isLastDayOfMonth","isMatch","isMonday","isPast","startOfHour","isSameHour","dateLeftStartOfHour","dateRightStartOfHour","isSameWeek","dateLeftStartOfWeek","dateRightStartOfWeek","isSameISOWeek","isSameISOWeekYear","dateLeftStartOfYear","dateRightStartOfYear","startOfMinute","isSameMinute","dateLeftStartOfMinute","dateRightStartOfMinute","startOfSecond","isSameSecond","dateLeftStartOfSecond","dateRightStartOfSecond","isThisHour","isThisISOWeek","isThisMinute","isThisMonth","isThisQuarter","isThisSecond","isThisWeek","isThisYear","isThursday","isToday","isTomorrow","isTuesday","isWednesday","isYesterday","lastDayOfDecade","lastDayOfWeek","lastDayOfISOWeek","lastDayOfISOWeekYear","lastDayOfQuarter","lastDayOfYear","lightFormat","parseJSON","UTC","roundToNearestMinutes","nearestTo","roundedMinutes","remainderMinutes","addedMinutes","dirtyDayOfMonth","setDay","delta","setDayOfYear","dirtyDayOfYear","setISODay","setISOWeek","dirtyMilliseconds","setWeek","setWeekYear","dirtyWeekYear","startOfDecade","startOfToday","startOfTomorrow","startOfYesterday","subBusinessDays","subQuarters","subSeconds","maxTime","minTime","isNodeFound","current","componentNode","ignoreClass","correspondingElement","contains","passiveEventSupport","uid","autoInc","seed","handlersMap","enabledInstances","touchEvents","getEventHandlerOptions","eventName","handlerOptions","passive","preventDefault","onClickOutsideHOC","WrappedComponent","config","_class","__outsideClickHandler","__clickOutsideHandlerProp","getInstance","handleClickOutside","__getComponentNode","setClickOutsideRef","enableOnClickOutside","_uid","testPassiveEventSupport","addEventListener","noop","removeEventListener","eventTypes","stopPropagation","excludeScrollbar","clickedScrollbar","evt","documentElement","clientWidth","clientX","clientHeight","clientY","findHighest","parentNode","outsideClickIgnoreClass","disableOnClickOutside","getRef","instanceRef","_proto","isReactComponent","componentDidUpdate","_props","_objectWithoutProperties","sourceSymbolKeys","wrappedRef","getClass","isBrowser","navigator","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","microtaskDebounce","called","taskDebounce","scheduled","functionToCheck","getStyleComputedProperty","nodeType","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","host","getScrollParent","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","isOffsetContainer","firstElementChild","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","subtract","scrollTop","scrollLeft","modifier","left","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","createClass","protoProps","staticProps","getClientRect","offsets","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","parent","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerHeight","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","arr","check","runModifiers","modifiers","ends","cur","enabled","isDestroyed","arrowStyles","flipped","positionFixed","flip","originalPlacement","isCreated","onCreate","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","charAt","prefix","toCheck","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","setupEventListeners","updateBound","scrollElement","attachToScrollParents","callback","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","removeEventListeners","isNumeric","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","_requesting","requested","placements","validPlacements","clockwise","counter","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","index2","Defaults","shift","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","primary","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","len","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","subtractLength","hide","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","getRoundedOffsets","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","setAttributes","setAttribute","onLoad","applyStyleOnLoad","modifierOptions","Popper","requestAnimationFrame","jquery","update$$1","destroy$$1","enableEventListeners$$1","disableEventListeners$$1","PopperUtils","ManagerReferenceNodeContext","ManagerReferenceNodeSetterContext","_React$Component","Manager","newReferenceNode","setReferenceNode","unwrapArray","safeInvoke","initialStyle","pointerEvents","initialArrowStyle","InnerPopper","popperNode","innerRef","updatePopperInstance","arrowNode","updateStateModifier","popperInstance","destroyPopperInstance","referenceElement","getOptions","prevProps","prevState","setPopperNode","getPopperStyle","getPopperPlacement","outOfBoundaries","getOutOfBoundariesState","arrowProps","setArrowNode","getArrowStyle","InnerReference","refHandler","Reference","oe","ae","se","pe","ie","ce","le","de","ue","me","he","fe","ve","ye","construct","sham","De","we","ke","ge","be","_e","Ce","He","Ke","awareOfUnicodeTokens","Se","Me","Pe","Ee","Ne","Oe","xe","Ye","Te","Ie","Le","Fe","Re","We","Ae","Be","__localeData__","je","__localeId__","Qe","Ve","qe","Ue","excludeDates","includeDates","et","$e","ze","Ge","Je","Xe","Ze","tt","rt","nt","every","ot","at","st","pt","it","ct","lt","dt","ut","startPeriod","endPeriod","ht","mt","yearsList","unshift","incrementYears","decrementYears","onCancel","shiftYears","yearDropdownItemNumber","scrollableYearDropdown","renderOptions","ft","dropdownVisible","onSelectChange","renderSelectOptions","visibility","toggleDropdown","renderReadView","renderDropdown","adjustDateOnChange","handleYearChange","setOpen","dropdownMode","renderScrollMode","renderSelectMode","vt","monthNames","yt","useShortMonthInDropdown","Dt","wt","monthYearsList","scrollableMonthYearDropdown","kt","gt","createRef","isDisabled","handleOnKeyDown","disabledKeyboardNavigation","preSelection","highlightDates","selectsRange","selectingDate","isInSelectingRange","dayClassName","isExcluded","isKeyboardSelected","isRangeStart","isRangeEnd","isInRange","isSelectingRangeStart","isSelectingRangeEnd","isOutsideMonth","getHighLightedClass","ariaLabelPrefixWhenEnabled","ariaLabelPrefixWhenDisabled","getTabIndex","isInputFocused","activeElement","containerRef","dayEl","focus","preventScroll","getClassNames","handleClick","handleMouseEnter","getAriaLabel","renderDayContents","handleFocusDay","bt","ariaLabelPrefix","Ct","onDayClick","onDayMouseEnter","onWeekSelect","shouldCloseOnSelect","formatWeekNumber","showWeekNumber","handleWeekClick","chooseDayAriaLabelPrefix","disabledDayAriaLabelPrefix","handleDayClick","handleDayMouseEnter","renderDays","_t","orderInDisplay","weekAriaLabelPrefix","showWeekNumbers","isWeekInMonth","peekNextMonth","isRangeStartMonth","isRangeEndMonth","isRangeStartQuarter","isRangeEndQuarter","showFullMonthYearPicker","showTwoColumnMonthYearPicker","onMonthClick","getMonthClassNames","onQuarterClick","getQuarterClassNames","showQuarterYearPicker","handleMouseLeave","renderMonths","renderQuarters","renderWeeks","St","excludeTimes","includeTimes","timeClassName","injectTimes","intervals","openToDate","liClasses","centerLi","list","calcCenterPosition","monthRef","header","todayButton","timeCaption","renderTimes","onTimeChange","offsetTop","Mt","handleYearClick","onYearClick","getYearClassNames","Pt","customTimeInput","cloneElement","timeInputLabel","renderTimeInput","Et","showPopperArrow","Nt","Ot","onDropdownFocus","handleMonthChange","onMonthMouseLeave","onYearChange","setPreSelection","onMonthChange","handleMonthYearChange","weekLabel","formatWeekday","weekDayClassName","formatWeekDay","useWeekdaysShort","showYearPicker","renderCustomHeader","forceShowMonthNavigation","showDisabledMonthNavigation","showTimeSelectOnly","decreaseMonth","decreaseYear","previousMonthAriaLabel","previousYearAriaLabel","previousYearButtonLabel","previousMonthButtonLabel","showTimeSelect","increaseMonth","increaseYear","nextMonthAriaLabel","nextYearAriaLabel","nextYearButtonLabel","nextMonthButtonLabel","showYearDropdown","showMonthDropdown","showMonthYearDropdown","changeYear","changeMonth","changeMonthYear","monthDate","renderCurrentMonth","handleDropdownFocus","renderMonthDropdown","renderMonthYearDropdown","renderYearDropdown","prevMonthButtonDisabled","nextMonthButtonDisabled","prevYearButtonDisabled","nextYearButtonDisabled","renderYearHeader","renderDefaultHeader","showPreviousMonths","monthsShown","monthSelectedIn","monthContainer","monthClassName","handleMonthMouseLeave","timeFormat","timeIntervals","withPortal","showTimeInput","getDateInView","assignMonthContainer","renderPreviousButton","renderNextButton","renderYears","renderTodayButton","renderTimeSection","renderInputTimeSection","xt","Yt","tabLoopRef","querySelectorAll","getTabChildren","enableTabLoop","handleFocusStart","handleFocusEnd","Tt","portalRoot","getElementById","portalId","appendChild","It","wrapperClassName","hidePopper","popperComponent","popperModifiers","popperPlacement","popperProps","targetComponent","popperOnKeyDown","popperContainer","Lt","Ft","getPreSelection","open","startOpen","preventFocus","focused","preventFocusTimeout","clearTimeout","blur","cancelFocusInput","calcInitialState","lastPreSelectChange","Wt","setBlur","inputValue","readOnly","preventOpenOnFocus","inputFocusTimeout","setFocus","onChangeRaw","isDefaultPrevented","Rt","strictParsing","setSelected","allowSameDay","focusSelectedMonth","onInputClick","calendar","inputOk","handleSelect","onInputError","msg","onClearClick","closeOnScroll","isCalendarOpen","dateFormatCalendar","handleCalendarClickOutside","handleTimeChange","calendarClassName","calendarContainer","onDayKeyDown","customInput","customInputRef","handleBlur","handleFocus","onInputKeyDown","placeholderText","autoComplete","ariaLabelledBy","isClearable","clearButtonTitle","ariaLabelClose","onCalendarOpen","onCalendarClose","onScroll","clearPreventFocusTimeout","renderCalendar","renderDateInput","renderClearButton","popperClassName","onPopperKeyDown"],"mappings":"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","file":"main.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 120);\n","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","window.React = (window.React || // If in Lightcord\n (()=>{ // If in Standard BetterDiscord\n try{\n return window.BdApi.React\n }catch(e){\n return null\n }\n })() ||\n (()=>{ // If in Powercord\n try{\n const webpack = require(\"powercord/webpack\")\n return webpack.React\n }catch(e){\n return null\n }\n })() || \n (()=>{ // If in EnhancedDiscord\n try{\n return window.EDApi.React\n }catch(e){\n return null\n }\n })())\n\nmodule.exports = window.React","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * var result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\n\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n return year;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return !isNaN(date);\n}","var MILLISECONDS_IN_MINUTE = 60000;\n\nfunction getDateMillisecondsPart(date) {\n return date.getTime() % MILLISECONDS_IN_MINUTE;\n}\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\n\n\nexport default function getTimezoneOffsetInMilliseconds(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset());\n date.setSeconds(0, 0);\n var hasNegativeUTCOffset = baseTimezoneOffset > 0;\n var millisecondsPartOfTimezoneOffset = hasNegativeUTCOffset ? (MILLISECONDS_IN_MINUTE + getDateMillisecondsPart(date)) % MILLISECONDS_IN_MINUTE : getDateMillisecondsPart(date);\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}","import toDate from '../toDate/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","const BDModules:typeof window.BDModules = window.BDModules || require(\"./BDModules\")\n\nexport default new class WebpackLoader {\n constructor(){}\n\n get(id: number):any{\n return BDModules.get(id)\n }\n find(filter: (mod:any) => boolean):any{\n let result = BDModules.get(filter)[0]\n if(!result){\n console.warn(filter, \"couldn't find the module.\")\n }\n return result\n }\n findByUniqueProperties(props:(string|number)[]):any{\n return BDModules.get((mod) => {\n if(mod.__esModule && (\"default\" in mod)){\n let doesMatch = true\n for(let prop of props){\n if(!Object.prototype.hasOwnProperty.call(mod.default, prop))doesMatch = false\n }\n if(doesMatch)return true\n }\n for(let prop of props){\n if(!Object.prototype.hasOwnProperty.call(mod, prop))return false\n }\n return true\n })[0]\n }\n filter(filter: (mod:any) => boolean):any[]{\n return BDModules.get(filter)\n }\n filterByUniqueProperties(props:(string|number)[]):any{\n return BDModules.get((mod) => {\n if(mod.__esModule && (\"default\" in mod)){\n let doesMatch = true\n for(let prop of props){\n if(!Object.prototype.hasOwnProperty.call(mod.default, prop))doesMatch = false\n }\n if(doesMatch)return true\n }\n for(let prop of props){\n if(!Object.prototype.hasOwnProperty.call(mod, prop))return false\n }\n return true\n })\n }\n}\n\nexport class WebpackLoaderError extends Error {\n constructor(message:string = \"\"){\n message += \"\\n\\tThis error is related to Lightcord not being able to find a WebpackModule. \\n\\tPlease show this error and a few lines of logs above this error to the devs. \\n\\tOpen an issue on https://github.com/Lightcord/Lightcord or in our discord server.\"\n super(message)\n this.name = \"WebpackLoaderError\"\n }\n}","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport startOfDay from '../startOfDay/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 1, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * var result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\n\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport getDaysInMonth from '../getDaysInMonth/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\n\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n // if the original date was the last day of the longer month\n\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * var result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\n\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","export default function NOOP(){}","import startOfDay from '../startOfDay/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n */\n\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nexport default function formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n}","export default function buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js';\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n}","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n}","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js';\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js';\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from './_lib/formatDistance/index.js';\nimport formatLong from './_lib/formatLong/index.js';\nimport formatRelative from './_lib/formatRelative/index.js';\nimport localize from './_lib/localize/index.js';\nimport match from './_lib/match/index.js';\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js';\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n\n if (!parseResult) {\n return null;\n }\n\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * var result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\n\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMilliseconds from '../addMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addDays from '../addDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import addLeadingZeros from '../../addLeadingZeros/index.js';\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * var result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * var result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\n\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * var result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\n\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMonths from '../addMonths/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * var result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMonths from '../addMonths/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import lightFormatters from '../lightFormatters/index.js';\nimport getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js';\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js';\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js';\nimport getUTCWeek from '../../../_lib/getUTCWeek/index.js';\nimport getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport addLeadingZeros from '../../addLeadingZeros/index.js';\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n /*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\n};\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from '../isValid/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport formatters from '../_lib/format/formatters/index.js';\nimport longFormatters from '../_lib/format/longFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from '../_lib/protectedTokens/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js'; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\n\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMilliseconds from '../addMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addDays from '../addDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * var result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\n\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMilliseconds from '../addMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\n\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport setUTCDay from '../../../_lib/setUTCDay/index.js';\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js';\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js';\nimport setUTCWeek from '../../../_lib/setUTCWeek/index.js';\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js';\nimport startOfUTCWeek from '../../../_lib/startOfUTCWeek/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n },\n incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\nexport default parsers;","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport getUTCWeek from '../getUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport getUTCISOWeek from '../getUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport assign from '../_lib/assign/index.js';\nimport longFormatters from '../_lib/format/longFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from '../_lib/protectedTokens/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport parsers from './_lib/parsers/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * toDate('2016-01-01')\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale // If timezone isn't specified, it will be set to the system timezone\n\n };\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n subPriority: -1,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n subPriority: parser.subPriority || 0,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport setMonth from '../setMonth/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * var result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\n\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var quarter = toInteger(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}","// bait typescript into thinking this is not reactDOM so no circular dependency.\nwindow.ReactDOM = (window[\"Reac\"+\"tDOM\"] || // If in Lightcord\n (()=>{ // If in Standard BetterDiscord\n try{\n return window.BdApi.ReactDOM\n }catch(e){\n return null\n }\n })() ||\n (()=>{ // If in Powercord\n try{\n const webpack = require(\"powercord/webpack\")\n return webpack.ReactDOM\n }catch(e){\n return null\n }\n })() || \n (()=>{ // If in EnhancedDiscord\n try{\n return window.EDApi.ReactDOM\n }catch(e){\n return null\n }\n })())\n\nmodule.exports = window.ReactDOM","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * var result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import getWeekYear from '../getWeekYear/index.js';\nimport startOfWeek from '../startOfWeek/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * var result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n var date = startOfWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * var result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\n\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\n\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\n\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addYears from '../addYears/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * var result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\n\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * var result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\n\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n if (isNaN(date)) {\n return new Date(NaN);\n }\n\n date.setFullYear(year);\n return date;\n}","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","import { ReactElement } from \"react\";\nimport ReactDOM = require(\"react-dom\")\nimport PluginUtilities from \"./PluginUtilities\";\n\n/**\n * Set of methods that can help you sometimes.\n */\nexport default new class Utils {\n constructor(){}\n\n /**\n * Return an HTML div element from a react element.\n * @param ReactElement A React Element. Most of the time from `React.createElement()`\n */\n ReactToHTMLElement(ReactElement: ReactElement):HTMLDivElement{ \n const element = document.createElement(\"div\")\n ReactDOM.render(ReactElement, element)\n return element\n }\n\n /**\n * Still in beta.\n */\n get PluginUtils(){return PluginUtilities}\n\n /**\n * Return the object after going through the path given path\n * @param obj The initial object\n * @param path the path\n * @example\n * ```js\n * const object = {\n * prop1: {\n * prop2: {\n * str: \"Lightcord\"\n * } \n * }\n * }\n * console.log(Lightcord.Api.Utils.getNestedProps(object, \"prop1.prop2.str\")) // Lightcord\n * ```\n */\n getNestedProps(obj:any, path: string){\n let segments = path.split(\".\")\n for(let seg of segments){\n obj = obj && (seg in obj) ? obj[seg] : undefined\n }\n return obj\n }\n\n /**\n * Convert a decimal color to hexadecimal.\n * @param color The color to convert\n */\n DecimalColorToHex(color:number):string{\n return \"#\"+color.toString(16).toUpperCase().split(\"\").concat([].fill(\"0\", 0, 6)).slice(0, 6).join(\"\")\n }\n\n /**\n * Convert a hexadecimal color to decimal.\n * @param color The color to convert\n */\n HexColorToDecimal(color:string):number{\n color = color.replace(/[#;]/g, \"\")\n let res = parseInt(color, 16)\n if(isNaN(res))throw new Error(`Invalid color: ${color}`)\n return res\n }\n\n /**\n * Removes \"da-\" from classnames patched by BetterDiscord.\n * @param className The ClassName\n */\n removeDa(className:string):string{\n if(!className)return className\n return className.split(\" \").filter(e => !e.startsWith(\"da-\")).join(\" \")\n }\n\n /**\n * Taken from https://stackoverflow.com/a/39165137. All credits goes to [Venryx](https://stackoverflow.com/users/2441655/venryx).\n * @param dom The DOM Element to reverse.\n * @param traverseUp A number of elemenet to go through.\n */\n FindReact(dom:Element, traverseUp:number = 0):React.Component|React.PureComponent{\n const key = Object.keys(dom).find(key=>key.startsWith(\"__reactInternalInstance$\"));\n const domFiber = dom[key];\n if (domFiber == null) return null;\n \n // react <16\n if (domFiber._currentElement) {\n let compFiber = domFiber._currentElement._owner;\n for (let i = 0; i < traverseUp; i++) {\n compFiber = compFiber._currentElement._owner;\n }\n return compFiber._instance;\n }\n \n // react 16+\n const GetCompFiber = fiber=>{\n //return fiber._debugOwner; // this also works, but is __DEV__ only\n let parentFiber = fiber.return;\n while (typeof parentFiber.type == \"string\") {\n parentFiber = parentFiber.return;\n }\n return parentFiber;\n };\n let compFiber = GetCompFiber(domFiber);\n for (let i = 0; i < traverseUp; i++) {\n compFiber = GetCompFiber(compFiber);\n }\n return compFiber.stateNode;\n }\n\n hasClass(classNames:string, className:string):boolean{\n if(!classNames || !className)return false\n const classnames = classNames.split(\" \")\n for(let classname of this.removeDa(className).split(\" \")){\n if(!classnames.includes(classname))return false\n }\n return true\n }\n\n formatJSObject(obj:any):string{\n if([\"string\", \"number\", \"boolean\", \"bigint\", \"undefined\"].includes(typeof obj))return JSON.stringify(obj)\n if(obj === null)return \"null\"\n if(typeof obj === \"function\")return String(obj)\n if(typeof obj === \"symbol\")return String(obj)\n\n if(Array.isArray(obj)){\n if(!obj.length)return \"[]\"\n return `[\\n ${obj.map(e => this.formatJSObject(e)).join(\",\\n \")}\\n]`\n }else{\n const keys = Object.keys(obj)\n if(keys.length === 0)return \"{}\"\n return `{\\n ${keys.map(key => {\n let original = key\n if(typeof key === \"symbol\")key = \"[\"+String(key)+\"]\"\n else{\n if(typeof key === \"number\")key = String(key)\n else{\n console.log(key)\n if(isNaN(parseInt(key[0]))){\n key = this.formatJSObject(key)\n }else if(/[^\\w\\d_$]/g.test(key)){\n key = this.formatJSObject(key)\n }\n }\n }\n return `${key}: ${this.formatJSObject(obj[original])}`\n })}\\n}`\n }\n }\n\n getColor(color_name:ColorName):string{ \n return Lightcord.DiscordModules.constants.Colors[color_name.toUpperCase()]\n }\n\n firstLetterUppercase(str:string):string{\n if(!str)return \"\"\n return str[0].toUpperCase()+str.slice(1)\n }\n\n executeXTimes<result = any>(func:(index?:number) => result, times:number):result[]{\n let results:result[] = []\n for(let i = 0;times > i;i++){\n results.push(func(i))\n }\n return results\n }\n}\n\nexport type ColorName = \"primary_dark_100\"|\"primary_dark_130\"|\"primary_dark_160\"|\"primary_dark_200\"|\"primary_dark_230\"|\"primary_dark_260\"|\"primary_dark_300\"|\"primary_dark_330\"|\"primary_dark_360\"|\"primary_dark_400\"|\"primary_dark_430\"|\"primary_dark_460\"|\"primary_dark_500\"|\"primary_dark\"|\"primary_dark_530\"|\"primary_dark_560\"|\"primary_dark_600\"|\"primary_dark_630\"|\"primary_dark_660\"|\"primary_dark_700\"|\"primary_dark_730\"|\"primary_dark_760\"|\"primary_dark_800\"|\"primary_dark_830\"|\"primary_dark_860\"|\"primary_dark_900\"|\"primary_light_100\"|\"primary_light_130\"|\"primary_light_160\"|\"primary_light_200\"|\"primary_light_230\"|\"primary_light_260\"|\"primary_light_300\"|\"primary_light_330\"|\"primary_light_360\"|\"primary_light_400\"|\"primary_light_430\"|\"primary_light_460\"|\"primary_light_500\"|\"primary_light\"|\"primary_light_530\"|\"primary_light_560\"|\"primary_light_600\"|\"primary_light_630\"|\"primary_light_660\"|\"primary_light_700\"|\"primary_light_730\"|\"primary_light_760\"|\"primary_light_800\"|\"primary_light_830\"|\"primary_light_860\"|\"primary_light_900\"|\"brand_100\"|\"brand_130\"|\"brand_160\"|\"brand_200\"|\"brand_230\"|\"brand_260\"|\"brand_300\"|\"brand_330\"|\"brand_360\"|\"brand_400\"|\"brand_430\"|\"brand_460\"|\"brand_500\"|\"brand\"|\"brand_530\"|\"brand_560\"|\"brand_600\"|\"brand_630\"|\"brand_660\"|\"brand_700\"|\"brand_730\"|\"brand_760\"|\"brand_800\"|\"brand_830\"|\"brand_860\"|\"brand_900\"|\"status_red_100\"|\"status_red_130\"|\"status_red_160\"|\"status_red_200\"|\"status_red_230\"|\"status_red_260\"|\"status_red_300\"|\"status_red_330\"|\"status_red_360\"|\"status_red_400\"|\"status_red_430\"|\"status_red_460\"|\"status_red_500\"|\"status_red\"|\"status_red_530\"|\"status_red_560\"|\"status_red_600\"|\"status_red_630\"|\"status_red_660\"|\"status_red_700\"|\"status_red_730\"|\"status_red_760\"|\"status_red_800\"|\"status_red_830\"|\"status_red_860\"|\"status_red_900\"|\"status_yellow_100\"|\"status_yellow_130\"|\"status_yellow_160\"|\"status_yellow_200\"|\"status_yellow_230\"|\"status_yellow_260\"|\"status_yellow_300\"|\"status_yellow_330\"|\"status_yellow_360\"|\"status_yellow_400\"|\"status_yellow_430\"|\"status_yellow_460\"|\"status_yellow_500\"|\"status_yellow\"|\"status_yellow_530\"|\"status_yellow_560\"|\"status_yellow_600\"|\"status_yellow_630\"|\"status_yellow_660\"|\"status_yellow_700\"|\"status_yellow_730\"|\"status_yellow_760\"|\"status_yellow_800\"|\"status_yellow_830\"|\"status_yellow_860\"|\"status_yellow_900\"|\"status_green_100\"|\"status_green_130\"|\"status_green_160\"|\"status_green_200\"|\"status_green_230\"|\"status_green_260\"|\"status_green_300\"|\"status_green_330\"|\"status_green_360\"|\"status_green_400\"|\"status_green_430\"|\"status_green_460\"|\"status_green_500\"|\"status_green\"|\"status_green_530\"|\"status_green_560\"|\"status_green_600\"|\"status_green_630\"|\"status_green_660\"|\"status_green_700\"|\"status_green_730\"|\"status_green_760\"|\"status_green_800\"|\"status_green_830\"|\"status_green_860\"|\"status_green_900\"|\"status_grey_100\"|\"status_grey_130\"|\"status_grey_160\"|\"status_grey_200\"|\"status_grey_230\"|\"status_grey_260\"|\"status_grey_300\"|\"status_grey_330\"|\"status_grey_360\"|\"status_grey_400\"|\"status_grey_430\"|\"status_grey_460\"|\"status_grey_500\"|\"status_grey\"|\"status_grey_530\"|\"status_grey_560\"|\"status_grey_600\"|\"status_grey_630\"|\"status_grey_660\"|\"status_grey_700\"|\"status_grey_730\"|\"status_grey_760\"|\"status_grey_800\"|\"status_grey_830\"|\"status_grey_860\"|\"status_grey_900\"|\"link_100\"|\"link_130\"|\"link_160\"|\"link_200\"|\"link_230\"|\"link_260\"|\"link_300\"|\"link_330\"|\"link_360\"|\"link_400\"|\"link_430\"|\"link_460\"|\"link_500\"|\"link\"|\"link_530\"|\"link_560\"|\"link_600\"|\"link_630\"|\"link_660\"|\"link_700\"|\"link_730\"|\"link_760\"|\"link_800\"|\"link_830\"|\"link_860\"|\"link_900\"|\"link_light_100\"|\"link_light_130\"|\"link_light_160\"|\"link_light_200\"|\"link_light_230\"|\"link_light_260\"|\"link_light_300\"|\"link_light_330\"|\"link_light_360\"|\"link_light_400\"|\"link_light_430\"|\"link_light_460\"|\"link_light_500\"|\"link_light\"|\"link_light_530\"|\"link_light_560\"|\"link_light_600\"|\"link_light_630\"|\"link_light_660\"|\"link_light_700\"|\"link_light_730\"|\"link_light_760\"|\"link_light_800\"|\"link_light_830\"|\"link_light_860\"|\"link_light_900\"|\"white_100\"|\"white_130\"|\"white_160\"|\"white_200\"|\"white_230\"|\"white_260\"|\"white_300\"|\"white_330\"|\"white_360\"|\"white_400\"|\"white_430\"|\"white_460\"|\"white_500\"|\"white\"|\"white_530\"|\"white_560\"|\"white_600\"|\"white_630\"|\"white_660\"|\"white_700\"|\"white_730\"|\"white_760\"|\"white_800\"|\"white_830\"|\"white_860\"|\"white_900\"|\"black_100\"|\"black_130\"|\"black_160\"|\"black_200\"|\"black_230\"|\"black_260\"|\"black_300\"|\"black_330\"|\"black_360\"|\"black_400\"|\"black_430\"|\"black_460\"|\"black_500\"|\"black\"|\"black_530\"|\"black_560\"|\"black_600\"|\"black_630\"|\"black_660\"|\"black_700\"|\"black_730\"|\"black_760\"|\"black_800\"|\"black_830\"|\"black_860\"|\"black_900\"|\"premium_tier_2_purple_500\"|\"premium_tier_2_purple\"|\"premium_tier_2_pink_500\"|\"premium_tier_2_pink\"|\"premium_tier_1_purple_500\"|\"premium_tier_1_purple\"|\"premium_tier_1_blue_500\"|\"premium_tier_1_blue\"|\"premium_guild_pink_500\"|\"premium_guild_pink\"|\"premium_guild_purple_500\"|\"premium_guild_purple\"|\"premium_guild_blue_500\"|\"premium_guild_blue\"|\"hypesquad_house_1_500\"|\"hypesquad_house_1\"|\"hypesquad_house_2_500\"|\"hypesquad_house_2\"|\"hypesquad_house_3_500\"|\"hypesquad_house_3\"|\"partner_500\"|\"partner\"|\"skype_500\"|\"skype\"|\"battlenet_500\"|\"battlenet\"|\"steam_500\"|\"steam\"|\"lol_500\"|\"lol\"|\"twitch_500\"|\"twitch\"|\"youtube_500\"|\"youtube\"|\"twitter_500\"|\"twitter\"|\"reddit_500\"|\"reddit\"|\"spotify_500\"|\"spotify\"|\"facebook_500\"|\"facebook\"|\"samsung_500\"|\"samsung\"|\"xbox_500\"|\"xbox\"|\"github_500\"|\"github\"|\"transparent\"\n\nexport class LightcordApiError extends Error {\n name:string = \"LightcordApiError\"\n}","import startOfWeek from '../startOfWeek/index.js';\nimport startOfWeekYear from '../startOfWeekYear/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * var result = getISOWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport default function getWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfWeek(date, options).getTime() - startOfWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import startOfQuarter from '../startOfQuarter/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n */\n\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * var result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\n\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","import startOfWeek from '../startOfWeek/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n requiredArgs(2, arguments);\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions);\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions);\n var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import toDate from '../toDate/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\n\nexport default function endOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isWithinRange` to `isWithinInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * isWithinRange(\n * new Date(2014, 0, 3),\n * new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n *\n * // v2.0.0 onward\n *\n * isWithinInterval(\n * new Date(2014, 0, 3),\n * { start: new Date(2014, 0, 1), end: new Date(2014, 0, 7) }\n * )\n * ```\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\n\nexport default function isWithinInterval(dirtyDate, dirtyInterval) {\n requiredArgs(2, arguments);\n var interval = dirtyInterval || {};\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n return time >= startTime && time <= endTime;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name min\n * @category Common Helpers\n * @summary Return the earliest of the given dates.\n *\n * @description\n * Return the earliest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `min` function now accepts an array of dates rather than spread arguments.\n *\n * ```javascript\n * // Before v2.0.0\n * var date1 = new Date(1989, 6, 10)\n * var date2 = new Date(1987, 1, 11)\n * var minDate = min(date1, date2)\n *\n * // v2.0.0 onward:\n * var dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n * var minDate = min(dates)\n * ```\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * var result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\n\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (typeof dirtyDatesArray === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result > currentDate || isNaN(currentDate)) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `max` function now accepts an array of dates rather than spread arguments.\n *\n * ```javascript\n * // Before v2.0.0\n * var date1 = new Date(1989, 6, 10)\n * var date2 = new Date(1987, 1, 11)\n * var maxDate = max(date1, date2)\n *\n * // v2.0.0 onward:\n * var dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n * var maxDate = max(dates)\n * ```\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\n\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (typeof dirtyDatesArray === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result < currentDate || isNaN(currentDate)) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * var result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * var result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * var result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * var result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import * as uuidv1 from \"uuid/v1\"\r\nimport * as uuidv4 from \"uuid/v4\"\r\n\r\ntype uuidFunc = () => string\r\nlet uuid:uuidFunc & {v1: uuidFunc, v4: uuidFunc} = Object.assign(function(){\r\n return uuidv4()\r\n}, {v1: () => uuidv1(), v4: () => uuidv4()})\r\n\r\nexport default uuid","import toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The previous `parse` implementation was renamed to `parseISO`.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * parseISO('2016-01-01')\n * ```\n *\n * - `parseISO` now validates separate date and time values in ISO-8601 strings\n * and returns `Invalid Date` if the date is invalid.\n *\n * ```javascript\n * parseISO('2018-13-32')\n * //=> Invalid Date\n * ```\n *\n * - `parseISO` now doesn't fall back to `new Date` constructor\n * if it fails to parse a string argument. Instead, it returns `Invalid Date`.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (isNaN(date) || !date) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time) || time === null) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n\n var result = new Date(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate(), dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n result.setFullYear(dirtyDate.getUTCFullYear());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString; // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: null\n };\n var year = captures[1] && parseInt(captures[1]);\n var century = captures[2] && parseInt(captures[2]);\n return {\n year: century == null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return null;\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return null;\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return null; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * var result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\n\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import startOfWeek from '../startOfWeek/index.js';\nimport toDate from '../toDate/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * var result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * var result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * var result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\n\nexport default function getWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\n\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\n\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * var result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\n\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addWeeks from '../addWeeks/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * var result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\n\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import toInteger from '../toInteger/index.js';\nimport getUTCWeekYear from '../getUTCWeekYear/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport NOOP from \"../../modules/noop\"\r\nimport Utils from \"../../modules/Utils\"\r\n\r\ntype TextInputProps = {\r\n name?: string,\r\n size?: \"default\"|\"mini\"\r\n disabled?: boolean,\r\n placeholder?: string,\r\n value?: string,\r\n error?: string,\r\n maxLength?: number,\r\n className?: string,\r\n inputClassName?: string\r\n id?: string,\r\n onChange?: (value: string, name: string, input: TextInput) => void,\r\n onFocus?: (ev, name: string, input: TextInput) => void,\r\n onBlur?: (ev, name: string, input: TextInput) => void\r\n}\r\n\r\nexport function getInternalTextInput(){\r\n return TextInput.prototype.modules[0]\r\n}\r\n\r\nlet TextInputModules\r\nexport default class TextInput extends React.PureComponent<TextInputProps, {value: string}> {\r\n hasSet: boolean\r\n constructor(props: TextInputProps){\r\n super(props)\r\n\r\n this.onChange = this.onChange.bind(this)\r\n this.onFocus = this.onFocus.bind(this)\r\n this.onBlur = this.onBlur.bind(this)\r\n\r\n this.state = {\r\n value: props.value || \"\"\r\n }\r\n }\r\n\r\n static defaultProps:TextInputProps = {\r\n name: \"\",\r\n size: \"default\",\r\n disabled: false,\r\n placeholder: \"\",\r\n value: \"\",\r\n error: null,\r\n maxLength: 999,\r\n className: \"\",\r\n inputClassName: \"\",\r\n id: null,\r\n onChange: NOOP,\r\n onFocus: NOOP,\r\n onBlur: NOOP\r\n }\r\n\r\n get modules(){\r\n return TextInputModules || (TextInputModules = [\r\n WebpackLoader.find(e => e.default && e.default.displayName === \"TextInput\").default\r\n ])\r\n }\r\n\r\n onChange(value, name){\r\n this.hasSet = false\r\n this.props.onChange(value, name, this)\r\n if(this.hasSet)return // prevent event if the onChange has changed the value.\r\n this.setState({\r\n value\r\n })\r\n this.forceUpdate()\r\n }\r\n\r\n onFocus(ev, name){\r\n this.props.onFocus(ev, name, this)\r\n }\r\n\r\n onBlur(ev, name){\r\n this.props.onBlur(ev, name, this)\r\n }\r\n\r\n render(){\r\n let [\r\n TextAreaComponent\r\n ] = this.modules\r\n\r\n let props = this.props\r\n return <TextAreaComponent {...props} onChange={this.onChange} onFocus={this.onFocus} onBlur={this.onBlur} value={this.state.value} />\r\n }\r\n\r\n get value(){\r\n return this.state.value || \"\"\r\n }\r\n\r\n setValue(value:string){\r\n this.setState({\r\n value: value\r\n })\r\n this.forceUpdate()\r\n this.hasSet = true\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([{\r\n name: \"api-preview-textinput\"\r\n }], [{\r\n size: \"default\"\r\n }, {\r\n size: \"mini\"\r\n }], [{\r\n disabled: false\r\n }, {\r\n disabled: true\r\n }], [{\r\n placeholder: \"\"\r\n }], [{\r\n value: \"\"\r\n }], [{\r\n error: null\r\n }, {\r\n error: \"Example error\"\r\n }], [{\r\n maxLength: 999\r\n }], [{\r\n className: \"\"\r\n }], [{\r\n inputClassName: \"\"\r\n }], [{\r\n id: \"api-preview-textinput\"\r\n }], [{\r\n onChange: (value: string, name: string) => {}\r\n }])\r\n return AllPreviews\r\n })()\r\n }\r\n\r\n static help = {\r\n warn: \"This should be used for single line inputs.\"\r\n }\r\n}\r\nlet AllPreviews","import WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport { ReactNode } from \"react\"\r\n\r\ntype TitleProps = {\r\n children?: ReactNode,\r\n className?: string\r\n}\r\n\r\nlet TitleModules\r\nexport default class Title extends React.Component<TitleProps> {\r\n constructor(props: TitleProps){\r\n super(props)\r\n }\r\n\r\n get modules(){\r\n return TitleModules || (TitleModules = [\r\n WebpackLoader.find(e => typeof e.colorStandard === \"string\"),\r\n WebpackLoader.find(e => typeof e.size32 === \"string\"),\r\n WebpackLoader.find(e => typeof e.h2 === \"string\")\r\n ])\r\n }\r\n\r\n render(){\r\n let [\r\n colorModule,\r\n sizeModule,\r\n titleModule\r\n ] = this.modules\r\n\r\n let props = this.props\r\n\r\n let className = `${colorModule.colorStandard} ${sizeModule.size14} ${titleModule.h2} ${titleModule.defaultColor} ${titleModule.defaultMarginh2}`\r\n if(props.className)className += \" \"+props.className\r\n\r\n return React.createElement(\"h2\", {className}, props.children)\r\n }\r\n \r\n static defaultProps:TitleProps = {\r\n children: null,\r\n className: null\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([\r\n {\r\n children: \"Example title\"\r\n }\r\n ])\r\n return AllPreviews\r\n })()\r\n }\r\n}\r\nlet AllPreviews","/**\n * Recreate the given object without the __proto__. Useful for better formatting when output in console.\n * @param obj The object to recreate\n */\nexport default function cloneNullProto<Obj=any>(obj:Obj):Obj{\n let o = Object.create(null)\n Object.keys(obj).forEach(k => {\n o[k] = obj[k]\n })\n return o\n}","export default function excludeProperties<Obj = any>(obj:Obj, props:(keyof Obj)[]):Partial<Obj>{\r\n let newObj = {}\r\n\r\n Object.keys(obj).forEach((k) => {\r\n if(props.includes(k as keyof Obj))return\r\n newObj[k] = obj[k]\r\n })\r\n\r\n return newObj\r\n}","import Notice from \"./Notice\"\r\nimport uuid from \"../../modules/uuid\"\r\nimport { EventEmitter } from \"events\"\r\n\r\nexport const events = new EventEmitter()\r\n\r\nexport default class Notices extends React.Component<{container: any}> {\r\n static displayName = \"LightcordNotices\"\r\n static defaultProps = {}\r\n constructor(props: Readonly<{ container: any }>){\r\n super(props)\r\n\r\n this.noticeHandler = this.noticeHandler.bind(this)\r\n }\r\n\r\n noticeHandler(){\r\n this.forceUpdate()\r\n }\r\n\r\n componentWillMount(){\r\n events.on(\"noticeUpdate\", this.noticeHandler)\r\n }\r\n\r\n componentWillUnmount(){\r\n events.off(\"noticeUpdate\", this.noticeHandler)\r\n }\r\n\r\n render(){\r\n if(!this.hasNotice)return null\r\n const notice = notices[0]\r\n return <Notice {...notice}></Notice>\r\n }\r\n\r\n get hasNotice(){\r\n return notices.length > 0\r\n }\r\n}\r\n\r\nexport const notices:notice[] = []\r\n\r\nexport type noticeWithoutID = {\r\n text: string,\r\n buttonText?: string,\r\n onClick?: () => void,\r\n type: \"default\"|\"info\"|\"success\"|\"danger\"|\"streamerMode\"|\"download\"|\"notification\"|\"premium\"|\"richPresence\"|\"premiumTier1\"|\"premiumTier2\"|\"facebook\"|\"brand\"|\"survey\"|\"spotify\"\r\n}\r\n\r\nexport type notice = {\r\n id: string\r\n} & noticeWithoutID","import toInteger from '../_lib/toInteger/index.js';\nimport addHours from '../addHours/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * var result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\n\nexport default function subHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addHours(dirtyDate, -amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMinutes from '../addMinutes/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\n\nexport default function subMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMinutes(dirtyDate, -amount);\n}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","let req\nsetReq()\nfunction filterDangerous(mods){\n return mods.map(e => {\n return protect(e)\n })\n}\nfunction protect(exports){\n let theModule = exports.exports\n let mod = theModule.default\n if(!mod)return exports\n if (mod.remove && mod.set && mod.clear && mod.get && !mod.sort) return null;\n if (!mod.getToken && !mod.getEmail && !mod.showToken)return exports\n\n const proxy = new Proxy(mod, {\n getOwnPropertyDescriptor: function(obj, prop) {\n if (prop === \"getToken\" || prop === \"getEmail\" || prop === \"showToken\") return undefined;\n return Object.getOwnPropertyDescriptor(obj, prop);\n },\n get: function(obj, func) {\n if (func == \"getToken\" && obj.getToken) return () => \"mfa.XCnbKzo0CLIqdJzBnL0D8PfDruqkJNHjwHXtr39UU3F8hHx43jojISyi5jdjO52e9_e9MjmafZFFpc-seOMa\";\n if (func == \"getEmail\" && obj.getEmail) return () => \"puppet11112@gmail.com\";\n if (func == \"showToken\" && obj.showToken) return () => true;\n if (func == \"__proto__\" && obj.__proto__) return proxy;\n \n return obj[func];\n }\n });\n\n return Object.assign({}, exports, {exports: Object.assign({}, theModule, {default: proxy})})\n}\n\nclass Webpackloader {\n get modules(){\n if(req){\n return filterDangerous(Object.values(req.c).filter((e:any) => e && e.exports))\n }else{\n setReq()\n if(req){\n return filterDangerous(Object.values(req.c).filter((e:any) => e && e.exports))\n }else{\n return []\n }\n }\n }\n get(ids, modules){\n if(typeof ids === \"function\"){\n return (modules || this.modules).map((mdl) => {\n if(mdl && typeof mdl.exports !== \"undefined\"){\n return mdl.exports\n }else{\n return null\n }\n }).filter(e => e).filter(ids)\n }else if(Array.isArray(ids)){\n modules = modules || this.modules\n return ids.map(id => this.get(id, modules))\n }else{\n modules = modules || this.modules\n let module = modules.filter(e => !!e).find(e => e.i === ids)\n if(!module)return undefined\n return module.exports\n }\n }\n get default(){\n return this\n }\n}\n\nexport default new Webpackloader()\n\nfunction setReq(){\n try{\n req = window[\"webpackJsonp\"].push([[], {__extra_id__: (mdl, exports, req) => mdl.exports = req}, [[\"__extra_id__\"]]]);\n if(req){\n delete req.m.__extra_id__;\n delete req.c.__extra_id__;\n }\n }catch(e){\n req = undefined\n }\n}\n\nclass DangerousWebpackloader {\n get modules(){\n if(req){\n return Object.values(req.c).filter((e:any) => e && e.exports)\n }else{\n setReq()\n if(req){\n return Object.values(req.c).filter((e:any) => e && e.exports)\n }else{\n return []\n }\n }\n }\n get(ids, modules?){\n if(typeof ids === \"function\"){\n return (modules || this.modules).map((mdl) => {\n if(mdl && typeof mdl.exports !== \"undefined\"){\n return mdl.exports\n }else{\n return null\n }\n }).filter(e => e).filter(ids)\n }else if(Array.isArray(ids)){\n modules = modules || this.modules\n return ids.map(id => this.get(id, modules))\n }else{\n modules = modules || this.modules\n let module = modules.filter(e => !!e).find(e => e.i === ids)\n if(!module)return undefined\n return module.exports\n }\n }\n get default(){\n return this\n }\n}\nexport const dangerousBDModules = new DangerousWebpackloader()","import DiscordButton from \"./inputs/Button\"\nimport Switch from \"./inputs/Switch\"\nimport RadioGroup from \"./inputs/RadioGroup\"\nimport TextArea from \"./inputs/TextArea\"\nimport TextInput from \"./inputs/TextInput\"\nimport Dropdown from \"./inputs/Dropdown\"\nimport Title from \"./general/Title\"\nimport SettingsTitle from \"./general/SettingsTitle\"\nimport Tabs, { Tab } from \"./general/Tabs\"\nimport SettingSubTitle from \"./general/SettingSubTitle\"\nimport CodeBlock from \"./general/CodeBlock\"\nimport cloneNullProto from \"../modules/cloneNullProto\"\nimport Tooltip from \"./general/Tooltip\"\nimport ColorPicker from \"./inputs/ColorPicker\"\nimport AlertBox from \"./general/AlertBox\"\nimport ErrorCatcher, { createProxyErrorCatcherClass } from \"./general/ErrorCatcher\"\nimport Flex, { FlexChild } from \"./general/Flex\"\nimport Text from \"./general/Text\"\nimport DateRange from \"./inputs/DateRange\"\nimport DateInput from \"./inputs/DateInput\"\n\nconst RadioGroupProxied = createProxyErrorCatcherClass(RadioGroup)\nexport default cloneNullProto({\n inputs: cloneNullProto({\n Button: createProxyErrorCatcherClass(DiscordButton),\n Switch: createProxyErrorCatcherClass(Switch),\n Choices: RadioGroupProxied,\n RadioGroup: RadioGroupProxied,\n TextArea: createProxyErrorCatcherClass(TextArea),\n TextInput: createProxyErrorCatcherClass(TextInput),\n Dropdown: createProxyErrorCatcherClass(Dropdown),\n ColorPicker: createProxyErrorCatcherClass(ColorPicker),\n DateRange: createProxyErrorCatcherClass(DateRange),\n DateInput: createProxyErrorCatcherClass(DateInput)\n }),\n general: cloneNullProto({\n Title: createProxyErrorCatcherClass(Title),\n SettingsTitle: createProxyErrorCatcherClass(SettingsTitle),\n SettingSubTitle: createProxyErrorCatcherClass(SettingSubTitle),\n Tabs: createProxyErrorCatcherClass(Tabs),\n CodeBlock: createProxyErrorCatcherClass(CodeBlock),\n Tooltip: createProxyErrorCatcherClass(Tooltip),\n AlertBox: createProxyErrorCatcherClass(AlertBox),\n Flex: createProxyErrorCatcherClass(Flex),\n FlexChild: createProxyErrorCatcherClass(FlexChild),\n ErrorCatcher: ErrorCatcher,\n Text: Text\n })\n})","import WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport { ReactNode, CSSProperties, MouseEventHandler, MouseEvent } from \"react\"\r\nimport NOOP from \"../../modules/noop\"\r\n\r\nlet ButtonModules\r\n\r\ntype ButtonProps = {\r\n children?: ReactNode,\r\n onClick?: (ev: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>) => void,\r\n color?: ButtonColor,\r\n wrapper?: boolean,\r\n look?: ButtonLook,\r\n size?: ButtonSize,\r\n hoverColor?: ButtonHovers,\r\n disabled?: boolean,\r\n style?: CSSProperties,\r\n onRightClick?: () => void,\r\n className?: string,\r\n onMouseDown?: (ev: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>) => void\r\n}\r\nexport default class Button extends React.Component<ButtonProps, {hover: boolean}> {\r\n constructor(props:ButtonProps){\r\n super(props)\r\n\r\n this.state = {\r\n hover: false\r\n }\r\n }\r\n\r\n static Colors:ButtonColor[] = [\"brand\", \"grey\", \"red\", \"green\", \"yellow\", \"primary\", \"link\", \"white\", \"black\", \"transparent\"]\r\n static Looks:ButtonLook[] = [\"filled\", \"inverted\", \"outlined\", \"ghost\", \"link\", \"blank\"]\r\n static Sizes:ButtonSize[] = [\"small\", \"medium\", \"large\", \"xlarge\", \"min\", \"max\", \"icon\", \"none\"]\r\n static HoverColors: ButtonHovers[] = [\"default\", ...Button.Colors]\r\n\r\n get modules(){ // caching modules\r\n return ButtonModules || (ButtonModules = [\r\n WebpackLoader.findByUniqueProperties([\"_horizontal\"]),\r\n WebpackLoader.findByUniqueProperties([\"colorTransparent\"]),\r\n WebpackLoader.findByUniqueProperties([\"buttonWrapper\"]),\r\n WebpackLoader.findByUniqueProperties([\"ButtonColors\"]),\r\n ])\r\n }\r\n\r\n render(){\r\n let [\r\n flexModule,\r\n euhModule1,\r\n buttonModule,\r\n colorsModule,\r\n ] = this.modules\r\n\r\n let props:ButtonProps = {}\r\n if(this.props){\r\n if(\"color\" in this.props){\r\n props.color = this.props.color\r\n }\r\n if(\"children\" in this.props){\r\n props.children = this.props.children\r\n }\r\n if(\"onClick\" in this.props){\r\n props.onClick = this.props.onClick\r\n }\r\n if(\"onMouseDown\" in this.props){\r\n props.onMouseDown = this.props.onMouseDown\r\n }\r\n if(\"wrapper\" in this.props){\r\n props.wrapper = !!this.props.wrapper\r\n }\r\n if(\"look\" in this.props){\r\n props.look = this.props.look\r\n }\r\n if(\"size\" in this.props){\r\n props.size = this.props.size\r\n }\r\n if(\"hoverColor\" in this.props){\r\n props.hoverColor = this.props.hoverColor\r\n }\r\n if(\"disabled\" in this.props){\r\n props.disabled = this.props.disabled\r\n }else{\r\n props.disabled = false\r\n }\r\n if(\"style\" in this.props){\r\n props.style = this.props.style\r\n }else{\r\n props.style = {}\r\n }\r\n if(\"onRightClick\" in this.props){\r\n props.onRightClick = this.props.onRightClick\r\n }else{\r\n props.onRightClick = NOOP\r\n }\r\n }\r\n\r\n if(props.color){\r\n props.color = props.color.toLowerCase() as ButtonColor\r\n if(!Button.Colors.includes(props.color)){\r\n props.color = Button.Colors[0]\r\n }\r\n }else{\r\n props.color = Button.Colors[0]\r\n }\r\n\r\n if(props.look){\r\n props.look = props.look.toLowerCase() as ButtonLook\r\n if(!Button.Looks.includes(props.look)){\r\n props.look = Button.Looks[0]\r\n }\r\n }else{\r\n props.look = Button.Looks[0]\r\n }\r\n\r\n if(props.size){\r\n props.size = props.size.toLowerCase() as ButtonSize\r\n if(!Button.Sizes.includes(props.size)){\r\n props.size = Button.Sizes[0]\r\n }\r\n }else{\r\n props.size = Button.Sizes[0]\r\n }\r\n\r\n if(props.hoverColor){\r\n props.hoverColor = props.hoverColor.toLowerCase() as ButtonHovers\r\n if(!Button.HoverColors.includes(props.hoverColor)){\r\n props.hoverColor = Button.HoverColors[0]\r\n }\r\n }else{\r\n props.hoverColor = Button.HoverColors[0]\r\n }\r\n\r\n let buttonSize = props.size ? colorsModule.ButtonSizes[props.size.toUpperCase()] || \"\" : \"\"\r\n if(buttonSize)buttonSize = \" \" + buttonSize\r\n\r\n let hoverColor = props.hoverColor ? colorsModule.ButtonHovers[props.hoverColor.toUpperCase()] || \"\" : \"\"\r\n if(hoverColor)hoverColor = \" \" + hoverColor\r\n\r\n props.onClick = typeof props.onClick === \"function\" ? props.onClick : NOOP\r\n if(typeof props.wrapper !== \"boolean\")props.wrapper = true\r\n\r\n props.onMouseDown = typeof props.onMouseDown === \"function\" ? props.onMouseDown : NOOP\r\n\r\n let hover = this.state.hover ? euhModule1.hasHover : \"\"\r\n if(hover)hover = \" \" + hover\r\n\r\n let classListButton = `${flexModule.flexChild} ${euhModule1.button} ${colorsModule.ButtonLooks[props.look.toUpperCase()]} ${colorsModule.ButtonColors[props.color.toUpperCase()]}${buttonSize}${hoverColor}${hover} ${euhModule1.grow}`.split(\" \")\r\n if(typeof this.props.className === \"string\" && this.props.className){\r\n classListButton = this.props.className.split(\" \").concat(classListButton)\r\n }\r\n let button = <button type=\"button\" \r\n ref=\"button\" className={classListButton.join(\" \")} \r\n style={{flex: \"0 1 auto\", ...props.style}} onClick={props.onClick} onMouseEnter={(ev) => {\r\n if(!hoverColor)return\r\n this.setState({hover: true})\r\n }} onMouseLeave={(ev) => {\r\n if(!hoverColor)return\r\n this.setState({hover: false})\r\n }} disabled={props.disabled} onContextMenu={() => props.onRightClick()}\r\n onMouseDown={props.onMouseDown}>\r\n <div className={euhModule1.contents}>{props.children}</div>\r\n </button>\r\n\r\n if(props.wrapper){\r\n return <div ref=\"wrapper\" className={buttonModule.buttonWrapper}>\r\n {button}\r\n </div>\r\n }\r\n return button\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n let colors = []\r\n for(let color of Button.Colors){\r\n colors.push({\r\n color: color\r\n })\r\n }\r\n AllPreviews.push(colors)\r\n let looks = []\r\n for(let look of Button.Looks){\r\n looks.push({\r\n look: look\r\n })\r\n }\r\n AllPreviews.push(looks)\r\n let sizes = []\r\n for(let size of Button.Sizes){\r\n sizes.push({\r\n size: size\r\n })\r\n }\r\n AllPreviews.push(sizes)\r\n let hovers = []\r\n for(let hover of Button.HoverColors){\r\n hovers.push({\r\n hoverColor: hover\r\n })\r\n }\r\n AllPreviews.push(hovers)\r\n AllPreviews.push([{children: \"Test Button\"}])\r\n AllPreviews.push([{onClick: () => {}}])\r\n AllPreviews.push([{wrapper: false}])\r\n AllPreviews.push([{disabled: false}, {disabled: true}])\r\n return AllPreviews\r\n })()\r\n }\r\n}\r\nlet AllPreviews\r\n\r\n\r\nexport type ButtonColor = \"brand\" | \"grey\" | \"red\" | \"green\" | \"yellow\" | \"primary\" | \"link\" | \"white\" | \"black\" | \"transparent\"\r\nexport type ButtonLook = \"filled\" | \"inverted\" | \"outlined\" | \"ghost\" | \"link\" | \"blank\"\r\nexport type ButtonSize = \"none\" | \"small\" | \"medium\" | \"large\" | \"xlarge\" | \"min\" | \"max\" | \"icon\"\r\nexport type ButtonHovers = \"default\" | ButtonColor","module.exports = require(\"powercord/webpack\");","import WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport { ReactNode } from \"react\"\r\n\r\ntype AlertBoxProps = {\r\n type: \"warn\"|\"info\"|\"danger\"|\"error\"|\"success\",\r\n children?: ReactNode|string\r\n}\r\n\r\nlet AlertBoxModules\r\nexport default class AlertBox extends React.Component<AlertBoxProps> {\r\n static defaultProps:AlertBoxProps = {\r\n type: \"info\",\r\n children: null\r\n }\r\n\r\n get modules(){\r\n return AlertBoxModules || (AlertBoxModules = [\r\n WebpackLoader.find(e => e.default && e.default.displayName === \"Markdown\" && e.default.defaultProps.parser).default\r\n ])\r\n }\r\n\r\n render(){\r\n const [\r\n Markdown\r\n ] = this.modules\r\n\r\n let wrap\r\n let children\r\n if(typeof this.props.children === \"string\"){\r\n wrap = Markdown.prototype.render.call({\r\n props: Object.assign({\r\n className: \"\",\r\n children: this.props.children\r\n }, Markdown.defaultProps)\r\n })\r\n children = wrap.props.children\r\n }else{\r\n wrap = Markdown.prototype.render.call({\r\n props: Object.assign({\r\n className: \"\",\r\n children: \"\"\r\n }, Markdown.defaultProps)\r\n })\r\n children = this.props.children\r\n }\r\n wrap.props.children = <div className={\"lc-alert-box lc-alert-box-\"+this.props.type}>\r\n <blockquote className=\"lc-blockquote\">\r\n {children}\r\n </blockquote>\r\n </div>\r\n return wrap\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([\r\n {\r\n children: \"***Discord's*** **Markdown** _is_ [supported](https://google.com) or you can just insert your own react childs.\"\r\n }\r\n ], [\r\n {\r\n type: \"info\"\r\n },\r\n {\r\n type: \"success\"\r\n },\r\n {\r\n type: \"warn\"\r\n },\r\n {\r\n type: \"error\"\r\n }\r\n ])\r\n return AllPreviews\r\n })()\r\n }\r\n\r\n static help = {\r\n info: \"You can insert markdown (as string) or normal react childs\",\r\n warn: \"All string will be interpreted as markdown. If you want raw string, pass an array with the string inside.\"\r\n }\r\n}\r\nlet AllPreviews","import { notices, noticeWithoutID, notice, events as noticeEvents } from \"../components/private/Notices\";\nimport Utils from \"./Utils\";\nimport uuid from \"./uuid\";\nimport cloneNullProto from \"./cloneNullProto\";\nimport { EventEmitter } from \"events\";\nimport { defaultNotice } from \"../components/private/Notice\";\nimport excludeProperties from \"./excludeProperties\";\nimport NOOP from \"./noop\";\nimport WebpackLoader, { WebpackLoaderError } from \"./WebpackLoader\";\n\nlet soundModule\n/**\n * Tools for interacting with \n */\nexport default new class DiscordTools {\n /**\n * Shows a notice on the top of Discord.\n * @param data Data of the notice.\n */\n showNotice(data:NoticeData):Notice{\n if(typeof data !== \"object\" || typeof data.text !== \"string\")throw new Error(`This notice is not valid. Given: ${Utils.formatJSObject(data)}`)\n let newData = cloneNullProto(Object.assign({}, defaultNotice, data)) as notice\n newData.id = uuid()\n notices.push(newData)\n noticeEvents.emit(\"noticeUpdate\")\n const notice = new Notice(newData)\n return notice\n }\n\n /**\n * Get all the notices in queue.\n */\n get notices():Notice[]{\n return notices.map(data => new Notice(data))\n }\n\n /**\n * Quickly send notification (Even when no focused.)\n * @param data The notification. Be sure to include all properties except functions cause they're optional.\n * Notifications have a timeout of 3-5 seconds.\n * They look like this: https://i.imgur.com/jzuxKKu.png\n */\n showNotification(data:NotificationData):Notification{\n const notification = new window.Notification(data.title, excludeProperties(data, [\n \"title\",\n \"onClick\",\n \"onClose\",\n \"onShow\"\n ]))\n notification.onclick = data.onClick || NOOP\n notification.onshow = data.onShow || NOOP\n notification.onclose = data.onClose || NOOP\n return notification\n }\n\n /**\n * Create a sound for later use.\n * @param sound The sound as defined in the Sound type.\n */\n createSound(sound:Sound){\n soundModule = soundModule || WebpackLoader.findByUniqueProperties([\"createSound\"])\n if(!soundModule)throw new WebpackLoaderError(\"Couldn't find soundModule.\")\n const created = soundModule.createSound(sound)\n return created\n }\n\n /**\n * Same as createSource, except it automatically plays.\n * @param sound The sound as defined in the Sound type.\n */\n playSound(sound:Sound){\n const created = this.createSound(sound)\n created.play()\n return created\n }\n}\n\n/**\n * List of valid sounds.\n */\nexport type Sound = \"call_calling\"|\"call_ringing\"|\"call_ringing_beat\"|\"ddr-down\"|\"ddr-left\"|\"ddr-right\"|\"ddr-up\"|\"deafen\"|\"discodo\"|\"disconnect\"|\"human_man\"|\"mention1\"|\"mention2\"|\"mention3\"|\"message1\"|\"message2\"|\"message3\"|\"mute\"|\"overlayunlock\"|\"ptt_start\"|\"ptt_stop\"|\"reconnect\"|\"robot_man\"|\"stream_ended\"|\"stream_started\"|\"stream_user_joined\"|\"stream_user_left\"|\"undeafen\"|\"unmute\"|\"user_join\"|\"user_leave\"|\"user_moved\"\n\n/**\n * Notifications informations.\n */\nexport type NotificationData = {\n /** The title of the notification */\n title: string,\n /** The body of the notification. Could be truncated. */\n body: string,\n /** An http(s) link to an icon. */\n icon: string,\n /** When the notification is showing */\n onShow?: () => void,\n /** When the user clicked the notification */\n onClick?: () => void,\n /** When the notification has been closed. */\n onClose?: () => void\n}\n\nexport type NoticeData = noticeWithoutID\n\nconst EventHandler = function(){\n if(this.removed !== this.state.removed){\n if(this.removed){\n this.emit(\"removed\")\n }\n }\n if(this.showing !== this.state.showing){\n if(this.showing){\n this.emit(\"showing\", true)\n }else{\n this.emit(\"showing\", false)\n }\n }\n if(this.index !== this.state.index){\n this.emit(\"index\", this.index)\n }\n this.state.removed = this.removed\n this.state.index = this.index\n this.state.showing = this.showing\n}\n\n/** A notice interface for modifying it and subscribing to events. */\nexport class Notice extends EventEmitter {\n constructor(data){\n super()\n this.data = data\n\n this.state = {\n removed: this.removed,\n showing: this.showing,\n index: this.index\n }\n\n let eventFunc = EventHandler.bind(this)\n noticeEvents.on(\"noticeUpdate\", eventFunc)\n this.on(\"removed\", () => {\n noticeEvents.off(\"noticeUpdate\", eventFunc)\n })\n }\n\n /**\n * Will be called whem the notice is removed.\n */\n on(event: \"removed\", listener: () => void):this\n /**\n * Will be called when the notice is visible or not.\n */\n on(event: \"showing\", listener: (isShowing:boolean) => void):this\n /**\n * Will be called when the notice queue changes.\n */\n on(event: \"index\", listener: (index:number) => void):this\n on(event: string, listener: (...args:any[]) => void){\n return super.on(event, listener)\n }\n\n /**\n * Will be called whem the notice is removed.\n */\n once(event: \"removed\", listener: () => void):this\n /**\n * Will be called when the notice is visible or not.\n */\n once(event: \"showing\", listener: (isShowing:boolean) => void):this\n /**\n * Will be called when the notice queue changes.\n */\n once(event: \"index\", listener: (index:number) => void):this\n once(event: string, listener: (...args:any[]) => void){\n return super.once(event, listener)\n }\n\n off(event: \"removed\", listener: () => void):this\n off(event: \"showing\", listener: (isShowing:boolean) => void):this\n off(event: \"index\", listener: (index:number) => void):this\n off(event: string, listener: (...args:any[]) => void){\n return super.off(event, listener)\n }\n\n /** Please do not modify this. It is used internally to emit events only if the data has changed. */\n private state:{\n removed:boolean,\n showing:boolean,\n index:number\n }\n\n private nextTickRefresh:boolean = false\n\n /** if the notice is not, and will not show anymore. */\n get removed():boolean{\n return !notices.find(e => e.id === this.id)\n }\n /** If the notice is showing right now. */\n get showing():boolean{\n return this.index === 0\n }\n /** The position in the queue, 0 is showing. */\n get index():number{\n return notices.findIndex(e => e.id === this.id)\n }\n /** The id of the notice. */\n get id(){\n return this.data.id\n }\n\n update(data: Partial<notice>){\n for(let key in data){\n if(key === \"id\")continue\n this.data[key] = data[key]\n }\n\n if(!this.nextTickRefresh){\n this.nextTickRefresh = true\n process.nextTick(() => {\n this.nextTickRefresh = false\n noticeEvents.emit(\"noticeUpdate\")\n })\n }\n }\n\n get text(){\n return this.data.text\n }\n set text(text){\n this.update({\n text\n })\n }\n\n get type(){\n return this.data.type\n }\n set type(type){\n this.update({\n type\n })\n }\n\n get buttonText(){\n return this.data.buttonText\n }\n set buttonText(buttonText:string){\n this.update({\n buttonText\n })\n }\n\n get onClick(){\n return this.data.onClick\n }\n set onClick(onClick){\n this.update({\n onClick\n })\n }\n\n remove(){\n if(this.removed)return\n notices.splice(this.index, 1)\n noticeEvents.emit(\"noticeUpdate\")\n }\n data:notice\n}","import WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport { notice, notices, events } from \"./Notices\"\r\nimport NOOP from \"../../modules/noop\"\r\n\r\nlet NoticeModules\r\nexport const defaultNotice:notice = {\r\n text: \"\",\r\n id: \"unknown id\",\r\n onClick: NOOP,\r\n buttonText: null,\r\n type: \"default\"\r\n}\r\nexport default class Notice extends React.Component<notice> {\r\n static displayName = \"LightcordNotice\"\r\n static defaultProps:notice = defaultNotice\r\n\r\n get modules(){\r\n return NoticeModules || (NoticeModules = [\r\n WebpackLoader.find(e => e.noticeInfo)\r\n ])\r\n }\r\n \r\n render(){\r\n const [\r\n noticeClasses\r\n ] = this.modules\r\n\r\n const className = noticeClasses[\"notice\"+this.props.type.slice(0, 1).toUpperCase()+this.props.type.slice(1)]\r\n \r\n if(!className){\r\n notices.pop()\r\n setImmediate(() => {\r\n events.emit(\"noticeUpdate\")\r\n })\r\n return null\r\n }\r\n const button = this.props.buttonText ? <button className={noticeClasses.button} onClick={() => {\r\n notices.pop()\r\n this.props.onClick()\r\n events.emit(\"noticeUpdate\")\r\n }}>{this.props.buttonText}</button> : null\r\n return <div className={className}>\r\n <div className={noticeClasses.dismiss} role=\"button\" tabIndex={0} onClick={() => {\r\n notices.pop()\r\n events.emit(\"noticeUpdate\")\r\n }} />\r\n {this.props.text}\r\n {button}\r\n </div>\r\n }\r\n}","module.exports = require(\"events\");","import WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport { ReactNode, CSSProperties } from \"react\"\r\n\r\n\r\ntype FlexProps = {\r\n className?: string,\r\n align?: string,\r\n justify?: string,\r\n direction?: string,\r\n shrink?: number,\r\n grow?: number,\r\n basis?: \"auto\"|string,\r\n style?: CSSProperties\r\n}\r\n\r\nfunction getModules(){\r\n return FlexModules || (FlexModules = [\r\n (() => {\r\n let Flex = WebpackLoader.find(e => e.default && e.default.displayName === \"Flex\")\r\n if(Flex)Flex = Flex.default\r\n return Flex\r\n })()\r\n ])\r\n}\r\n\r\nlet FlexModules\r\nexport default class Flex extends React.Component<FlexProps> {\r\n constructor(props:FlexProps){\r\n super(props)\r\n }\r\n\r\n get modules(){\r\n return getModules()\r\n }\r\n\r\n render(){\r\n let [\r\n FlexComponent\r\n ] = this.modules\r\n\r\n return <FlexComponent {...this.props} />\r\n }\r\n\r\n static get Direction(){\r\n return getModules()[0].Direction as {\r\n VERTICAL: string,\r\n HORIZONTAL: string,\r\n HORIZONTAL_REVERSE: string\r\n }\r\n }\r\n\r\n static get Align(){\r\n return getModules()[0].Align as {\r\n START: string,\r\n END: string,\r\n CENTER: string,\r\n STRETCH: string,\r\n BASELINE: string\r\n }\r\n }\r\n\r\n static get Justify(){\r\n return getModules()[0].Justify as {\r\n START: string,\r\n END: string,\r\n CENTER: string,\r\n BETWEEN: string,\r\n AROUND: string\r\n }\r\n }\r\n\r\n static get Wrap(){\r\n return getModules()[0].Justify as {\r\n NO_WRAP: string,\r\n WRAP: string,\r\n WRAP_REVERSE: string\r\n }\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([{\r\n children: \"Your components here.\"\r\n }])\r\n return AllPreviews\r\n })()\r\n }\r\n}\r\nlet AllPreviews\r\n\r\nexport type FlexChildProps = {\r\n children?: ReactNode,\r\n className?: string,\r\n grow?: number,\r\n style?: CSSProperties,\r\n wrap?: boolean\r\n}\r\nexport class FlexChild extends React.Component<FlexChildProps> {\r\n get modules(){\r\n return getModules()\r\n }\r\n\r\n render(){\r\n const [\r\n FlexComponent\r\n ] = this.modules\r\n\r\n return <FlexComponent.Child {...this.props} />\r\n }\r\n}","import * as React from \"react\"\nimport Utils, { ColorName } from \"../../modules/Utils\"\n\n\nexport type TextProps = {\n weight?: TextWeight,\n color?: TextColor|string,\n textCase?: TextCase,\n size?: TextSize,\n selectable?: boolean,\n family?: TextFamily,\n children: string,\n tag?: string,\n className?: string,\n style?: React.CSSProperties\n}\nexport default class Text extends React.Component<TextProps> {\n render(){\n let classList = this.props.className ? this.props.className.split(\" \") : []\n let style = this.props.style ? {...this.props.style} : {}\n style.flexGrow = 0\n if(this.props.weight){\n classList.push(`lc-text-weight${Utils.firstLetterUppercase(this.props.weight)}`)\n }\n if(this.props.color){\n style.color = Utils.getColor(this.props.color as TextColor) || this.props.color\n }\n if(this.props.textCase){\n classList.push(`lc-text-cases${Utils.firstLetterUppercase(this.props.textCase)}`)\n }\n if(this.props.size){\n classList.push(...Constants.sizes[this.props.size])\n }\n if(this.props.family){\n classList.push(`lc-text-${this.props.family}`)\n }\n if(this.props.selectable){\n classList.push(\"lc-text-selectable\")\n }\n\n return React.createElement(this.props.tag, {\n style,\n className: classList.join(\" \")\n }, this.props.children)\n }\n\n static defaultProps:TextProps = {\n tag: \"div\",\n children: null\n }\n\n static get AllPreviews(){\n return AllPreviews || (AllPreviews = [\n this.weights.map(e => ({weight: e})),\n this.colors.map(e => ({color: e})),\n this.textCases.map(e => ({textCase: e})),\n this.sizes.map(e => ({size: e})),\n this.familys.map(e => ({family: e})),\n [\n {\n children: \"Test Text\"\n }\n ],\n [\"div\",\"p\",...Utils.executeXTimes((index) => {\n return \"h\"+(index+1)\n }, 6)].map(e => ({tag: e})),\n [true, false].map(e => ({selectable: e}))\n ])\n }\n\n static weights:TextWeight[] = [\"light\", \"normal\", \"medium\", \"semibold\", \"bold\"]\n static get colors():TextColor[]{\n return Object.keys(Lightcord.DiscordModules.constants.Colors).map(e => e.toLowerCase()) as TextColor[]\n }\n static textCases:TextCase[] = [\"lowercase\", \"uppercase\"]\n static sizes:TextSize[] = [\"small\", \"medium\", \"medium_small\", \"medium_large\", \"large\"]\n static familys:TextFamily[] = [\"primary\", \"code\"]\n}\nlet AllPreviews\n\nexport type TextWeight = \"light\"|\"normal\"|\"medium\"|\"semibold\"|\"bold\"\nexport type TextColor = ColorName\nexport type TextCase = \"lowercase\"|\"uppercase\"\nexport type TextSize = \"small\"|\"medium\"|\"medium_small\"|\"medium_large\"|\"large\"\nexport type TextFamily = \"primary\"|\"code\"\n\nexport const Constants = {\n sizes: {\n small: [\"lc-text-size12\", \"lc-text-height16\"],\n medium_small: [\"lc-text-size14\", \"lc-text-height16\"],\n medium: [\"lc-text-size16\", \"lc-text-height20\"],\n medium_large: [\"lc-text-size20\", \"lc-text-height26\"],\n large: [\"lc-text-size28\", \"lc-text-height34\"]\n }\n}","/** TODO: Finish DateRange */\r\n\r\nimport * as React from \"react\"\r\nimport Flex, { FlexChild } from \"../general/Flex\"\r\nimport Text from \"../general/Text\"\r\n\r\nexport const DateConstants = {\r\n DATE_FORMAT: \"yyyy-MM-dd\"\r\n}\r\nimport DateInput from \"./DateInput\"\r\nexport type DateRangeProps = {\r\n dateFormat?: string,\r\n defaultEnd: Date,\r\n defaultStart: Date,\r\n className?: string,\r\n onChange?: (start:Date, end:Date) => void,\r\n maxDate?:Date,\r\n minDate?:Date,\r\n filterDate?:() => void,\r\n showMonthYearPicker: boolean\r\n}\r\nlet AllPreviews\r\nexport default class DateRange extends React.Component<DateRangeProps, {\r\n end: Date,\r\n start: Date\r\n}> {\r\n static get AllPreviews(){\r\n return AllPreviews || (AllPreviews = [\r\n [{\r\n dateFormat: DateConstants.DATE_FORMAT\r\n },{\r\n dateFormat: \"dd/MM/yyyy\"\r\n },{\r\n dateFormat: \"MM/dd/yyyy\"\r\n }],\r\n [{\r\n defaultEnd: new Date(Date.now() + 6.048e+8)\r\n }],\r\n [{\r\n defaultStart: new Date(Date.now() - 6.048e+8)\r\n }],\r\n [{\r\n onChange: (start, end) => {}\r\n }],\r\n [{\r\n maxDate: new Date(Date.now() + (6.048e+8 * 2))\r\n },{\r\n maxDate: null\r\n }],\r\n [{\r\n minDate: new Date(Date.now() - (6.048e+8 * 2))\r\n },{\r\n minDate: null\r\n }],\r\n [{\r\n filterDate: (date) => true\r\n }],\r\n [{\r\n showMonthYearPicker: false\r\n },{\r\n showMonthYearPicker: true\r\n }]\r\n ])\r\n }\r\n\r\n static defaultProps:Partial<DateRangeProps> = {\r\n dateFormat: DateConstants.DATE_FORMAT\r\n }\r\n\r\n static displayName = \"DateRange\"\r\n\r\n constructor(props:DateRangeProps){\r\n super(props)\r\n this.state = {\r\n end: props.defaultEnd,\r\n start: props.defaultStart\r\n }\r\n }\r\n\r\n componentDidUpdate(oldProps:DateRangeProps){\r\n let defaultStart = this.props.defaultStart\r\n if(oldProps.defaultStart !== defaultStart){\r\n this.setState({\r\n start: defaultStart\r\n })\r\n }\r\n }\r\n\r\n handleEndChange(end:Date){\r\n this.setState({\r\n end: end\r\n }, this.handleChange)\r\n }\r\n\r\n handleStartChange(start:Date){\r\n this.setState({\r\n start: start\r\n }, this.handleChange)\r\n }\r\n\r\n getMaxDate(){\r\n if(this.props.maxDate)return this.props.maxDate\r\n return null\r\n }\r\n\r\n getMinDate(){\r\n if(this.props.minDate)return this.props.minDate\r\n return null\r\n }\r\n\r\n handleChange(){\r\n const onChange = this.props.onChange\r\n if(onChange == null)return\r\n const state = this.state\r\n const start = state.start\r\n const end = state.end\r\n onChange(start, end)\r\n }\r\n\r\n render(){\r\n const state = this.state\r\n const start = state.start\r\n const end = state.end\r\n const props = this.props\r\n const filterDate = props.filterDate\r\n const showMonthYearPicker = props.showMonthYearPicker\r\n\r\n return <Flex className=\"lc-dateWrapper\">\r\n <FlexChild grow={0}>\r\n <Text className=\"lc-dateLabel\" size=\"small\" \r\n textCase=\"uppercase\" weight=\"semibold\" color=\"primary_dark_300\">\r\n FROM\r\n </Text>\r\n </FlexChild>\r\n <FlexChild grow={0}>\r\n <DateInput defaultValue={start} minDate={this.getMinDate()} maxDate={end} onChange={this.handleStartChange.bind(this)} \r\n startDate={start} endDate={end} filterDate={filterDate} selectsStart={true} showMonthYearPicker={showMonthYearPicker} />\r\n </FlexChild>\r\n <FlexChild grow={0}>\r\n <Text className=\"lc-dateLabel\" size=\"small\" \r\n textCase=\"uppercase\" weight=\"semibold\" color=\"primary_dark_300\">\r\n TO\r\n </Text>\r\n </FlexChild>\r\n <FlexChild grow={0}>\r\n <DateInput defaultValue={end} minDate={start} maxDate={this.getMaxDate()} onChange={this.handleEndChange.bind(this)} \r\n startDate={start} endDate={end} filterDate={filterDate} selectsStart={true} showMonthYearPicker={showMonthYearPicker} />\r\n </FlexChild>\r\n </Flex>\r\n }\r\n\r\n static help = {\r\n warn: \"This component is still `experimental`. Please report issues to [Lightcord's developers](https://github.com/Lightcord/Lightcord/issues).\"\r\n }\r\n}","/** TODO: Finish DateInput */\r\n\r\nimport * as React from \"react\"\r\nimport { DateConstants } from \"./DateRange\"\r\nimport WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport { getInternalTextInput } from \"./TextInput\"\r\nimport Button from \"./Button\"\r\nimport ReactDOM = require(\"react-dom\")\r\nimport * as DatePicker from \"react-datepicker\";\r\n\r\nexport type DateInputProps = {\r\n className?: string,\r\n dateFormat?: string,\r\n defaultValue: Date,\r\n filterDate?: () => any,\r\n isModalInput?: boolean,\r\n maxDate?: Date,\r\n minDate?: Date,\r\n onChange?: (value:Date, name:string) => void,\r\n selectsStart?: boolean,\r\n showMonthYearPicker?: boolean,\r\n startDate?: Date,\r\n endDate?: Date\r\n style?: React.CSSProperties,\r\n name: string,\r\n selectsEnd?: boolean\r\n}\r\nlet _datefns\r\nexport function getDateFNS():typeof import(\"date-fns\"){\r\n return _datefns || (_datefns = require(\"date-fns\"))\r\n}\r\nexport function getEmotion():typeof import(\"emotion\"){\r\n return window[\"__SECRET_EMOTION__\"]\r\n}\r\nlet DateInputModules\r\nexport default class DateInput extends React.Component<DateInputProps, {\r\n inputResetKey: number,\r\n isCalendarPickerOpen: boolean,\r\n calendarRight: number,\r\n calendarTop: number,\r\n value: Date\r\n}> {\r\n static defaultProps:Partial<DateInputProps> = {\r\n dateFormat: DateConstants.DATE_FORMAT,\r\n isModalInput: true\r\n }\r\n\r\n constructor(props:DateInputProps){\r\n super(props)\r\n this.state = {\r\n inputResetKey: 0,\r\n isCalendarPickerOpen: false,\r\n calendarRight: null,\r\n calendarTop: null,\r\n value: props.defaultValue\r\n }\r\n }\r\n\r\n get modules(){\r\n return DateInputModules || (DateInputModules = [\r\n WebpackLoader.find(e => e.default && e.default.displayName === \"Clickable\"),\r\n WebpackLoader.find(e => e.default && e.default.displayName === \"TransitionGroup\")\r\n ])\r\n }\r\n\r\n inputRef:React.Component\r\n\r\n componentDidUpdate(e:DateInputProps){\r\n const defaultValue = this.props.defaultValue\r\n const dateFormat = this.props.dateFormat\r\n \r\n if (e.defaultValue !== defaultValue && null != defaultValue) {\r\n if(!this.inputRef)return\r\n let str = getDateFNS().format(defaultValue, dateFormat)\r\n this.inputRef[\"value\"] = str\r\n }\r\n }\r\n\r\n closeCalendarPicker(){\r\n this.setState({\r\n isCalendarPickerOpen: false\r\n })\r\n }\r\n\r\n getCurrentValue(){\r\n let value = this.state.value\r\n let dateFormat = this.props.dateFormat;\r\n if(!value)return\r\n if(isDateValid(value))return getDateFNS().format(value, dateFormat)\r\n return null\r\n }\r\n\r\n handleDateChange(value){\r\n this.closeCalendarPicker()\r\n const onChange = this.props.onChange\r\n const name = this.props.name\r\n this.setState((state) => {\r\n return {\r\n value: value,\r\n inputResetKey: state.inputResetKey + 1\r\n }\r\n }, function() {\r\n null != onChange && onChange(value, name)\r\n })\r\n }\r\n\r\n handleInputBlur(ev){\r\n const value = this.state.value\r\n const newvalue = ev.currentTarget.value\r\n const iso = getDateFNS().parseISO(newvalue);\r\n if(isDateValid(iso) && value){\r\n if(iso.valueOf() !== value.valueOf())this.setState(function(state) {\r\n return {\r\n value: iso,\r\n inputResetKey: state.inputResetKey + 1\r\n }\r\n }, function() {\r\n const props = this.props\r\n const onChange = props.onChange\r\n const name = props.name;\r\n if(onChange)onChange(iso, name)\r\n })\r\n }\r\n }\r\n\r\n toggleCalendarVisibility(ev){\r\n const rect:DOMRect = ev.currentTarget.getBoundingClientRect()\r\n const bottom = rect.bottom\r\n const right = rect.right\r\n const innerWidth = window.innerWidth;\r\n this.setState(function(state) {\r\n return {\r\n isCalendarPickerOpen: !state.isCalendarPickerOpen,\r\n calendarRight: innerWidth - right,\r\n calendarTop: bottom\r\n }\r\n })\r\n }\r\n\r\n setRef(ref){\r\n this.inputRef = ref\r\n }\r\n\r\n renderCalendarPicker(){\r\n let state = this.state\r\n let calendarRight = state.calendarRight\r\n let calendarTop = state.calendarTop\r\n let isCalendarPickerOpen = state.isCalendarPickerOpen\r\n let value = state.value\r\n let props = this.props\r\n let minDate = props.minDate\r\n let maxDate = props.maxDate\r\n let endDate = props.endDate\r\n let filterDate = props.filterDate\r\n let startDate = props.startDate\r\n let selectsEnd = props.selectsEnd\r\n let selectsStart = props.selectsStart\r\n let isModalInput = props.isModalInput\r\n let y = props.showMonthYearPicker;\r\n return isCalendarPickerOpen ? React.createElement(AnimatedCalendarPicker, {\r\n value: value ? value : undefined,\r\n onClickOutside: this.closeCalendarPicker.bind(this),\r\n onSelect: this.handleDateChange.bind(this),\r\n minDate: minDate,\r\n maxDate: maxDate,\r\n endDate: endDate,\r\n filterDate: filterDate,\r\n startDate: startDate,\r\n selectsEnd: selectsEnd,\r\n selectsStart: selectsStart,\r\n right: calendarRight,\r\n top: calendarTop,\r\n isModalInput: isModalInput,\r\n showMonthYearPicker: y\r\n }) : null\r\n }\r\n\r\n render(){\r\n const [\r\n Clickable,\r\n TransitionGroup\r\n ] = this.modules\r\n let name = this.props.name\r\n return React.createElement(Clickable.default, {\r\n className: getEmotion().css({\r\n position: \"relative\"\r\n })\r\n }, React.createElement(getInternalTextInput(), {\r\n inputClassName: getEmotion().css({\r\n paddingRight: \"32px\"\r\n }),\r\n name: name,\r\n onBlur: this.handleInputBlur.bind(this),\r\n defaultValue: this.getCurrentValue(),\r\n inputRef: this.setRef.bind(this)\r\n }), React.createElement(Button, {\r\n className: getEmotion().css({\r\n \"&:hover\": {\r\n opacity: 1\r\n },\r\n position: \"absolute\",\r\n right: 0,\r\n top: \"50%\",\r\n opacity: .6,\r\n padding: \"8px\",\r\n transform: \"translateY(-50%)\",\r\n transition: \"opacity .125s\"\r\n }),\r\n color: \"transparent\",\r\n onMouseDown: this.toggleCalendarVisibility.bind(this),\r\n wrapper: false\r\n //TODO: Add icon\r\n }, /*React.createElement(v.default, {\r\n className: _.default.calendarIcon,\r\n name: v.IconNames.CALENDAR\r\n })*/), ReactDOM.createPortal(React.createElement(TransitionGroup.default, {\r\n component: \"div\",\r\n transitionAppear: false\r\n }, this.renderCalendarPicker()), window.document.body))\r\n }\r\n\r\n static help = {\r\n warn: \"This component is still `experimental`. Please report issues to [Lightcord's developers](https://github.com/Lightcord/Lightcord/issues).\"\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (AllPreviews = [\r\n [\r\n {\r\n dateFormat: DateConstants.DATE_FORMAT\r\n },\r\n {\r\n dateFormat: \"dd/MM/yyyy\"\r\n },\r\n {\r\n dateFormat: \"MM/dd/yyyy\"\r\n }\r\n ],\r\n [\r\n {\r\n defaultValue: new Date()\r\n },\r\n {\r\n defaultValue: null\r\n },\r\n {\r\n defaultValue: new Date(1597061085498)\r\n }\r\n ],\r\n [\r\n {\r\n filterDate: (date) => true\r\n },\r\n {\r\n filterDate: (date) => {\r\n if(date.getDay() !== 0)return false\r\n return true\r\n }\r\n }\r\n ],\r\n [\r\n {\r\n isModalInput: true\r\n },\r\n {\r\n isModalInput: false\r\n }\r\n ],\r\n [\r\n {\r\n maxDate: null\r\n },\r\n {\r\n maxDate: new Date(Date.now() + 6.048e+8)\r\n }\r\n ],\r\n [\r\n {\r\n minDate: null\r\n },\r\n {\r\n minDate: new Date(Date.now() - 6.048e+8)\r\n }\r\n ],\r\n [\r\n {\r\n onChange: (value, name) => {}\r\n }\r\n ],\r\n [\r\n {\r\n selectsStart: null\r\n },\r\n {\r\n selectsStart: new Date(Date.now() - (8.64e+7*2))\r\n }\r\n ],\r\n [\r\n {\r\n selectsEnd: null\r\n },\r\n {\r\n selectsEnd: new Date(Date.now() + (8.64e+7*2))\r\n }\r\n ],\r\n [\r\n {\r\n showMonthYearPicker: false\r\n },\r\n {\r\n showMonthYearPicker: true\r\n }\r\n ],\r\n [\r\n {\r\n startDate: null\r\n },\r\n {\r\n endDate: null\r\n }\r\n ],\r\n [\r\n {\r\n name: \"api-preview-dateinput\"\r\n }\r\n ]\r\n ])\r\n }\r\n}\r\n\r\nlet AllPreviews\r\n\r\nexport function isDateValid(date:Date){\r\n return (date instanceof Date || typeof date === \"object\" || Object.prototype.toString.call(date) === \"[object Date]\") && !isNaN(date.valueOf())\r\n}\r\n\r\nlet AnimatedCalendarPickerModules\r\nexport class AnimatedCalendarPicker extends React.Component<any, {\r\n menuAnimation: any\r\n}> {\r\n static displayName = \"AnimatedCalendarPicker\"\r\n constructor(props){\r\n super(props)\r\n this.state = {\r\n menuAnimation: new this.modules[0].default.Value(0)\r\n }\r\n }\r\n\r\n get modules(){\r\n return AnimatedCalendarPickerModules || (AnimatedCalendarPickerModules = [\r\n WebpackLoader.findByUniqueProperties([\"Value\",\"timing\"])\r\n ])\r\n }\r\n\r\n componentWillEnter(ev){\r\n this.modules[0].default.timing(this.state.menuAnimation, {\r\n toValue: 1,\r\n duration: 150\r\n }).start(ev)\r\n }\r\n\r\n componentWillLeave(e){\r\n this.modules[0].default.timing(this.state.menuAnimation, {\r\n toValue: 0,\r\n duration: 150\r\n }).start(e)\r\n }\r\n\r\n render(){\r\n let props = this.props, \r\n value = props.value, \r\n onClickOutside = props.onClickOutside, \r\n onSelect = props.onSelect, \r\n minDate = props.minDate, \r\n maxDate = props.maxDate, \r\n endDate = props.endDate, \r\n filterDate = props.filterDate, \r\n startDate = props.startDate, \r\n selectsEnd = props.selectsEnd, \r\n selectsStart = props.selectsStart, \r\n top = props.top, \r\n right = props.right, \r\n isModalInput = props.isModalInput, \r\n showMonthYearPicker = props.showMonthYearPicker, \r\n menuAnimation = this.state.menuAnimation, \r\n interpolation = menuAnimation.interpolate({\r\n inputRange: [0, 1],\r\n outputRange: [\"-10px\", \"0px\"]\r\n });\r\n const emotion = getEmotion()\r\n return React.createElement(this.modules[0].default.div, {\r\n className: [emotion.css({\r\n marginRight: \"1px\",\r\n margintop: \"6px\",\r\n position: \"fixed\",\r\n zIndex: 2\r\n }), isModalInput ? emotion.css({\r\n zIndex: 10000\r\n }) : null].filter(e=>e).join(\" \"),\r\n style: {\r\n opacity: menuAnimation,\r\n right: right,\r\n top: top,\r\n transform: [{\r\n translateY: interpolation\r\n }]\r\n }\r\n }, React.createElement(CalendarPicker, {\r\n minDate: minDate,\r\n maxDate: maxDate,\r\n endDate: endDate,\r\n filterDate: filterDate,\r\n startDate: startDate,\r\n selectsEnd: selectsEnd,\r\n selectsStart: selectsStart,\r\n value: value,\r\n onSelect: onSelect,\r\n onClickOutside: onClickOutside,\r\n showMonthYearPicker: showMonthYearPicker,\r\n onChange: console.log\r\n }))\r\n }\r\n}\r\n\r\nexport class CalendarPicker extends React.Component<any> {\r\n static defaultProps = {\r\n value: new Date()\r\n }\r\n static displayName = \"CalendarPicker\"\r\n \r\n render(){\r\n var e = this.props\r\n , t = e.onClickOutside\r\n , r = e.onSelect\r\n , n = e.locale\r\n , l = e.value\r\n , o = e.endDate\r\n , u = e.filterDate\r\n , f = e.startDate\r\n , c = e.minDate\r\n , d = e.maxDate\r\n , p = e.selectsEnd\r\n , y = e.selectsStart\r\n , v = e.showMonthYearPicker;\r\n return React.createElement(\"div\", {\r\n className: \"lc-calendarPicker\"\r\n }, React.createElement(DatePicker.default, {\r\n fixedHeight: true,\r\n inline: true,\r\n selected: l,\r\n locale: n,\r\n onClickOutside: t,\r\n onSelect: r,\r\n onChange: r,\r\n endDate: o,\r\n filterDate: u,\r\n startDate: f,\r\n minDate: c,\r\n maxDate: d,\r\n selectsEnd: p,\r\n selectsStart: y,\r\n showMonthYearPicker: v\r\n }))\r\n }\r\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar GetIntrinsic = require('../GetIntrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nmodule.exports = function callBind() {\n\treturn $reflectApply(bind, $call, arguments);\n};\n\nmodule.exports.apply = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar origSymbol = global.Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar $Object = Object;\nvar $TypeError = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\nvar $TypeError = TypeError;\n\nmodule.exports = function getPolyfill() {\n\tif (!supportsDescriptors) {\n\t\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tif ((/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\n\t\t\treturn descriptor.get;\n\t\t}\n\t}\n\treturn implementation;\n};\n","export const isNative:boolean = typeof window.BDModules !== \"undefined\"\nexport const isImported:boolean = typeof window.BDModules === \"undefined\"","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n","import WebpackLoader from \"./modules/WebpackLoader\"\nimport Components from \"./components/components\"\nimport uuid from \"./modules/uuid\"\nimport Utils from \"./modules/Utils\"\nimport DiscordTools from \"./modules/DiscordTools\"\nimport * as patchers from \"./modules/patchers\"\nimport excludeProperties from \"./modules/excludeProperties\"\nimport cloneNullProto from \"./modules/cloneNullProto\"\nimport NOOP from \"./modules/noop\"\nimport unfreeze from \"./modules/Unfreeze\"\nimport { isNative, isImported } from \"./modules/environnement\"\nimport * as bandagedbdApi from \"@bandagedbd/bdapi\"\nimport \"./alias/react\"\nimport \"./alias/react-dom\"\nimport { LazyLoad } from \"./modules/lazyLoader\"\nimport settings from \"./modules/settings\"\npatchers.patch()\n\n/**\n * Lightcord Api defined at [/LightcordApi/src/index.ts](https://github.com/Lightcord/Lightcord/blob/master/LightcordApi/src/index.ts#L22)\n */\nconst LightcordApi = {\n /**\n * WebpackLoader loads Internal Discord's modules with given filter.\n */\n WebpackLoader: WebpackLoader,\n /**\n * Lightcord's exported component. You can see a list in the app settings when activating `Developer Options` in lightcord's settings.\n */\n Components: Components,\n /** \n * Create uuids.\n * @method\n */\n uuid: uuid,\n /**\n * Set of methods that can help you sometimes.\n */\n Utils: Utils,\n DiscordTools: DiscordTools,\n _: {\n excludeProperties: excludeProperties,\n cloneNullProto: cloneNullProto,\n NOOP: NOOP,\n unfreeze: unfreeze\n },\n get isNative(){return isNative},\n get isImported(){return isImported},\n LazyLoad: LazyLoad,\n settings: settings\n}\n\ndeclare global {\n var React:typeof import(\"react\")\n var ReactDOM:typeof import(\"../node_modules/@types/react-dom\")\n interface Window {\n /**\n * Lightcord is only availlaible in Lightcord (native)\n */\n Lightcord: LightcordGlobal,\n /**\n * BDModules is only availlaible in Lightcord (native)\n */\n BDModules: {\n modules:any[],\n get(filter:(mod:any)=>boolean, modules?:any[]):any[],\n get(id:number, modules?:any[]):any,\n get(ids: [number|((mod:any)=>boolean)], modules?:any[]):any\n },\n BdApi: typeof bandagedbdApi.BdApi,\n EDApi: typeof bandagedbdApi.BdApi,\n ReactDOM: typeof ReactDOM;\n React:typeof React\n }\n var Lightcord:LightcordGlobal\n var BdApi: typeof bandagedbdApi.BdApi\n var EDApi: typeof bandagedbdApi.BdApi\n}\n\nexport default LightcordApi\n\nObject.assign(window.Lightcord.Api, LightcordApi)\n\n/**\n * The main Lightcord exports. Can be accessed with `window.Lightcord`\n */\nexport interface LightcordGlobal {\n /**\n * Some Discord Internal Module shortcuts.\n */\n DiscordModules: {\n /**\n * Internal Discord's dispatcher - can be used to subscribe to gateway events / client events.\n */\n dispatcher: import(\"./types/DiscordDispatcherTypes\").default,\n /**\n * Discord's constants - Can be used to retrieve some infos like Discord's Api Link, Colors, Events, etc...\n */\n constants: import(\"./types/DiscordConstantsTypes\").default\n },\n /** Lightcord's base settings. You don't need to use them. */\n Settings: {\n devMode: boolean,\n callRingingBeat: boolean\n },\n /**\n * Lightcord's Api. This is where all methods/properties lightcord adds are.\n */\n Api: LightcordApiGlobal,\n /** BetterDiscord's Internal Modules. Can be used as well. Example: `Lightcord.BetterDiscord.DOM` for DomTools. */\n BetterDiscord: {\n /** BetterDiscord's plugin api. Can also be accessed with the global variable: `BdApi` */\n BdApi: typeof bandagedbdApi.BdApi,\n [mod:string]:any\n }\n}\n\n/**\n * The main Api. Can be accessed with `window.Lightcord.Api`\n */\ntype LightcordApiGlobal = lightcordApiMainExports & typeof LightcordApi\n\n/** Exports that are defined [here](https://github.com/Lightcord/Lightcord/blob/master/modules/discord_desktop_core/core/app/BetterDiscord/index.js#L278) */\ntype lightcordApiMainExports = {\n /**\n * Waits until the first module that match the filter gets exported\n * @param filter The filter that specifies the module to match.\n */\n ensureExported(filter: (mod:any) => boolean):Promise<any>,\n /**\n * Recreate the object without the `__proto__` and `prototype` properties - usefull for better formatting in console.\n * @param obj The object to recreate\n */\n cloneNullProto<Obj = any>(obj:Obj):Obj\n}","import WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport NOOP from \"../../modules/noop\"\r\n\r\ntype SwitchProps = {\r\n id?: string,\r\n value: boolean,\r\n disabled?: boolean,\r\n classname?: string,\r\n onChange(checked:boolean):void\r\n}\r\n\r\nlet SwitchModules\r\nexport default class Switch extends React.Component<SwitchProps, {value: boolean}> {\r\n constructor(props:SwitchProps){\r\n super(props)\r\n }\r\n\r\n get modules(){\r\n return SwitchModules || (SwitchModules = [\r\n WebpackLoader.find(e => e.default && e.default.displayName === \"Switch\").default\r\n ])\r\n }\r\n\r\n render(){\r\n let [\r\n SwitchComponent\r\n ] = this.modules\r\n\r\n let props = this.props\r\n return (<SwitchComponent id={props.id} checked={props.value} disabled={props.disabled} \r\n className={props.disabled} onChange={props.onChange}/>)\r\n }\r\n\r\n static defaultProps = {\r\n id: null,\r\n onChange: NOOP,\r\n disabled: false,\r\n className: \"\"\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([{onChange: (value) => {}}])\r\n AllPreviews.push([{\r\n value: false\r\n }], [{\r\n disabled: false\r\n }, {\r\n disabled: true\r\n }])\r\n return AllPreviews\r\n })()\r\n }\r\n}\r\nlet AllPreviews","import NOOP from \"../../modules/noop\"\r\nimport WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport Utils from \"../../modules/Utils\"\r\n\r\n\r\ntype RadioGroupProps = {\r\n options?: {\r\n color?: string,\r\n name: string,\r\n value: string,\r\n desc?: string\r\n }[],\r\n onChange?: (value: string) => void,\r\n value?: string,\r\n disabled?: boolean,\r\n size?: \"small\"|\"medium\",\r\n itemType?: \"bar\"|\"panel\",\r\n infoClassName?: string\r\n}\r\n\r\nlet RadioGroupModule\r\nexport default class RadioGroup extends React.Component<RadioGroupProps, {value?: string}> {\r\n static defaultProps:RadioGroupProps = {\r\n options: [{\r\n value: \"none\",\r\n name: \"No options\",\r\n desc: \"No options was passed to Choices. If you meant to display no options at all, please pass an empty array.\",\r\n color: \"#f04747\"\r\n }],\r\n value: null,\r\n disabled: false,\r\n size: \"medium\",\r\n itemType: \"bar\",\r\n infoClassName: null,\r\n onChange: NOOP\r\n }\r\n constructor(props:RadioGroupProps){\r\n super(props)\r\n this.onChange = this.onChange.bind(this)\r\n this.state = {\r\n value: props.value\r\n }\r\n }\r\n\r\n onChange(ev){\r\n this.props.onChange(ev.value)\r\n this.setState({\r\n value: ev.value\r\n })\r\n }\r\n\r\n get modules(){\r\n return RadioGroupModule || (RadioGroupModule = [\r\n WebpackLoader.find(e => e.default && e.default.displayName === \"RadioGroup\").default\r\n ])\r\n }\r\n\r\n render(){\r\n let [\r\n RadioGroupComponent\r\n ] = this.modules\r\n\r\n let props = this.props\r\n return <RadioGroupComponent options={props.options} onChange={this.onChange} value={this.state.value} disabled={props.disabled} \r\n size={RadioGroupComponent.Sizes[props.size.toUpperCase()]} itemType={RadioGroupComponent.ItemTypes[props.itemType.toUpperCase()]} \r\n infoClassName={props.infoClassName}/>\r\n }\r\n\r\n get value():string|null{\r\n return this.state.value\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([{\r\n options: [\r\n {\r\n value: \"option1\",\r\n name: \"Option 1\",\r\n desc: \"description 1\"\r\n },\r\n {\r\n value: \"option2\",\r\n name: \"Option 2\",\r\n desc: \"description 2\"\r\n },\r\n {\r\n value: \"option3\",\r\n name: \"Option 3\",\r\n desc: \"description 3\"\r\n }\r\n ]\r\n }], [{\r\n value: \"option1\"\r\n }], [{\r\n disabled: false\r\n }, {\r\n disabled: true\r\n }], [{\r\n size: \"medium\"\r\n }, {\r\n size: \"small\"\r\n }], [{\r\n itemType: \"bar\"\r\n }, {\r\n itemType: \"panel\"\r\n }])\r\n return AllPreviews\r\n })()\r\n }\r\n}\r\nlet AllPreviews","import WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport NOOP from \"../../modules/noop\"\r\nimport Utils from \"../../modules/Utils\"\r\n\r\ntype TextAreaProps = {\r\n name?: string,\r\n disabled?: boolean,\r\n placeholder?: string,\r\n autoFocus?: boolean,\r\n resizeable?: boolean,\r\n flex?: boolean,\r\n autosize?: false,\r\n rows?: number,\r\n value?: string,\r\n error?: string,\r\n maxLength?: number,\r\n className?: string,\r\n id?: string,\r\n onChange?: (value: string, name: string) => void,\r\n onFocus?: (ev, name: string) => void,\r\n onBlur?: (ev, name: string) => void,\r\n onKeyDown?: (ev) => void\r\n}\r\n\r\nlet TextAreaModules\r\nexport default class TextArea extends React.Component<TextAreaProps, {value: string}> {\r\n constructor(props:TextAreaProps){\r\n super(props)\r\n\r\n this.onChange = this.onChange.bind(this)\r\n this.onFocus = this.onFocus.bind(this)\r\n this.onBlur = this.onBlur.bind(this)\r\n this.onKeyDown = this.onKeyDown.bind(this)\r\n\r\n this.state = {\r\n value: props.value || \"\"\r\n }\r\n }\r\n\r\n get modules(){\r\n return TextAreaModules || (TextAreaModules = [\r\n WebpackLoader.find(e => e.default && e.default.displayName === \"TextArea\").default\r\n ])\r\n }\r\n\r\n onChange(value, name){\r\n this.props.onChange(value, name)\r\n this.setState({\r\n value\r\n })\r\n }\r\n\r\n onFocus(ev, name){\r\n this.props.onFocus(ev, name)\r\n }\r\n\r\n onBlur(ev, name){\r\n this.props.onBlur(ev, name)\r\n }\r\n \r\n onKeyDown(ev){\r\n this.props.onKeyDown(ev)\r\n }\r\n\r\n render(){\r\n let [\r\n TextAreaComponent\r\n ] = this.modules\r\n\r\n let props = this.props\r\n\r\n return <TextAreaComponent {...props} onChange={this.onChange} onFocus={this.onFocus} onBlur={this.onBlur} onKeyDown={this.onKeyDown} value={this.state.value}/>\r\n }\r\n\r\n get value(){\r\n return this.state.value || \"\"\r\n }\r\n\r\n static defaultProps:TextAreaProps = {\r\n name: null,\r\n disabled: false,\r\n placeholder: null,\r\n autoFocus: false,\r\n resizeable: false,\r\n flex: false,\r\n autosize: false,\r\n rows: 3,\r\n value: \"\",\r\n error: null,\r\n maxLength: null,\r\n className: null,\r\n id: null,\r\n onChange: NOOP,\r\n onFocus: NOOP,\r\n onBlur: NOOP,\r\n onKeyDown: NOOP\r\n }\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([{\r\n name: \"api-preview-textarea\"\r\n }])\r\n AllPreviews.push([{\r\n disabled: false\r\n }, {\r\n disabled: true\r\n }])\r\n AllPreviews.push([{\r\n placeholder: null\r\n }])\r\n AllPreviews.push([{\r\n autoFocus: false\r\n }, {\r\n autoFocus: true\r\n }])\r\n AllPreviews.push([{\r\n resizeable: false\r\n }, {\r\n resizeable: true\r\n }])\r\n AllPreviews.push([{\r\n flex: false\r\n }, {\r\n flex: true\r\n }])\r\n AllPreviews.push([{\r\n autosize: false\r\n }, {\r\n autosize: true\r\n }])\r\n AllPreviews.push([{\r\n rows: 3\r\n }, {\r\n rows: 2\r\n }, {\r\n rows: 1\r\n }])\r\n AllPreviews.push([{\r\n value: \"\"\r\n }])\r\n AllPreviews.push([{\r\n error: null\r\n }, {\r\n error: \"Example error\"\r\n }])\r\n AllPreviews.push([{\r\n maxLength: 100\r\n }])\r\n AllPreviews.push([{\r\n className: \"\"\r\n }])\r\n AllPreviews.push([{\r\n inputClassName: \"\"\r\n }])\r\n AllPreviews.push([{\r\n id: \"api-preview-textarea\"\r\n }])\r\n return AllPreviews\r\n })()\r\n }\r\n\r\n static help = {\r\n warn: \"This should be used for multi line inputs.\"\r\n }\r\n}\r\nlet AllPreviews","import NOOP from \"../../modules/noop\"\r\nimport WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport { ReactNode, CSSProperties } from \"react\"\r\n\r\ntype DropdownProps = {\r\n className?: string,\r\n error?: string,\r\n options?: {\r\n value: string,\r\n label: string\r\n }[],\r\n valueRenderer?: (data) => ReactNode,\r\n optionRenderer?: (data) => ReactNode,\r\n multiValueRenderer?: (data) => ReactNode\r\n onChange?: (value: string) => void,\r\n value?: string,\r\n disabled?: boolean,\r\n searchable?: boolean,\r\n clearable?: boolean,\r\n styleOverrides?: CSSProperties,\r\n lightThemeColorOverrides?: themeOverride,\r\n darkThemeColorOverrides?: themeOverride,\r\n isMulti?: boolean\r\n}\r\n\r\ntype themeOverride = {\r\n neutral0: string,\r\n neutral5: string,\r\n neutral10: string,\r\n neutral20: string,\r\n neutral30: string,\r\n primary: string,\r\n primary25: string,\r\n primary50: string,\r\n selectedOptionBackground: string,\r\n text: string,\r\n menuBackground: string,\r\n menuBorder: string,\r\n scrollBarThumb: string,\r\n multiOptionBackground: string\r\n}\r\n\r\nlet DropdownModules\r\nexport default class Dropdown extends React.Component<DropdownProps, {value: string|null}> {\r\n constructor(props:DropdownProps){\r\n super(props)\r\n this.onChange = this.onChange.bind(this)\r\n this.state = {\r\n value: props.value || null\r\n }\r\n }\r\n\r\n static defaultProps:DropdownProps = {\r\n className: null,\r\n error: null,\r\n options: [{\r\n value: \"none\",\r\n \"label\": \"No options - No options was passed to Dropdown. If you meant to put an empty dropdown, input an empty array.\"\r\n }],\r\n valueRenderer: null,\r\n multiValueRenderer: null,\r\n optionRenderer: null,\r\n onChange: NOOP,\r\n value: null,\r\n disabled: false,\r\n searchable: false,\r\n clearable: false,\r\n styleOverrides: null,\r\n lightThemeColorOverrides: null,\r\n darkThemeColorOverrides: null,\r\n isMulti: false\r\n }\r\n\r\n onChange(value){\r\n value = value ? value.value : null\r\n this.props.onChange(value)\r\n this.setState({\r\n value: value\r\n })\r\n }\r\n\r\n get modules(){\r\n return DropdownModules || (DropdownModules = [\r\n WebpackLoader.find(e => e.default && e.default.displayName === \"SelectTempWrapper\").default\r\n ])\r\n }\r\n\r\n render(){\r\n let [\r\n DropdownComponent\r\n ] = this.modules\r\n\r\n let props = this.props\r\n let returnValue = <DropdownComponent {...props} onChange={this.onChange} value={this.state.value}/>\r\n return returnValue\r\n }\r\n\r\n get value(){\r\n return this.state.value\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([{\r\n error: null\r\n }, {\r\n error: \"An error occured\"\r\n }], [{\r\n options: [\r\n {\r\n value: \"option1\",\r\n label: \"Option 1\"\r\n },\r\n {\r\n value: \"option2\",\r\n label: \"Option 2\"\r\n },\r\n {\r\n value: \"option3\",\r\n label: \"Option 3\"\r\n }\r\n ]\r\n }], [{\r\n value: \"option1\"\r\n }], [{\r\n disabled: false\r\n }, {\r\n disabled: true\r\n }], [{\r\n searchable: true\r\n }, {\r\n searchable: false\r\n }], [{\r\n clearable: true\r\n }, {\r\n clearable: false\r\n }], [{\r\n isMulti: false\r\n }, {\r\n isMulti: true\r\n }])\r\n return AllPreviews\r\n })()\r\n }\r\n}\r\nlet AllPreviews","import WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport Title from \"./Title\"\r\nimport { ReactNode } from \"react\"\r\n\r\ntype SettingsTitleProps = {\r\n children?: ReactNode\r\n className?: string\r\n}\r\n\r\nlet TitleModules\r\nexport default class SettingsTitle extends React.Component<SettingsTitleProps> {\r\n constructor(props: SettingsTitleProps){\r\n super(props)\r\n }\r\n\r\n get modules(){\r\n return TitleModules || (TitleModules = [\r\n WebpackLoader.find(e => typeof e.marginTop60 === \"string\")\r\n ])\r\n }\r\n\r\n render(){\r\n let [\r\n marginModule\r\n ] = this.modules\r\n\r\n let props = this.props\r\n\r\n let className = `${marginModule.marginTop60} ${marginModule.marginBottom20}`\r\n if(props.className)className =+ \" \"+props.className\r\n \r\n return React.createElement(Title, {className}, props.children)\r\n }\r\n\r\n static defaultProps:SettingsTitleProps = {\r\n children: [\"\"],\r\n className: \"\"\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([\r\n {\r\n children: \"Example title\"\r\n }\r\n ])\r\n return AllPreviews\r\n })()\r\n }\r\n}\r\nlet AllPreviews","import { ReactNode, CSSProperties } from \"react\"\r\nimport NOOP from \"../../modules/noop\"\r\nimport Title from \"./Title\"\r\n\r\ntype TabsProps = {\r\n children?: ReactNode,\r\n tabs: {label: string, id: string}[],\r\n active?: string\r\n onChange?: (tab: string) => void,\r\n style?: CSSProperties\r\n}\r\n\r\nexport default class Tabs extends React.Component<TabsProps, {\r\n active: string\r\n}> {\r\n static defaultProps:TabsProps = {\r\n children: null,\r\n tabs: [{label: \"No tabs was passed to <Tabs>.\", id: \"none\"}],\r\n active: null,\r\n onChange: NOOP,\r\n style: {}\r\n }\r\n \r\n constructor(props:TabsProps){\r\n super(props)\r\n this.state = {\r\n active: this.props.active || null\r\n }\r\n }\r\n\r\n tabsElements:Tab[] = []\r\n \r\n get tabs():Tabs[\"props\"][\"tabs\"]{\r\n return this.props.tabs || []\r\n }\r\n\r\n changeTab(tab:string){\r\n if(tab === this.state.active)return\r\n if(this.props.onChange)this.props.onChange(tab)\r\n this.setState({\r\n active: tab\r\n })\r\n this.tabsElements.forEach(e => e.setActive(tab === e.props.id))\r\n }\r\n\r\n render(){\r\n return (<div className=\"lc-tabWrapper\" style={this.props.style}>\r\n <div className=\"lc-tabnav\" style={{flex: \"0 1 auto\"}}>\r\n {this.tabs.map(tab => {\r\n return React.createElement(Tab, {TabContainer: this, title: tab.label, id: tab.id, key: btoa(tab.label+\":\"+tab.id)})\r\n })}\r\n </div>\r\n <div className=\"lc-tab\">\r\n {this.props.children}\r\n </div>\r\n </div>)\r\n } \r\n\r\n isActive(tab){\r\n return this.state.active === tab\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([\r\n {\r\n children: (<div style={{marginTop: \"20px\", marginBottom: \"20px\"}}>\r\n <div style={{\r\n backgroundColor: \"var(--background-primary)\", \r\n padding: \"30px 30px\", \r\n borderRadius: \"8px\"\r\n }} className=\"lc-tab-box-shadow\">\r\n <Title>Preview tabs</Title>\r\n </div>\r\n </div>)\r\n }\r\n ], [\r\n {\r\n tabs: [\r\n {\r\n label: \"Active tab\",\r\n id: \"1\"\r\n },\r\n {\r\n label: \"Unactive tab\",\r\n id: \"2\"\r\n }\r\n ]\r\n }\r\n ], [\r\n {\r\n active: \"1\"\r\n }\r\n ], [\r\n {\r\n onChange: (tabId) => {}\r\n }\r\n ])\r\n return AllPreviews\r\n })()\r\n }\r\n}\r\nlet AllPreviews\r\n\r\nexport class Tab extends React.Component<{\r\n TabContainer: Tabs, \r\n title: string, \r\n id: string\r\n}, {\r\n active: boolean\r\n}> {\r\n constructor(props){\r\n super(props)\r\n\r\n this.state = {\r\n active: props.TabContainer.isActive(props.id)\r\n }\r\n\r\n this.props.TabContainer.tabsElements.push(this)\r\n }\r\n\r\n setActive(isActive:boolean){\r\n this.setState({\r\n active: !!isActive\r\n })\r\n }\r\n\r\n render(){\r\n let className = `lc-navItem`\r\n if(this.state.active){\r\n className += ` lc-navItemActive`\r\n }else{\r\n className += ` lc-navItemInactive`\r\n }\r\n return (<div className={className} onClick={()=>{\r\n this.props.TabContainer.changeTab(this.props.id)\r\n }}>\r\n {this.props.title}\r\n </div>)\r\n }\r\n}","import WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport { ReactNode } from \"react\"\r\nimport Utils from \"../../modules/Utils\"\r\n\r\ntype SettingSubTitleProps = {\r\n children?: ReactNode\r\n className?: string\r\n}\r\n\r\nlet TitleModules\r\nexport default class SettingSubTitle extends React.Component<SettingSubTitleProps> {\r\n static defaultProps:SettingSubTitleProps = {\r\n children: [],\r\n className: \"\"\r\n }\r\n\r\n get modules(){\r\n return TitleModules || (TitleModules = [\r\n WebpackLoader.find(e => typeof e.marginTop60 === \"string\"),\r\n WebpackLoader.findByUniqueProperties([\"h5\"]),\r\n window.Lightcord.Api.WebpackLoader.findByUniqueProperties([\"size14\"]),\r\n window.Lightcord.Api.WebpackLoader.findByUniqueProperties([\"colorStandard\"])\r\n ])\r\n }\r\n\r\n render(){\r\n let [\r\n marginModule,\r\n titleModule,\r\n sizeModule,\r\n colorModule\r\n ] = this.modules\r\n\r\n let props = this.props\r\n\r\n let className = `${colorModule.colorStandard} ${sizeModule.size14} ${titleModule.h5} ${marginModule.marginBottom4}`\r\n if(props.className)className =+ \" \"+props.className\r\n \r\n return React.createElement(\"h5\", {className}, props.children)\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([\r\n {\r\n children: \"Example title\"\r\n }\r\n ])\r\n return AllPreviews\r\n })()\r\n }\r\n}\r\nlet AllPreviews","import WebpackLoader from \"../../modules/WebpackLoader\"\r\n\r\ntype CodeBlockProps = {\r\n language?: string,\r\n content: string\r\n}\r\n\r\nlet CodeBlockModules\r\nexport default class CodeBlock extends React.Component<CodeBlockProps> {\r\n static defaultProps:CodeBlockProps = {\r\n language: \"plaintext\",\r\n content: \"\"\r\n }\r\n \r\n get modules(){\r\n return CodeBlockModules || (CodeBlockModules = [\r\n WebpackLoader.find(e => e.markup),\r\n WebpackLoader.find(e => e.messageContent),\r\n WebpackLoader.find(e => e.scrollbarGhostHairline),\r\n WebpackLoader.find(e => e.listLanguages),\r\n WebpackLoader.find(e => e.marginBottom8)\r\n ])\r\n }\r\n\r\n render(){\r\n let [\r\n messageModule1,\r\n messageModule2,\r\n scrollbarModule1,\r\n hightlightJS,\r\n marginModule1\r\n ] = this.modules\r\n\r\n const code = this.props.language === \"plaintext\" ? <code className={`${scrollbarModule1.scrollbarGhostHairline} hljs`}>\r\n {this.props.content}\r\n </code> : <code className={`${scrollbarModule1.scrollbarGhostHairline} hljs`} \r\n dangerouslySetInnerHTML={{__html: hightlightJS.highlight(this.props.language, this.props.content).value}} />\r\n return (<div className={`${messageModule1.markup} ${messageModule2.messageContent}`}>\r\n <pre>\r\n {code}\r\n </pre>\r\n <div className={marginModule1.marginBottom8}></div>\r\n </div>)\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([\r\n {\r\n content: \"console.log(\\\"Exemple code\\\")\"\r\n }\r\n ])\r\n AllPreviews.push([\r\n {\r\n language: \"js\"\r\n },\r\n {\r\n language: \"plaintext\"\r\n },\r\n ...CodeBlock.prototype.modules[3].listLanguages().filter(e => e !== \"js\").map(e => ({language: e}))\r\n ])\r\n return AllPreviews\r\n })()\r\n }\r\n}\r\nlet AllPreviews","import WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport { ReactNode } from \"react\"\r\nimport excludeProperties from \"../../modules/excludeProperties\"\r\n\r\ntype TooltipData = {\r\n onClick():void\r\n onMouseEnter():void\r\n onMouseLeave():void\r\n onContextMenu():void\r\n \"aria-label\": string\r\n}\r\ntype TooltipProps = {\r\n children:ReactNode,\r\n text: string,\r\n position?: TooltipPosition,\r\n color?: TooltipColor\r\n}\r\n\r\nlet TooltipModules\r\nexport default class Tooltip extends React.Component<TooltipProps> {\r\n constructor(props: TooltipProps){\r\n super(props)\r\n }\r\n\r\n get modules(){\r\n return TooltipModules || (TooltipModules = [\r\n WebpackLoader.find(e => e.default && e.default.displayName === \"Tooltip\")\r\n ])\r\n }\r\n\r\n render(){\r\n let [\r\n Tooltip\r\n ] = this.modules\r\n\r\n let props = excludeProperties(this.props, [\"children\"])\r\n\r\n return React.createElement(Tooltip.default, props, (data:TooltipData) => {\r\n return React.createElement(\"div\", {\r\n ...data,\r\n style: {\r\n width: \"fit-content\",\r\n height: \"fit-content\"\r\n }\r\n }, this.props.children)\r\n })\r\n }\r\n \r\n static defaultProps:TooltipProps = {\r\n children: null,\r\n text: \"No text was passed to Tooltip\",\r\n position: \"top\",\r\n color: \"brand\"\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([\r\n {\r\n children: React.createElement(window.Lightcord.Api.Components.inputs.Button, {\r\n color: \"green\",\r\n look: \"ghost\",\r\n size: \"small\",\r\n hoverColor: \"yellow\",\r\n onClick: () => { },\r\n wrapper: false\r\n }, \"Hover this button to see the tooltip\")\r\n }\r\n ])\r\n AllPreviews.push([\r\n {\r\n text: \"Example Tooltip Text\"\r\n }\r\n ])\r\n let colors = []\r\n Tooltip.Colors.forEach(color => {\r\n colors.push({\r\n color: color\r\n })\r\n })\r\n AllPreviews.push(colors)\r\n let positions = []\r\n Tooltip.Positions.forEach(p => {\r\n positions.push({\r\n position: p\r\n })\r\n })\r\n AllPreviews.push(positions)\r\n return AllPreviews\r\n })()\r\n }\r\n\r\n static Positions:TooltipPosition[] = [\"top\", \"left\", \"right\", \"bottom\"]\r\n static Colors:TooltipColor[] = [\"black\", \"grey\", \"brand\", \"green\", \"yellow\", \"red\"]\r\n}\r\nlet AllPreviews\r\n\r\nexport type TooltipPosition = \"top\" | \"left\" | \"right\" | \"bottom\"\r\nexport type TooltipColor = \"black\" | \"grey\" | \"brand\" | \"green\" | \"yellow\" | \"red\"","import NOOP from \"../../modules/noop\"\r\nimport WebpackLoader from \"../../modules/WebpackLoader\"\r\nimport Utils from \"../../modules/Utils\"\r\n\r\nconst Constants = {\r\n defaultColor: 10070709,\r\n baseColors: [\r\n 1752220, \r\n 3066993, \r\n 3447003, \r\n 10181046, \r\n 15277667, \r\n 15844367, \r\n 15105570, \r\n 15158332, \r\n 9807270, \r\n 6323595, \r\n 1146986, \r\n 2067276, \r\n 2123412, \r\n 7419530, \r\n 11342935, \r\n 12745742, \r\n 11027200, \r\n 10038562, \r\n 9936031, \r\n 5533306\r\n ]\r\n}\r\n\r\ntype ColorPickerProps = {\r\n defaultColor?: number,\r\n customColor?: number,\r\n baseColors?: number[],\r\n value?: string,\r\n disabled?: boolean,\r\n onChange?: (color:number) => void\r\n}\r\n\r\nlet ColorPickerModules\r\nlet isFetching = null\r\n\r\n/**\r\n * This componennt needs to be loaded. As a result, you may experience 100-300ms loading the first time.\r\n * Render will return `null` before loaded.\r\n */\r\nexport default class ColorPicker extends React.PureComponent<ColorPickerProps, {value?:string,lastColor:any}> {\r\n constructor(props:ColorPickerProps){\r\n super(props)\r\n this.state = {\r\n value: props.value || null,\r\n lastColor: this.props.value\r\n }\r\n this.onChange = this.onChange.bind(this)\r\n }\r\n\r\n /** Preload the component. */\r\n static preload(){\r\n if(ColorPicker.prototype.modules[0])return // already loaded\r\n if(isFetching)return // is fetching so don't double preload.\r\n try{ // If we caught an error\r\n new ColorPicker({}).render()\r\n }catch(e){\r\n console.error(e)\r\n }\r\n }\r\n\r\n onChange(val){\r\n this.props.onChange(val)\r\n this.setState({\r\n value: val\r\n })\r\n this.forceUpdate()\r\n }\r\n\r\n static defaultProps:ColorPickerProps = {\r\n defaultColor: Constants.defaultColor,\r\n customColor: null,\r\n baseColors: Constants.baseColors,\r\n value: null,\r\n disabled: false,\r\n onChange: NOOP\r\n }\r\n\r\n get modules(){\r\n return ColorPickerModules || (ColorPickerModules = [\r\n WebpackLoader.find(e => e.default && e.default.displayName === \"ColorPicker\")\r\n ])\r\n }\r\n\r\n renderColorPicker(){\r\n let [\r\n ColorPickerComponent\r\n ] = this.modules\r\n\r\n if(!ColorPickerComponent){\r\n if(isFetching){ // support for multiple color picker\r\n isFetching.then(() => this.forceUpdate())\r\n return null\r\n }\r\n ColorPickerModules = null\r\n let resolve\r\n isFetching = new Promise(res => (resolve = res))\r\n const GuildSettingsRoles = new (WebpackLoader.find(e => e.default && e.default.displayName && e.default.displayName.includes(\"GuildSettingsRoles\")).default)().render().type\r\n const settings = GuildSettingsRoles.prototype.renderRoleSettings.call({\r\n props: {\r\n guild: {\r\n roles: [],\r\n id: null,\r\n isOwner: () => false\r\n },\r\n currentUser: {\r\n id: null\r\n }\r\n },\r\n getSelectedRole(){\r\n return {\r\n id: null\r\n }\r\n },\r\n renderHeader: GuildSettingsRoles.prototype.renderHeader\r\n })\r\n const GuildRoleSettings = settings.props.children[1].type\r\n let children = GuildRoleSettings.prototype.renderColorPicker.call({\r\n props: {\r\n role: {\r\n id: null,\r\n color: 0\r\n },\r\n locked: false,\r\n everyone: false\r\n }\r\n }).props.children\r\n children.type(children.props).props.children.type._ctor().then(c => {\r\n ColorPickerModules = null\r\n this.forceUpdate()\r\n resolve()\r\n })\r\n\r\n return null\r\n }\r\n return <ColorPickerComponent.default colors={this.props.baseColors} defaultColor={this.props.defaultColor} value={this.state.value} \r\n disabled={this.props.disabled} onChange={this.onChange} customColor={this.props.customColor}>\r\n </ColorPickerComponent.default>\r\n }\r\n\r\n render(){\r\n if(this.state.lastColor !== this.props.value){\r\n this.state = {\r\n value: this.props.value,\r\n lastColor: this.props.value\r\n }\r\n }\r\n return this.renderColorPicker()\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (() => {\r\n AllPreviews = []\r\n AllPreviews.push([\r\n {\r\n disabled: false\r\n },\r\n {\r\n disabled: true\r\n }\r\n ], [\r\n {\r\n value: Utils.HexColorToDecimal(\"#7289DA\")\r\n }, {\r\n value: null\r\n }\r\n ], [\r\n {\r\n onChange: (color) => {}\r\n }\r\n ])\r\n return AllPreviews\r\n })()\r\n }\r\n\r\n static help = {\r\n info: \"To convert hex colors to decimal, you can do `Lightcord.Api.Utils.HexColorToDecimal('#7289DA')` and go back with `Lightcord.Api.Utils.DecimalColorToHex(7506394)`\",\r\n warn: \"The component may not appear instantly. The component needs to be loaded, so you could experience 50-300ms loading time depending on your internet connection.\"\r\n }\r\n}\r\nlet AllPreviews","import components from \"../components/components\"\r\nimport Utils from \"./Utils\"\r\nimport { ComponentProps } from \"react\"\r\nimport uuid from \"./uuid\"\r\nimport TextInput from \"../components/inputs/TextInput\"\r\n\r\nexport default new class PluginUtilities {\r\n constructor(){}\r\n\r\n renderSettings(settings:SettingItem[]){\r\n let items = this.renderSettingsToReact(settings)\r\n let elem = React.createElement(\"div\", {key: uuid()}, items)\r\n return Utils.ReactToHTMLElement(elem)\r\n }\r\n\r\n renderSettingsToReact(settings:SettingItem[]){\r\n let items = []\r\n settings.forEach(item => {\r\n \r\n if(typeof item !== \"object\")return items.push(item)\r\n if(item.props && \"children\" in item.props){\r\n if(!Array.isArray(item.props.children))item.props.children = [item.props.children]\r\n item.props.children = this.renderSettingsToReact(item.props.children)\r\n }\r\n if(!item.props)item.props = {}\r\n item.props.key = uuid()\r\n let component = Utils.getNestedProps(components, item.component)\r\n if(!component){\r\n let warning = new TextInput({\r\n value: `Warning: No component was found for: \"${item.component}\". Please correct your code.`,\r\n disabled: true,\r\n error: `Warning: No component was found for: \"${item.component}\". Please correct your code.`\r\n }).render()\r\n items.push(warning)\r\n return\r\n }\r\n items.push(React.createElement(component, Object.create(item.props)))\r\n })\r\n return items\r\n }\r\n}\r\n\r\ntype SettingItem = {\r\n component: string,\r\n props: ComponentProps<any>\r\n}","module.exports = require(\"uuid/v1\");","module.exports = require(\"uuid/v4\");","import { ReactNode } from \"react\";\r\nimport WebpackLoader from \"../../modules/WebpackLoader\";\r\nimport DiscordTools from \"../../modules/DiscordTools\";\r\nimport NOOP from \"../../modules/noop\";\r\nimport uuid from \"../../modules/uuid\";\r\nimport Title from \"./Title\";\r\nimport AlertBox from \"./AlertBox\";\r\n\r\n\r\ntype ErrorCatcherProps = {\r\n children?: ReactNode\r\n}\r\nlet ErrorCatcherModules\r\nexport default class ErrorCatcher extends React.Component<ErrorCatcherProps, {error: boolean, hasSentNotification: boolean}> {\r\n constructor(props:ErrorCatcherProps){\r\n super(props)\r\n this.state = {\r\n error: false,\r\n hasSentNotification: false\r\n }\r\n }\r\n\r\n static get original(){\r\n return ErrorCatcher\r\n }\r\n\r\n get modules():any[]{\r\n return ErrorCatcherModules || (ErrorCatcherModules = [\r\n WebpackLoader.find(e => e.emptyStateImage && e.emptyState)\r\n ])\r\n }\r\n\r\n defaultProps:ErrorCatcherProps = {\r\n children: null\r\n }\r\n\r\n render(){\r\n if(!this.state.error){\r\n return this.props.children\r\n }else{ // try to render a user-friendly interface.\r\n const [\r\n emptyClasses\r\n ] = this.modules\r\n if(!emptyClasses){ // If we can't, render nothing and show a notification.\r\n if(this.state.hasSentNotification)return null // If the notification was already sent, don't send one.\r\n const notification = DiscordTools.showNotification({\r\n body: \"An error occured. Please check the console for more informations.\",\r\n icon: \"https://github.com/lightcord.png\",\r\n onClick: NOOP,\r\n onClose: NOOP,\r\n onShow: NOOP,\r\n title: \"Lightcord Informations\"\r\n })\r\n this.setState({\r\n hasSentNotification: true\r\n })\r\n setTimeout(() => {\r\n notification.close()\r\n }, 2000)\r\n return null\r\n }\r\n return <div className={emptyClasses.emptyState}>\r\n <div className={emptyClasses.emptyStateImage} style={{\r\n marginTop: \"20px\"\r\n }}></div>\r\n <div className={emptyClasses.emptyStateHeader}>An error occured</div>\r\n <p className={emptyClasses.emptyStateSubtext}>\r\n Please check the console for more informations. Join our ­support server for more help.\r\n </p>\r\n </div> \r\n }\r\n }\r\n\r\n componentDidCatch(error, errorInfo){\r\n console.error(errorInfo.componentStack)\r\n this.setState({\r\n error: true\r\n })\r\n }\r\n\r\n static get AllPreviews(){\r\n return AllPreviews || (AllPreviews = [\r\n [\r\n {\r\n children: <AlertBox type=\"info\">This AlertBox is protected by an ErrorCatcher.</AlertBox>\r\n }\r\n ]\r\n ])\r\n }\r\n}\r\n\r\nlet AllPreviews\r\n\r\nexport function createProxyErrorCatcherClass<base = Function>(Class:base):base & {\r\n readonly original: base\r\n}{\r\n const ClassCopy = (class Proxied extends React.Component {\r\n render(){\r\n return <ErrorCatcher key={uuid()}>\r\n {React.createElement(Class as any, {ref: \"original\", ...this.props, key: uuid()})}\r\n </ErrorCatcher>\r\n }\r\n\r\n static displayName = Class[\"displayName\"] || Class[\"name\"]\r\n\r\n static get original(){\r\n return Class\r\n }\r\n }) as any\r\n Object.entries(Object.getOwnPropertyDescriptors(Class)).forEach(value => {\r\n if(value[0] in ClassCopy)return\r\n Object.defineProperty(ClassCopy, value[0], value[1])\r\n })\r\n return ClassCopy\r\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar toStr = Object.prototype.toString;\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn toStr.call(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\ttoStr.call(value) !== '[object Array]' &&\n\t\ttoStr.call(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('es-abstract/helpers/callBind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\n/* globals\n\tAtomics,\n\tSharedArrayBuffer,\n*/\n\nvar undefined;\n\nvar $TypeError = TypeError;\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () { throw new $TypeError(); };\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar generator; // = function * () {};\nvar generatorFunction = generator ? getProto(generator) : undefined;\nvar asyncFn; // async function() {};\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\nvar asyncGen; // async function * () {};\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%ArrayPrototype%': Array.prototype,\n\t'%ArrayProto_entries%': Array.prototype.entries,\n\t'%ArrayProto_forEach%': Array.prototype.forEach,\n\t'%ArrayProto_keys%': Array.prototype.keys,\n\t'%ArrayProto_values%': Array.prototype.values,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': asyncFunction,\n\t'%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\n\t'%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\n\t'%AsyncGeneratorFunction%': asyncGenFunction,\n\t'%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\n\t'%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%Boolean%': Boolean,\n\t'%BooleanPrototype%': Boolean.prototype,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\n\t'%Date%': Date,\n\t'%DatePrototype%': Date.prototype,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%ErrorPrototype%': Error.prototype,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%EvalErrorPrototype%': EvalError.prototype,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\n\t'%Function%': Function,\n\t'%FunctionPrototype%': Function.prototype,\n\t'%Generator%': generator ? getProto(generator()) : undefined,\n\t'%GeneratorFunction%': generatorFunction,\n\t'%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%NumberPrototype%': Number.prototype,\n\t'%Object%': Object,\n\t'%ObjectPrototype%': Object.prototype,\n\t'%ObjProto_toString%': Object.prototype.toString,\n\t'%ObjProto_valueOf%': Object.prototype.valueOf,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\n\t'%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\n\t'%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\n\t'%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\n\t'%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%RangeErrorPrototype%': RangeError.prototype,\n\t'%ReferenceError%': ReferenceError,\n\t'%ReferenceErrorPrototype%': ReferenceError.prototype,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%RegExpPrototype%': RegExp.prototype,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%StringPrototype%': String.prototype,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\n\t'%SyntaxError%': SyntaxError,\n\t'%SyntaxErrorPrototype%': SyntaxError.prototype,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\n\t'%TypeError%': $TypeError,\n\t'%TypeErrorPrototype%': $TypeError.prototype,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\n\t'%URIError%': URIError,\n\t'%URIErrorPrototype%': URIError.prototype,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\t'%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\n};\n\nvar bind = require('function-bind');\nvar $replace = bind.call(Function.call, String.prototype.replace);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tif (!(name in INTRINSICS)) {\n\t\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\n\t}\n\n\t// istanbul ignore if // hopefully this is impossible to test :-)\n\tif (typeof INTRINSICS[name] === 'undefined' && !allowMissing) {\n\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t}\n\n\treturn INTRINSICS[name];\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\n\tvar value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing);\n\tfor (var i = 1; i < parts.length; i += 1) {\n\t\tif (value != null) {\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, parts[i]);\n\t\t\t\tif (!allowMissing && !(parts[i] in value)) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\tvalue = desc ? (desc.get || desc.value) : value[parts[i]];\n\t\t\t} else {\n\t\t\t\tvalue = value[parts[i]];\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols')();\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\nvar hasOwnProperty;\nvar regexExec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty);\n\tregexExec = Function.call.bind(RegExp.prototype.exec);\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar toStr = Object.prototype.toString;\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwnProperty(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\tregexExec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn toStr.call(value) === regexClass;\n\t};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('es-abstract/helpers/callBind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(implementation);\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","import Utils from \"./Utils\"\nimport Notices, { notices } from \"../components/private/Notices\"\nimport { isNative } from \"./environnement\";\nimport WebpackLoader from \"./WebpackLoader\";\nimport { dangerousBDModules } from \"./BDModules\";\n\nexport function patch(){\n /** START NOTICE */\n getModule(e => e.default && e.default.displayName === \"ConnectedAppView\")\n .then(async (mod) => {\n const appClasses = await getModule(e => e.hasNotice);\n const buildRender = original => {\n return function render(){\n const returnValue = original.call(this, ...arguments)\n const newchildren = []\n let children = returnValue.props.children[1].props.children\n if(!Array.isArray(children))children = [children]\n \n newchildren.push(children[0])\n newchildren.push(React.createElement(Notices, {container: this}))\n newchildren.push(children[1])\n returnValue.props.children[1].props.children = newchildren\n \n returnValue.props.children[1].props.children[2].props.children[0].props.render = buildRenderChannelSidebar(returnValue.props.children[1].props.children[2].props.children[0].props.render)\n \n return returnValue\n }\n }\n const buildRenderChannelSidebar = original => {\n return function renderChannelSidebar(){\n const returnValue = original.call(this, ...arguments)\n \n const hasNotice = notices.length > 0\n if(!hasNotice)return returnValue\n if(!Utils.hasClass(returnValue.props.className, appClasses.hasNotice)){\n returnValue.props.className += \" \"+Utils.removeDa(appClasses.hasNotice)\n }\n\n return returnValue\n }\n }\n mod.default.prototype.render = buildRender(mod.default.prototype.render);\n (async function(){\n const base = document.querySelector(\".\"+Utils.removeDa(appClasses.base))\n if(!base)throw new Error(`Could not find base here`)\n const elem = Utils.FindReact(base) as any\n elem.render = buildRender(elem.render)\n elem.forceUpdate()\n })()\n })\n /** END NOTICE */\n\n if(isNative){\n /** START USERPOPOUT PATCH */\n awaitLogin()\n .then(async () => {\n let UserPopout = await getModule(e => e.default && e.default.displayName === \"FluxContainer(ForwardRef(SubscribeGuildMembersContainer(UserPopout)))\")\n const userModule = await getModule(e => e.default && e.default.getCurrentUser)\n const render1 = new UserPopout.default({userId: userModule.default.getCurrentUser().id, guildId: null, channelId: null, disableUserProfileLink: true}).render()\n const PopoutProps = render1.props\n const render2 = render1.type.render(PopoutProps, null)\n const render3 = new render2.type(render2.props).render()\n const UserPopoutComponent = render3.type\n if(!UserPopoutComponent)throw new Error(`Couldn't find the UserPopoutComponent component.`)\n \n const render = UserPopoutComponent.prototype.render\n UserPopoutComponent.prototype.render = function(){\n const returnValue = render.call(this, ...arguments)\n try{\n console.log(returnValue)\n returnValue.props.children.props[\"data-user-id\"] = this.props.user.id\n }catch(e){\n console.error(e)\n }\n return returnValue\n }\n }).catch(console.error)\n /** END USERPOPOUT PATCH*/\n \n /** START USERPROFILE PATCH */\n awaitLogin()\n .then(async () => {\n let UserProfile = await getModule(e => e.default && e.default.displayName === \"UserProfile\")\n const userModule = await getModule(e => e.default && e.default.getCurrentUser)\n const render1 = new UserProfile.default({\n user: userModule.default.getCurrentUser()\n }).render()\n const render2 = new render1.type(render1.props).render()\n const render3 = render2.type.render(render2.props, null)\n const render4 = new render3.type(render3.props).render()\n const UserProfileComponent = render4.type\n if(!UserProfileComponent)throw new Error(`Couldn't find the UserProfileComponent component.`)\n \n const render = UserProfileComponent.prototype.render\n UserProfileComponent.prototype.render = function(){\n const returnValue = render.call(this, ...arguments)\n console.log(returnValue)\n try{\n console.log(returnValue)\n returnValue.props.children.props[\"data-user-id\"] = this.props.user.id\n }catch(e){\n console.error(e)\n }\n return returnValue\n }\n }).catch(console.error)\n /** END USERPROFILE PATCH */\n\n /** START WEBHOOK PATCH */\n/*\n let usedWebhooks = {}\n\n getModule(e => e && e.Request && e.Request.prototype && e.Request.prototype.end)\n .then(RequestModule => {\n const end = RequestModule.Request.prototype.end\n RequestModule.Request.prototype.end = function(){\n if(this.url.endsWith(\"/messages\") && /\\/channels\\/\\d+\\/messages/g.test(this.url) && this.method === \"POST\"){ // sending message\n let channelId = this.url.split(\"/channels/\")[1].split(\"/messages\")[0]\n \n if(usedWebhooks[channelId]){ // webhook is availlable\n let webhook = usedWebhooks[channelId]\n let url = `/webhooks/${webhook.id}/${webhook.token}?wait=true`\n this.url = url\n }\n }\n\n return end.call(this, ...arguments)\n }\n })\n getModule(e => e.default && e.default.displayName === \"Webhook\")\n .then(webhookComponent => {\n const renderEdit = webhookComponent.default.prototype.renderEdit\n webhookComponent.default.prototype.renderEdit = function(){\n const webhook = this.props.webhook\n let returnValue = renderEdit.call(this, ...arguments)\n returnValue.props.children = [returnValue.props.children]\n let message = usedWebhooks[webhook.channel_id] && usedWebhooks[webhook.channel_id].id === webhook.id ? \"Stop talking with this webhook\" : \"Talk with this webhook\"\n\n returnValue.props.children.push(React.createElement(window.Lightcord.Api.Components.inputs.Button, {color: \"green\", wrapper: false, onClick(){\n if(usedWebhooks[webhook.channel_id] && usedWebhooks[webhook.channel_id].id === webhook.id){\n delete usedWebhooks[webhook.channel_id]\n }else{\n usedWebhooks[webhook.channel_id] = {\n id: webhook.id,\n token: webhook.token\n }\n }\n webhookPanels.forEach(e => e())\n }}, message))\n\n return returnValue\n }\n })\n\n let webhookPanels = []\n let getComp = (comp) => {\n class SettingsWebhooks extends React.PureComponent {\n constructor(props){\n super(props)\n }\n\n componentWillMount(){\n this.id = uuid()\n this.component = new comp(this.props)\n let func = () => {\n this.component.forceUpdate()\n }\n func.id = this.id\n webhookPanels.push(func)\n }\n\n componentWillUnmount(){\n this.component = null\n webhookPanels = webhookPanels.filter(e => e.id !== this.id)\n }\n\n render(){\n return this.component.render()\n }\n\n static displayName = \"SettingsWebhooks\"\n }\n\n return SettingsWebhooks\n }\n getModule(e => e.default && e.default.displayName === \"FluxContainer(SettingsWebhooks)\")\n .then(webhooksComponents => {\n let comp = webhooksComponents.default\n\n webhooksComponents.default = getComp(comp)\n\n WebpackLoader.find(e => e.default && e.default.displayName === \"FluxContainer(FluxContainer(SettingsWebhooks))\")\n .forEach(mod => {\n mod.default = getComp(mod.default)\n })\n })*/\n /** END WEBHOOK PATCH */\n }\n\n // TODO: Add in app-notifications / confirmations.\n /** START IN-APP NOTIFICATIONS */\n //getModule(e => true)\n /** END IN-APP NOTIFICATIONS */\n}\n\nfunction getModule(filter: (mod:any) => boolean):Promise<any>{\n return new Promise((resolve) => {\n window.Lightcord.Api.ensureExported(filter)\n .then(resolve)\n .catch(err => {\n console.error(\"[LIGHTCORD]\", err, filter)\n })\n })\n}\n\nlet hasCompletedLogin = false\nlet loginPromise:Promise<void>\nlet AuthenticationStore = dangerousBDModules.get(e => e.default && e.default.isAuthenticated)\nAuthenticationStore = AuthenticationStore[0] && AuthenticationStore[0].default\nfunction awaitLogin():Promise<void>{\n if(AuthenticationStore && AuthenticationStore.isAuthenticated())return Promise.resolve()\n if(hasCompletedLogin)return Promise.resolve()\n if(loginPromise)return loginPromise\n \n return loginPromise = new Promise((resolve) => {\n let isResolved = false\n window.Lightcord.DiscordModules.dispatcher.subscribe(\"CONNECTION_OPEN\", (ev) => {\n if(isResolved)return\n hasCompletedLogin = true\n resolve()\n isResolved = true\n })\n })\n}\nwindow.Lightcord.DiscordModules.dispatcher.subscribe(\"LOGOUT\", (ev) => {\n hasCompletedLogin = false\n loginPromise = undefined\n})","export default function unfreeze<T extends any>(o: Readonly<T>):T{\r\n var oo = undefined;\r\n if (o instanceof Array) {\r\n oo = [];\r\n var clone = function(v) {\r\n oo.push(v)\r\n };\r\n o.forEach(clone);\r\n } else if (o instanceof String) {\r\n oo = new String(o).toString();\r\n } else if (typeof o == 'object') {\r\n oo = {};\r\n for (var property in o) {\r\n oo[property] = o[property];\r\n }\r\n }\r\n return oo;\r\n}\r\ndeclare global {\r\n interface ObjectConstructor {\r\n unfreeze: <T extends any>(obj: Readonly<T>) => T\r\n }\r\n}\r\nObject.unfreeze = unfreeze","let cache = new Map()\n\nexport function LazyLoad<T>(getObject: () => T):T{\n if(cache.has(getObject))return cache.get(getObject)\n\n let mdl = null\n let setModule = () => {\n if(mdl)return\n mdl = getObject()\n }\n let handler:ProxyHandler<{}> = {\n get(target, prop){\n setModule()\n return mdl[prop]\n },\n set(target, prop, value){\n setModule()\n mdl[prop] = value\n return true\n },\n apply(target, thisArg, args){\n setModule()\n mdl.apply(this, args)\n },\n construct(target, args){\n setModule()\n const prototype = Object.create(mdl.prototype)\n handler.apply(target, prototype, args)\n return prototype\n },\n deleteProperty(target, prop){\n setModule()\n if(!(prop in mdl))return false\n delete mdl[prop]\n return true\n },\n enumerate(target){\n setModule()\n return Object.keys(mdl)\n },\n ownKeys(target) {\n setModule()\n return Object.keys(mdl)\n },\n has(target, prop){\n setModule()\n return prop in mdl\n },\n defineProperty(target, prop, attributes){\n setModule()\n return Object.defineProperty(mdl, prop, attributes)\n },\n getOwnPropertyDescriptor(target, prop){\n setModule()\n return Object.getOwnPropertyDescriptor(mdl, prop)\n },\n getPrototypeOf(target){\n setModule()\n return Object.getPrototypeOf(mdl)\n },\n setPrototypeOf(target, proto){\n setModule()\n try{\n Object.setPrototypeOf(mdl, proto)\n return true\n }catch(e){\n return false\n }\n },\n isExtensible(target){\n setModule()\n return Object.isExtensible(mdl)\n },\n preventExtensions(target){\n setModule()\n Object.preventExtensions(mdl)\n return true\n }\n }\n const proxy = new Proxy({}, handler)\n\n cache.set(getObject, proxy)\n return proxy as T\n}","import * as electron from \"electron\"\r\n\r\nexport default new class Settings {\r\n /**\r\n * Save the settings.\r\n * Please do it after a settings.set, or else the value will not be saved.\r\n */\r\n save():void{\r\n return electron.ipcRenderer.sendSync(\"LIGHTCORD_SAVE_SETTINGS\")\r\n }\r\n\r\n /**\r\n * Return an object containing all settings.\r\n */\r\n get settings():any{\r\n return electron.ipcRenderer.sendSync(\"LIGHTCORD_GET_SETTINGS\")\r\n }\r\n\r\n /**\r\n * Get a single value from the settings.\r\n * @param key The value key\r\n * @param defaultValue If the data isn't present, a default value\r\n * @example ```js\r\n * const isTabs = Lightcord.Api.settings.get(\"isTabs\", false)\r\n * ```\r\n */\r\n get<Value>(key:string, defaultValue:Value):Value{\r\n const settings = this.settings\r\n if(!(key in settings)){\r\n return defaultValue\r\n }\r\n return settings[key]\r\n }\r\n\r\n /**\r\n * Set a value in the settings.\r\n * @param key The key\r\n * @param value The value\r\n */\r\n set<Value>(key:string, value:Value):void{\r\n return electron.ipcRenderer.sendSync(\"LIGHTCORD_SET_SETTING\", key, value)\r\n }\r\n\r\n /**\r\n * Delete a value in the settings\r\n * @param key The key\r\n */\r\n delete(key:string):void{\r\n return electron.ipcRenderer.sendSync(\"LIGHTCORD_DELETE_SETTING\", key)\r\n }\r\n\r\n /**\r\n * Check if a value is present in the settings.\r\n * @param key The key\r\n */\r\n exists(key:string):boolean{\r\n return key in this.settings\r\n }\r\n}","module.exports = require(\"electron\");","import addDays from '../addDays/index.js';\nimport addMonths from '../addMonths/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n *\n * | Key | Description |\n * |----------------|------------------------------------|\n * | years | Amount of years to be added |\n * | months | Amount of months to be added |\n * | weeks | Amount of weeks to be added |\n * | days | Amount of days to be added |\n * | hours | Amount of hours to be added |\n * | minutes | Amount of minutes to be added |\n * | seconds | Amount of seconds to be added |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * var result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\n\nexport default function add(dirtyDate, duration) {\n requiredArgs(2, arguments);\n if (!duration || typeof duration !== 'object') return new Date(NaN);\n var years = 'years' in duration ? toInteger(duration.years) : 0;\n var months = 'months' in duration ? toInteger(duration.months) : 0;\n var weeks = 'weeks' in duration ? toInteger(duration.weeks) : 0;\n var days = 'days' in duration ? toInteger(duration.days) : 0;\n var hours = 'hours' in duration ? toInteger(duration.hours) : 0;\n var minutes = 'minutes' in duration ? toInteger(duration.minutes) : 0;\n var seconds = 'seconds' in duration ? toInteger(duration.seconds) : 0; // Add years and months\n\n var date = toDate(dirtyDate);\n var dateWithMonths = months || years ? addMonths(date, months + years * 12) : date; // Add weeks and days\n\n var dateWithDays = days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths; // Add days, hours, minutes and seconds\n\n var minutesToAdd = minutes + hours * 60;\n var secondsToAdd = seconds + minutesToAdd * 60;\n var msToAdd = secondsToAdd * 1000;\n var finalDate = new Date(dateWithDays.getTime() + msToAdd);\n return finalDate;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isWeekend\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date falls on a weekend\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * var result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\n\nexport default function isWeekend(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day === 0 || day === 6;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSunday\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\n\nexport default function isSunday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 0;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSaturday\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\n\nexport default function isSaturday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 6;\n}","import isWeekend from '../isWeekend/index.js';\nimport toDate from '../toDate/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nimport isSunday from '../isSunday/index.js';\nimport isSaturday from '../isSaturday/index.js';\n/**\n * @name addBusinessDays\n * @category Day Helpers\n * @summary Add the specified number of business days (mon - fri) to the given date.\n *\n * @description\n * Add the specified number of business days (mon - fri) to the given date, ignoring weekends.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of business days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the business days added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 10 business days to 1 September 2014:\n * var result = addBusinessDays(new Date(2014, 8, 1), 10)\n * //=> Mon Sep 15 2014 00:00:00 (skipped weekend days)\n */\n\nexport default function addBusinessDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var startedOnWeekend = isWeekend(date);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) return new Date(NaN);\n var hours = date.getHours();\n var sign = amount < 0 ? -1 : 1;\n var fullWeeks = toInteger(amount / 5);\n date.setDate(date.getDate() + fullWeeks * 7); // Get remaining days not part of a full week\n\n var restDays = Math.abs(amount % 5); // Loops over remaining days\n\n while (restDays > 0) {\n date.setDate(date.getDate() + sign);\n if (!isWeekend(date)) restDays -= 1;\n } // If the date is a weekend day and we reduce a dividable of\n // 5 from it, we land on a weekend date.\n // To counter this, we add days accordingly to land on the next business day\n\n\n if (startedOnWeekend && isWeekend(date) && amount !== 0) {\n // If we're reducing days, we want to add days until we land on a weekday\n // If we're adding days we want to reduce days until we land on a weekday\n if (isSaturday(date)) date.setDate(date.getDate() + (sign < 0 ? 2 : -1));\n if (isSunday(date)) date.setDate(date.getDate() + (sign < 0 ? 1 : -2));\n } // Restore hours to avoid DST lag\n\n\n date.setHours(hours);\n return date;\n}","import startOfWeek from '../startOfWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import toDate from '../toDate/index.js';\nimport startOfISOWeek from '../startOfISOWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getISOYear` to `getISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * var result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\n\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getISOWeekYear from '../getISOWeekYear/index.js';\nimport startOfISOWeek from '../startOfISOWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * var result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport startOfISOWeekYear from '../startOfISOWeekYear/index.js';\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `setISOYear` to `setISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeekYear - the ISO week-numbering year of the new date\n * @returns {Date} the new date with the ISO week-numbering year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * var result = setISOWeekYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\n\nexport default function setISOWeekYear(dirtyDate, dirtyISOWeekYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeekYear = toInteger(dirtyISOWeekYear);\n var diff = differenceInCalendarDays(date, startOfISOWeekYear(date));\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(isoWeekYear, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n date = startOfISOWeekYear(fourthOfJanuary);\n date.setDate(date.getDate() + diff);\n return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport getISOWeekYear from '../getISOWeekYear/index.js';\nimport setISOWeekYear from '../setISOWeekYear/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `addISOYears` to `addISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the ISO week-numbering years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * var result = addISOWeekYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\n\nexport default function addISOWeekYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return setISOWeekYear(dirtyDate, getISOWeekYear(dirtyDate) + amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMonths from '../addMonths/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * var result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\n\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMilliseconds from '../addMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * var result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\n\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name areIntervalsOverlapping\n * @category Interval Helpers\n * @summary Is the given time interval overlapping with another time interval?\n *\n * @description\n * Is the given time interval overlapping with another time interval? Adjacent intervals do not count as overlapping.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `areRangesOverlapping` to `areIntervalsOverlapping`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20),\n * new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n *\n * // v2.0.0 onward\n *\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * ```\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/types/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/types/Interval}\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.inclusive=false] - whether the comparison is inclusive or not\n * @returns {Boolean} whether the time intervals are overlapping\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> false\n *\n * @example\n * // For adjacent time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 30) }\n * )\n * //=> false\n *\n * @example\n * // Using the inclusive option:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) }\n * )\n * //=> false\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) },\n * { inclusive: true }\n * )\n * //=> true\n */\n\nexport default function areIntervalsOverlapping(dirtyIntervalLeft, dirtyIntervalRight) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n requiredArgs(2, arguments);\n var intervalLeft = dirtyIntervalLeft || {};\n var intervalRight = dirtyIntervalRight || {};\n var leftStartTime = toDate(intervalLeft.start).getTime();\n var leftEndTime = toDate(intervalLeft.end).getTime();\n var rightStartTime = toDate(intervalRight.start).getTime();\n var rightEndTime = toDate(intervalRight.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n\n if (options.inclusive) {\n return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime;\n }\n\n return leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name closestIndexTo\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestIndexTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date|Number} dateToCompare - the date to compare with\n * @param {Date[]|Number[]} datesArray - the array to search\n * @returns {Number} an index of the date closest to the given date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * var dateToCompare = new Date(2015, 8, 6)\n * var datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * var result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\n\nexport default function closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n\n if (isNaN(dateToCompare)) {\n return NaN;\n }\n\n var timeToCompare = dateToCompare.getTime();\n var datesArray; // `dirtyDatesArray` is undefined or null\n\n if (dirtyDatesArray == null) {\n datesArray = []; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate, index) {\n var currentDate = toDate(dirtyDate);\n\n if (isNaN(currentDate)) {\n result = NaN;\n minDistance = NaN;\n return;\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n\n if (result == null || distance < minDistance) {\n result = index;\n minDistance = distance;\n }\n });\n return result;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name closestTo\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date|Number} dateToCompare - the date to compare with\n * @param {Date[]|Number[]} datesArray - the array to search\n * @returns {Date} the date from the array closest to the given date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * var dateToCompare = new Date(2015, 8, 6)\n * var result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\n\nexport default function closestTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n\n if (isNaN(dateToCompare)) {\n return new Date(NaN);\n }\n\n var timeToCompare = dateToCompare.getTime();\n var datesArray; // `dirtyDatesArray` is undefined or null\n\n if (dirtyDatesArray == null) {\n datesArray = []; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (isNaN(currentDate)) {\n result = new Date(NaN);\n minDistance = NaN;\n return;\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n\n if (result == null || distance < minDistance) {\n result = currentDate;\n minDistance = distance;\n }\n });\n return result;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name compareDesc\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * var result = compareDesc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\n\nexport default function compareDesc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff > 0) {\n return -1;\n } else if (diff < 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import isValid from '../isValid/index.js';\nimport isWeekend from '../isWeekend/index.js';\nimport toDate from '../toDate/index.js';\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js';\nimport addDays from '../addDays/index.js';\nimport isSameDay from '../isSameDay/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInBusinessDays\n * @category Day Helpers\n * @summary Get the number of business days between the given dates.\n *\n * @description\n * Get the number of business day periods between the given dates.\n * Business days being days that arent in the weekend.\n * Like `differenceInCalendarDays`, the function removes the times from\n * the dates before calculating the difference.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of business days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many business days are between\n * // 10 January 2014 and 20 July 2014?\n * var result = differenceInBusinessDays(\n * new Date(2014, 6, 20),\n * new Date(2014, 0, 10)\n * )\n * //=> 136\n */\n\nexport default function differenceInBusinessDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n if (!isValid(dateLeft) || !isValid(dateRight)) return new Date(NaN);\n var calendarDifference = differenceInCalendarDays(dateLeft, dateRight);\n var sign = calendarDifference < 0 ? -1 : 1;\n var weeks = toInteger(calendarDifference / 7);\n var result = weeks * 5;\n dateRight = addDays(dateRight, weeks * 7); // the loop below will run at most 6 times to account for the remaining days that don't makeup a full week\n\n while (!isSameDay(dateLeft, dateRight)) {\n // sign is used to account for both negative and positive differences\n result += isWeekend(dateRight) ? 0 : sign;\n dateRight = addDays(dateRight, sign);\n }\n\n return result === 0 ? 0 : result;\n}","import getISOWeekYear from '../getISOWeekYear/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInCalendarISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `differenceInCalendarISOYears` to `differenceInCalendarISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * var result = differenceInCalendarISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarISOWeekYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n return getISOWeekYear(dirtyDateLeft) - getISOWeekYear(dirtyDateRight);\n}","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport startOfISOWeek from '../startOfISOWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name differenceInCalendarISOWeeks\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * var result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\n\nexport default function differenceInCalendarISOWeeks(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft);\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight);\n var timestampLeft = startOfISOWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfISOWeekLeft);\n var timestampRight = startOfISOWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfISOWeekRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import getQuarter from '../getQuarter/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInCalendarQuarters\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\n\nexport default function differenceInCalendarQuarters(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight);\n return yearDiff * 4 + quarterDiff;\n}","import toDate from '../toDate/index.js';\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js'; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\n\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * var result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\n\n\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference); // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastDayNotFull = compareLocalAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - isLastDayNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\nexport default function differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getTime() - dateRight.getTime();\n}","import differenceInMilliseconds from '../differenceInMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * var result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\n\nexport default function differenceInHours(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_HOUR;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addISOWeekYears from '../addISOWeekYears/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `subISOYears` to `subISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * var result = subISOWeekYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\n\nexport default function subISOWeekYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addISOWeekYears(dirtyDate, -amount);\n}","import toDate from '../toDate/index.js';\nimport differenceInCalendarISOWeekYears from '../differenceInCalendarISOWeekYears/index.js';\nimport compareAsc from '../compareAsc/index.js';\nimport subISOWeekYears from '../subISOWeekYears/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `differenceInISOYears` to `differenceInISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * var result = differenceInISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\n\nexport default function differenceInISOWeekYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarISOWeekYears(dateLeft, dateRight));\n dateLeft = subISOWeekYears(dateLeft, sign * difference); // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastISOWeekYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - isLastISOWeekYearNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import differenceInMilliseconds from '../differenceInMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * var result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are from 10:01:59 to 10:00:00\n * var result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\n\nexport default function differenceInMinutes(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_MINUTE;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}","import toDate from '../toDate/index.js';\nimport differenceInCalendarMonths from '../differenceInCalendarMonths/index.js';\nimport compareAsc from '../compareAsc/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\n\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference); // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - isLastMonthNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import differenceInMonths from '../differenceInMonths/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of full quarters between the given dates.\n *\n * @description\n * Get the number of full quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\n\nexport default function differenceInQuarters(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight) / 3;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}","import differenceInMilliseconds from '../differenceInMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\n\nexport default function differenceInSeconds(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}","import differenceInDays from '../differenceInDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * var result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\n\nexport default function differenceInWeeks(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInDays(dirtyDateLeft, dirtyDateRight) / 7;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}","import toDate from '../toDate/index.js';\nimport differenceInCalendarYears from '../differenceInCalendarYears/index.js';\nimport compareAsc from '../compareAsc/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\n\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight)); // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n\n dateLeft.setFullYear('1584');\n dateRight.setFullYear('1584'); // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - isLastYearNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `eachDay` to `eachDayOfInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * eachDay(new Date(2014, 0, 10), new Date(2014, 0, 20))\n *\n * // v2.0.0 onward\n *\n * eachDayOfInterval(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) }\n * )\n * ```\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * var result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\n\nexport default function eachDayOfInterval(dirtyInterval, options) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n var step = options && 'step' in options ? Number(options.step) : 1;\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setDate(currentDate.getDate() + step);\n currentDate.setHours(0, 0, 0, 0);\n }\n\n return dates;\n}","import addHours from '../addHours/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name eachHourOfInterval\n * @category Interval Helpers\n * @summary Return the array of hours within the specified time interval.\n *\n * @description\n * Return the array of hours within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of hours from the hour of the interval start to the hour of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each hour between 6 October 2014, 12:00 and 10 October 2014, 15:00\n * var result = eachHourOfInterval({\n * start: new Date(2014, 9, 6, 12),\n * end: new Date(2014, 9, 6, 15)\n * })\n * //=> [\n * // Mon Oct 06 2014 12:00:00,\n * // Mon Oct 06 2014 13:00:00,\n * // Mon Oct 06 2014 14:00:00,\n * // Mon Oct 06 2014 15:00:00\n * // ]\n */\n\nexport default function eachHourOfInterval(dirtyInterval, options) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var startTime = startDate.getTime();\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setMinutes(0, 0, 0);\n var step = options && 'step' in options ? Number(options.step) : 1;\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate = addHours(currentDate, step);\n }\n\n return dates;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name eachMonthOfInterval\n * @category Interval Helpers\n * @summary Return the array of months within the specified time interval.\n *\n * @description\n * Return the array of months within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @returns {Date[]} the array with starts of months from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each month between 6 February 2014 and 10 August 2014:\n * var result = eachMonthOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10)\n * })\n * //=> [\n * // Sat Feb 01 2014 00:00:00,\n * // Sat Mar 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Thu May 01 2014 00:00:00,\n * // Sun Jun 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // Fri Aug 01 2014 00:00:00\n * // ]\n */\n\nexport default function eachMonthOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setDate(1);\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setMonth(currentDate.getMonth() + 1);\n }\n\n return dates;\n}","import addQuarters from '../addQuarters/index.js';\nimport startOfQuarter from '../startOfQuarter/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name eachQuarterOfInterval\n * @category Interval Helpers\n * @summary Return the array of quarters within the specified time interval.\n *\n * @description\n * Return the array of quarters within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @returns {Date[]} the array with starts of quarters from the quarter of the interval start to the quarter of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each quarter within interval 6 February 2014 - 10 August 2014:\n * var result = eachQuarterOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10)\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // ]\n */\n\nexport default function eachQuarterOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var startDateQuarter = startOfQuarter(startDate);\n var endDateQuarter = startOfQuarter(endDate);\n endTime = endDateQuarter.getTime();\n var quarters = [];\n var currentQuarter = startDateQuarter;\n\n while (currentQuarter.getTime() <= endTime) {\n quarters.push(toDate(currentQuarter));\n currentQuarter = addQuarters(currentQuarter, 1);\n }\n\n return quarters;\n}","import addWeeks from '../addWeeks/index.js';\nimport startOfWeek from '../startOfWeek/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name eachWeekOfInterval\n * @category Interval Helpers\n * @summary Return the array of weeks within the specified time interval.\n *\n * @description\n * Return the array of weeks within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each week within interval 6 October 2014 - 23 November 2014:\n * var result = eachWeekOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 10, 23)\n * })\n * //=> [\n * // Sun Oct 05 2014 00:00:00,\n * // Sun Oct 12 2014 00:00:00,\n * // Sun Oct 19 2014 00:00:00,\n * // Sun Oct 26 2014 00:00:00,\n * // Sun Nov 02 2014 00:00:00,\n * // Sun Nov 09 2014 00:00:00,\n * // Sun Nov 16 2014 00:00:00,\n * // Sun Nov 23 2014 00:00:00\n * // ]\n */\n\nexport default function eachWeekOfInterval(dirtyInterval, options) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var startDateWeek = startOfWeek(startDate, options);\n var endDateWeek = startOfWeek(endDate, options); // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n\n startDateWeek.setHours(15);\n endDateWeek.setHours(15);\n endTime = endDateWeek.getTime();\n var weeks = [];\n var currentWeek = startDateWeek;\n\n while (currentWeek.getTime() <= endTime) {\n currentWeek.setHours(0);\n weeks.push(toDate(currentWeek));\n currentWeek = addWeeks(currentWeek, 1);\n currentWeek.setHours(15);\n }\n\n return weeks;\n}","import eachDayOfInterval from '../eachDayOfInterval/index.js';\nimport isSunday from '../isSunday/index.js';\nimport isWeekend from '../isWeekend/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name eachWeekendOfInterval\n * @category Interval Helpers\n * @summary List all the Saturdays and Sundays in the given date interval.\n *\n * @description\n * Get all the Saturdays and Sundays in the given date interval.\n *\n * @param {Interval} interval - the given interval. See [Interval]{@link docs/types/Interval}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * var result = eachWeekendOfInterval({\n * start: new Date(2018, 8, 17),\n * end: new Date(2018, 8, 30)\n * })\n * //=> [\n * // Sat Sep 22 2018 00:00:00,\n * // Sun Sep 23 2018 00:00:00,\n * // Sat Sep 29 2018 00:00:00,\n * // Sun Sep 30 2018 00:00:00\n * // ]\n */\n\nexport default function eachWeekendOfInterval(interval) {\n requiredArgs(1, arguments);\n var dateInterval = eachDayOfInterval(interval);\n var weekends = [];\n var index = 0;\n\n while (index < dateInterval.length) {\n var date = dateInterval[index++];\n\n if (isWeekend(date)) {\n weekends.push(date);\n if (isSunday(date)) index = index + 5;\n }\n }\n\n return weekends;\n}","import eachWeekendOfInterval from '../eachWeekendOfInterval/index.js';\nimport startOfMonth from '../startOfMonth/index.js';\nimport endOfMonth from '../endOfMonth/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name eachWeekendOfMonth\n * @category Month Helpers\n * @summary List all the Saturdays and Sundays in the given month.\n *\n * @description\n * Get all the Saturdays and Sundays in the given month.\n *\n * @param {Date|Number} date - the given month\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the given month\n * var result = eachWeekendOfMonth(new Date(2022, 1, 1))\n * //=> [\n * // Sat Feb 05 2022 00:00:00,\n * // Sun Feb 06 2022 00:00:00,\n * // Sat Feb 12 2022 00:00:00,\n * // Sun Feb 13 2022 00:00:00,\n * // Sat Feb 19 2022 00:00:00,\n * // Sun Feb 20 2022 00:00:00,\n * // Sat Feb 26 2022 00:00:00,\n * // Sun Feb 27 2022 00:00:00\n * // ]\n */\n\nexport default function eachWeekendOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var startDate = startOfMonth(dirtyDate);\n if (isNaN(startDate)) throw new RangeError('The passed date is invalid');\n var endDate = endOfMonth(dirtyDate);\n return eachWeekendOfInterval({\n start: startDate,\n end: endDate\n });\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\n\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import eachWeekendOfInterval from '../eachWeekendOfInterval/index.js';\nimport startOfYear from '../startOfYear/index.js';\nimport endOfYear from '../endOfYear/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name eachWeekendOfYear\n * @category Year Helpers\n * @summary List all the Saturdays and Sundays in the year.\n *\n * @description\n * Get all the Saturdays and Sundays in the year.\n *\n * @param {Date|Number} date - the given year\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the year\n * var result = eachWeekendOfYear(new Date(2020, 1, 1))\n * //=> [\n * // Sat Jan 03 2020 00:00:00,\n * // Sun Jan 04 2020 00:00:00,\n * // ...\n * // Sun Dec 27 2020 00:00:00\n * // ]\n * ]\n */\n\nexport default function eachWeekendOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var startDate = startOfYear(dirtyDate);\n if (isNaN(startDate)) throw new RangeError('The passed date is invalid');\n var endDate = endOfYear(dirtyDate);\n return eachWeekendOfInterval({\n start: startDate,\n end: endDate\n });\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name eachYearOfInterval\n * @category Interval Helpers\n * @summary Return the array of yearly timestamps within the specified time interval.\n *\n * @description\n * Return the array of yearly timestamps within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @returns {Date[]} the array with starts of yearly timestamps from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each year between 6 February 2014 and 10 August 2017:\n * var result = eachYearOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2017, 7, 10)\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Thu Jan 01 2015 00:00:00,\n * // Fri Jan 01 2016 00:00:00,\n * // Sun Jan 01 2017 00:00:00\n * // ]\n */\n\nexport default function eachYearOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setMonth(0, 1);\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setFullYear(currentDate.getFullYear() + 1);\n }\n\n return dates;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name endOfDecade\n * @category Decade Helpers\n * @summary Return the end of a decade for the given date.\n *\n * @description\n * Return the end of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a decade\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a decade for 12 May 1984 00:00:00:\n * var result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))\n * //=> Dec 31 1989 23:59:59.999\n */\n\nexport default function endOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = 9 + Math.floor(year / 10) * 10;\n date.setFullYear(decade, 11, 31);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * var result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\n\nexport default function endOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(59, 59, 999);\n return date;\n}","import endOfWeek from '../endOfWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\n\nexport default function endOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return endOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from '../getISOWeekYear/index.js';\nimport startOfISOWeek from '../startOfISOWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name endOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `endOfISOYear` to `endOfISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * var result = endOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\n\nexport default function endOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear);\n date.setMilliseconds(date.getMilliseconds() - 1);\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * var result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\n\nexport default function endOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(59, 999);\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * var result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * var result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\n\nexport default function endOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(999);\n return date;\n}","import endOfDay from '../endOfDay/index.js';\n/**\n * @name endOfToday\n * @category Day Helpers\n * @summary Return the end of today.\n * @pure false\n *\n * @description\n * Return the end of today.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the end of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfToday()\n * //=> Mon Oct 6 2014 23:59:59.999\n */\n\nexport default function endOfToday() {\n return endOfDay(Date.now());\n}","/**\n * @name endOfTomorrow\n * @category Day Helpers\n * @summary Return the end of tomorrow.\n * @pure false\n *\n * @description\n * Return the end of tomorrow.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the end of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfTomorrow()\n * //=> Tue Oct 7 2014 23:59:59.999\n */\nexport default function endOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}","/**\n * @name endOfYesterday\n * @category Day Helpers\n * @summary Return the end of yesterday.\n * @pure false\n *\n * @description\n * Return the end of yesterday.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the end of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfYesterday()\n * //=> Sun Oct 5 2014 23:59:59.999\n */\nexport default function endOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import assign from '../assign/index.js';\nexport default function cloneObject(dirtyObject) {\n return assign({}, dirtyObject);\n}","import compareAsc from '../compareAsc/index.js';\nimport differenceInMonths from '../differenceInMonths/index.js';\nimport differenceInSeconds from '../differenceInSeconds/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport toDate from '../toDate/index.js';\nimport cloneObject from '../_lib/cloneObject/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWords ` to `formatDistance`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWords(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 11, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n *\n * // v2.0.0 onward\n *\n * formatDistance(\n * new Date(1986, 3, 4, 11, 32, 0),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months; // 0 up to 2 mins\n\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', null, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n } // 2 mins up to 0.75 hrs\n\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions); // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions); // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions); // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions); // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions); // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n\n months = differenceInMonths(dateRight, dateLeft); // 2 months up to 12 months\n\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions); // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12); // N years up to 1 years 3 months\n\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions); // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions); // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport compareAsc from '../compareAsc/index.js';\nimport toDate from '../toDate/index.js';\nimport differenceInSeconds from '../differenceInSeconds/index.js';\nimport cloneObject from '../_lib/cloneObject/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_YEAR = 525600;\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsStrict` to `formatDistanceStrict`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(2015, 0, 2),\n * new Date(2014, 6, 2)\n * ) //=> '6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * ) //=> '6 months'\n * ```\n *\n * - `partialMethod` option is renamed to `roundingMethod`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { partialMethod: 'ceil' }\n * ) //=> '2 minutes'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { roundingMethod: 'ceil' }\n * ) //=> '2 minutes'\n * ```\n *\n * - If `roundingMethod` is not specified, it now defaults to `round` instead of `floor`.\n *\n * - `unit` option now accepts one of the strings:\n * 'second', 'minute', 'hour', 'day', 'month' or 'year' instead of 's', 'm', 'h', 'd', 'M' or 'Y'\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { unit: 'm' }\n * )\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { unit: 'minute' }\n * )\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistanceStrict(new Date(2014, 6, 2), new Date(2015, 0, 2))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * var result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistanceStrict(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * var result = formatDistanceStrict(new Date(2016, 0, 1), new Date(2015, 0, 1), {\n * unit: 'minute'\n * })\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2015\n * // to 28 January 2015, in months, rounded up?\n * var result = formatDistanceStrict(new Date(2015, 0, 28), new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistanceStrict(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceStrict(dirtyDate, dirtyBaseDate, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var roundingMethod = options.roundingMethod == null ? 'round' : String(options.roundingMethod);\n var roundingMethodFn;\n\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor;\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil;\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round;\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\");\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = roundingMethodFn((seconds - offsetInSeconds) / 60);\n var unit;\n\n if (options.unit == null) {\n if (minutes < 1) {\n unit = 'second';\n } else if (minutes < 60) {\n unit = 'minute';\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour';\n } else if (minutes < MINUTES_IN_MONTH) {\n unit = 'day';\n } else if (minutes < MINUTES_IN_YEAR) {\n unit = 'month';\n } else {\n unit = 'year';\n }\n } else {\n unit = String(options.unit);\n } // 0 up to 60 seconds\n\n\n if (unit === 'second') {\n return locale.formatDistance('xSeconds', seconds, localizeOptions); // 1 up to 60 mins\n } else if (unit === 'minute') {\n return locale.formatDistance('xMinutes', minutes, localizeOptions); // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60);\n return locale.formatDistance('xHours', hours, localizeOptions); // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions); // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', months, localizeOptions); // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(minutes / MINUTES_IN_YEAR);\n return locale.formatDistance('xYears', years, localizeOptions);\n }\n\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\");\n}","import distanceInWords from '../formatDistance/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsToNow ` to `formatDistanceToNow`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n * ```\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistanceToNow(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), dirtyOptions);\n}","import distanceInStrictWords from '../formatDistanceStrict/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name formatDistanceToNowStrict\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = formatDistanceToNowStrict(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = formatDistanceToNowStrict(\n * new Date(2015, 0, 1, 0, 0, 15)\n * )\n * //=> '20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in 1 year'\n *\n * @example\n * // If today is 28 January 2015,\n * // what is the distance to 1 January 2015, in months, rounded up??\n * var result = formatDistanceToNowStrict(new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNowStrict(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceToNowStrict(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return distanceInStrictWords(dirtyDate, Date.now(), dirtyOptions);\n}","import defaultLocale from '../locale/en-US/index.js';\nvar defaultFormat = ['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds'];\n/**\n * @name formatDuration\n * @category Common Helpers\n * @summary Formats a duration in human-readable format\n *\n * @description\n * Return human-readable duration string i.e. \"9 months 2 days\"\n *\n * @param {Duration} duration - the duration to format\n * @param {Object} [options] - an object with options.\n\n * @param {string[]} [options.format=['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds']] - the array of units to format\n * @param {boolean} [options.zero=false] - should be zeros be included in the output?\n * @param {string} [options.delimiter=' '] - delimiter string\n * @returns {string} the formatted date string\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Format full duration\n * formatDuration({\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> '2 years 9 months 1 week 7 days 5 hours 9 minutes 30 seconds\n *\n * @example\n * // Format partial duration\n * formatDuration({ months: 9, days: 2 })\n * //=> '9 months 2 days'\n *\n * @example\n * // Customize the format\n * formatDuration(\n * {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * },\n * { format: ['months', 'weeks'] }\n * ) === '9 months 1 week'\n *\n * @example\n * // Customize the zeros presence\n * formatDuration({ years: 0, months: 9 })\n * //=> '9 months'\n * formatDuration({ years: 0, months: 9 }, null, { zero: true })\n * //=> '0 years 9 months'\n *\n * @example\n * // Customize the delimiter\n * formatDuration({ years: 2, months: 9, weeks: 3 }, { delimiter: ', ' })\n * //=> '2 years, 9 months, 3 weeks'\n */\n\nexport default function formatDuration(duration) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n\n var format = options.format || defaultFormat;\n var locale = options.locale || defaultLocale;\n var zero = options.zero || false;\n var delimiter = options.delimiter || ' ';\n var result = format.reduce(function (acc, unit) {\n var token = \"x\".concat(unit.replace(/(^.)/, function (m) {\n return m.toUpperCase();\n }));\n var addChunk = typeof duration[unit] === 'number' && (zero || duration[unit]);\n return addChunk ? acc.concat(locale.formatDistance(token, duration[unit])) : acc;\n }, []).join(delimiter);\n return result;\n}","import toDate from '../toDate/index.js';\nimport isValid from '../isValid/index.js';\nimport addLeadingZeros from '../_lib/addLeadingZeros/index.js';\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time with time zone, or both.\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.represenation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\n\nexport default function formatISO(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var options = dirtyOptions || {};\n var format = options.format == null ? 'extended' : String(options.format);\n var representation = options.representation == null ? 'complete' : String(options.representation);\n\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n\n var result = '';\n var tzOffset = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : ''; // Representation is either 'date' or 'complete'\n\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4); // yyyyMMdd or yyyy-MM-dd.\n\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n } // Representation is either 'time' or 'complete'\n\n\n if (representation !== 'date') {\n // Add the timezone.\n var offset = originalDate.getTimezoneOffset();\n\n if (offset !== 0) {\n var absoluteOffset = Math.abs(offset);\n var hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2); // If less than 0, the sign is +, because it is ahead of time.\n\n var sign = offset < 0 ? '+' : '-';\n tzOffset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n tzOffset = 'Z';\n }\n\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2); // If there's also date, separate it with time with 'T'\n\n var separator = result === '' ? '' : 'T'; // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n\n var time = [hour, minute, second].join(timeDelimiter); // HHmmss or HH:mm:ss.\n\n result = \"\".concat(result).concat(separator).concat(time).concat(tzOffset);\n }\n\n return result;\n}","import toDate from '../toDate/index.js';\nimport isValid from '../isValid/index.js';\nimport addLeadingZeros from '../_lib/addLeadingZeros/index.js';\n/**\n * @name formatISO9075\n * @category Common Helpers\n * @summary Format the date according to the ISO 9075 standard (https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_get-format).\n *\n * @description\n * Return the formatted date string in ISO 9075 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time, or both.\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.represenation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18 19:00:52'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075, short format:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918 190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format, date only:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format, time only:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52'\n */\n\nexport default function formatISO9075(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var options = dirtyOptions || {};\n var format = options.format == null ? 'extended' : String(options.format);\n var representation = options.representation == null ? 'complete' : String(options.representation);\n\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n\n var result = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : ''; // Representation is either 'date' or 'complete'\n\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4); // yyyyMMdd or yyyy-MM-dd.\n\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n } // Representation is either 'time' or 'complete'\n\n\n if (representation !== 'date') {\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2); // If there's also date, separate it with time with a space\n\n var separator = result === '' ? '' : ' '; // HHmmss or HH:mm:ss.\n\n result = \"\".concat(result).concat(separator).concat(hour).concat(timeDelimiter).concat(minute).concat(timeDelimiter).concat(second);\n }\n\n return result;\n}","import requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name formatISODuration\n * @category Common Helpers\n * @summary Format a duration object according as ISO 8601 duration string\n *\n * @description\n * Format a duration object according to the ISO 8601 duration standard (https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm)\n *\n * @param {Duration} duration - the duration to format\n *\n * @returns {String} The ISO 8601 duration string\n * @throws {TypeError} Requires 1 argument\n * @throws {Error} Argument must be an object\n *\n * @example\n * // Format the given duration as ISO 8601 string\n * formatISODuration({\n * years: 39,\n * months: 2,\n * days: 20,\n * hours: 7,\n * minutes: 5,\n * seconds: 0\n * })\n * //=> 'P39Y2M20DT0H0M0S'\n */\n\nexport default function formatISODuration(duration) {\n requiredArgs(1, arguments);\n if (typeof duration !== 'object') throw new Error('Duration must be an object');\n var _duration$years = duration.years,\n years = _duration$years === void 0 ? 0 : _duration$years,\n _duration$months = duration.months,\n months = _duration$months === void 0 ? 0 : _duration$months,\n _duration$days = duration.days,\n days = _duration$days === void 0 ? 0 : _duration$days,\n _duration$hours = duration.hours,\n hours = _duration$hours === void 0 ? 0 : _duration$hours,\n _duration$minutes = duration.minutes,\n minutes = _duration$minutes === void 0 ? 0 : _duration$minutes,\n _duration$seconds = duration.seconds,\n seconds = _duration$seconds === void 0 ? 0 : _duration$seconds;\n return \"P\".concat(years, \"Y\").concat(months, \"M\").concat(days, \"DT\").concat(hours, \"H\").concat(minutes, \"M\").concat(seconds, \"S\");\n}","import toDate from '../toDate/index.js';\nimport isValid from '../isValid/index.js';\nimport addLeadingZeros from '../_lib/addLeadingZeros/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\n/**\n * @name formatRFC3339\n * @category Common Helpers\n * @summary Format the date according to the ISO 3339 standard (https://tools.ietf.org/html/rfc3339#section-5.6).\n *\n * @description\n * Return the formatted date string in ISO 3339 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3} [options.fractionDigits=0] - number of digits after the decimal point after seconds\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.fractionDigits` must be between 0 and 3\n *\n * @example\n * // Represent 18 September 2019 in ISO 3339 format:\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 3339 format, 2 digits of second fraction:\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52, 234), { fractionDigits: 2 })\n * //=> '2019-09-18T19:00:52.23Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 3339 format, 3 digits of second fraction\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52, 234), { fractionDigits: 3 })\n * //=> '2019-09-18T19:00:52.234Z'\n */\n\nexport default function formatRFC3339(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 arguments required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var options = dirtyOptions || {};\n var fractionDigits = options.fractionDigits == null ? 0 : toInteger(options.fractionDigits); // Test if fractionDigits is between 0 and 3 _and_ is not NaN\n\n if (!(fractionDigits >= 0 && fractionDigits <= 3)) {\n throw new RangeError('fractionDigits must be between 0 and 3 inclusively');\n }\n\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = originalDate.getFullYear();\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2);\n var fractionalSecond = '';\n\n if (fractionDigits > 0) {\n var milliseconds = originalDate.getMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, fractionDigits - 3));\n fractionalSecond = '.' + addLeadingZeros(fractionalSeconds, fractionDigits);\n }\n\n var offset = '';\n var tzOffset = originalDate.getTimezoneOffset();\n\n if (tzOffset !== 0) {\n var absoluteOffset = Math.abs(tzOffset);\n var hourOffset = addLeadingZeros(absoluteOffset / 60, 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2); // If less than 0, the sign is +, because it is ahead of time.\n\n var sign = tzOffset < 0 ? '+' : '-';\n offset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n offset = 'Z';\n }\n\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day, \"T\").concat(hour, \":\").concat(minute, \":\").concat(second).concat(fractionalSecond).concat(offset);\n}","import toDate from '../toDate/index.js';\nimport isValid from '../isValid/index.js';\nimport addLeadingZeros from '../_lib/addLeadingZeros/index.js';\nvar days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n/**\n * @name formatRFC7231\n * @category Common Helpers\n * @summary Format the date according to the RFC 7231 standard (https://tools.ietf.org/html/rfc7231#section-7.1.1.1).\n *\n * @description\n * Return the formatted date string in RFC 7231 format.\n * The result will always be in UTC timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n *\n * @example\n * // Represent 18 September 2019 in RFC 7231 format:\n * const result = formatRFC7231(new Date(2019, 8, 18, 19, 0, 52))\n * //=> 'Wed, 18 Sep 2019 19:00:52 GMT'\n */\n\nexport default function formatRFC7231(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 arguments required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var dayName = days[originalDate.getUTCDay()];\n var dayOfMonth = addLeadingZeros(originalDate.getUTCDate(), 2);\n var monthName = months[originalDate.getUTCMonth()];\n var year = originalDate.getUTCFullYear();\n var hour = addLeadingZeros(originalDate.getUTCHours(), 2);\n var minute = addLeadingZeros(originalDate.getUTCMinutes(), 2);\n var second = addLeadingZeros(originalDate.getUTCSeconds(), 2); // Result variables.\n\n return \"\".concat(dayName, \", \").concat(dayOfMonth, \" \").concat(monthName, \" \").concat(year, \" \").concat(hour, \":\").concat(minute, \":\").concat(second, \" GMT\");\n}","import differenceInCalendarDays from '../differenceInCalendarDays/index.js';\nimport format from '../format/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result |\n * |---------------------------|---------------------------|\n * | Previous 6 days | last Sunday at 04:30 AM |\n * | Last day | yesterday at 04:30 AM |\n * | Same day | today at 04:30 AM |\n * | Next day | tomorrow at 04:30 AM |\n * | Next 6 days | Sunday at 04:30 AM |\n * | Other | 12/31/2017 |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to format\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {String} the date in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.locale` must contain `formatRelative` property\n */\n\nexport default function formatRelative(dirtyDate, dirtyBaseDate, dirtyOptions) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var baseDate = toDate(dirtyBaseDate);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n if (!locale.formatRelative) {\n throw new RangeError('locale must contain formatRelative property');\n }\n\n var diff = differenceInCalendarDays(date, baseDate);\n\n if (isNaN(diff)) {\n throw new RangeError('Invalid time value');\n }\n\n var token;\n\n if (diff < -6) {\n token = 'other';\n } else if (diff < -1) {\n token = 'lastWeek';\n } else if (diff < 0) {\n token = 'yesterday';\n } else if (diff < 1) {\n token = 'today';\n } else if (diff < 2) {\n token = 'tomorrow';\n } else if (diff < 7) {\n token = 'nextWeek';\n } else {\n token = 'other';\n }\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var utcBaseDate = subMilliseconds(baseDate, getTimezoneOffsetInMilliseconds(baseDate));\n var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, options);\n return format(date, formatStr, options);\n}","import toDate from '../toDate/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name fromUnixTime\n * @category Timestamp Helpers\n * @summary Create a date from a Unix timestamp.\n *\n * @description\n * Create a date from a Unix timestamp.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Number} unixTime - the given Unix timestamp\n * @returns {Date} the date\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Create the date 29 February 2012 11:45:05:\n * var result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\n\nexport default function fromUnixTime(dirtyUnixTime) {\n requiredArgs(1, arguments);\n var unixTime = toInteger(dirtyUnixTime);\n return toDate(unixTime * 1000);\n}","import toDate from '../toDate/index.js';\nimport startOfYear from '../startOfYear/index.js';\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * var result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\n\nexport default function getDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = differenceInCalendarDays(date, startOfYear(date));\n var dayOfYear = diff + 1;\n return dayOfYear;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isLeapYear\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\n\nexport default function isLeapYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import toDate from '../toDate/index.js';\nimport isLeapYear from '../isLeapYear/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getDaysInYear\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in 2012?\n * var result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\n\nexport default function getDaysInYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n\n if (isNaN(date)) {\n return NaN;\n }\n\n return isLeapYear(date) ? 366 : 365;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getDecade\n * @category Decade Helpers\n * @summary Get the decade of the given date.\n *\n * @description\n * Get the decade of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year of decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which decade belongs 27 November 1942?\n * var result = getDecade(new Date(1942, 10, 27))\n * //=> 1940\n */\n\nexport default function getDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = Math.floor(year / 10) * 10;\n return decade;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * var result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\n\nexport default function getISODay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n\n if (day === 0) {\n day = 7;\n }\n\n return day;\n}","import toDate from '../toDate/index.js';\nimport startOfISOWeek from '../startOfISOWeek/index.js';\nimport startOfISOWeekYear from '../startOfISOWeekYear/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\n\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import startOfISOWeekYear from '../startOfISOWeekYear/index.js';\nimport addWeeks from '../addWeeks/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getISOWeeksInYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of ISO weeks in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * var result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\n\nexport default function getISOWeeksInYear(dirtyDate) {\n requiredArgs(1, arguments);\n var thisYear = startOfISOWeekYear(dirtyDate);\n var nextYear = startOfISOWeekYear(addWeeks(thisYear, 60));\n var diff = nextYear.valueOf() - thisYear.valueOf(); // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK);\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getMilliseconds\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * var result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\n\nexport default function getMilliseconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var milliseconds = date.getMilliseconds();\n return milliseconds;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000;\n/**\n * @name getOverlappingDaysInIntervals\n * @category Interval Helpers\n * @summary Get the number of days that overlap in two time intervals\n *\n * @description\n * Get the number of days that overlap in two time intervals\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getOverlappingDaysInRanges` to `getOverlappingDaysInIntervals`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20),\n * new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n *\n * // v2.0.0 onward\n *\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * ```\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/Interval}\n * @returns {Number} the number of days that overlap in two time intervals\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals adds 1 for each started overlapping day:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping time intervals returns 0:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> 0\n */\n\nexport default function getOverlappingDaysInIntervals(dirtyIntervalLeft, dirtyIntervalRight) {\n requiredArgs(2, arguments);\n var intervalLeft = dirtyIntervalLeft || {};\n var intervalRight = dirtyIntervalRight || {};\n var leftStartTime = toDate(intervalLeft.start).getTime();\n var leftEndTime = toDate(intervalLeft.end).getTime();\n var rightStartTime = toDate(intervalRight.start).getTime();\n var rightEndTime = toDate(intervalRight.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var isOverlapping = leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n\n if (!isOverlapping) {\n return 0;\n }\n\n var overlapStartDate = rightStartTime < leftStartTime ? leftStartTime : rightStartTime;\n var overlapEndDate = rightEndTime > leftEndTime ? leftEndTime : rightEndTime;\n var differenceInMs = overlapEndDate - overlapStartDate;\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY);\n}","import getTime from '../getTime/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * var result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\n\nexport default function getUnixTime(dirtyDate) {\n requiredArgs(1, arguments);\n return Math.floor(getTime(dirtyDate) / 1000);\n}","import getDate from '../getDate/index.js';\nimport getDay from '../getDay/index.js';\nimport startOfMonth from '../startOfMonth/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getWeekOfMonth\n * @category Week Helpers\n * @summary Get the week of the month of the given date.\n *\n * @description\n * Get the week of the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the week of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Which week of the month is 9 November 2017?\n * var result = getWeekOfMonth(new Date(2017, 10, 9))\n * //=> 2\n */\n\nexport default function getWeekOfMonth(date, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var currentDayOfMonth = getDate(date);\n\n if (isNaN(currentDayOfMonth)) {\n return currentDayOfMonth;\n }\n\n var startWeekDay = getDay(startOfMonth(date));\n var lastDayOfFirstWeek = 0;\n\n if (startWeekDay >= weekStartsOn) {\n lastDayOfFirstWeek = weekStartsOn + 7 - startWeekDay;\n } else {\n lastDayOfFirstWeek = weekStartsOn - startWeekDay;\n }\n\n var weekNumber = 1;\n\n if (currentDayOfMonth > lastDayOfFirstWeek) {\n var remainingDaysAfterFirstWeek = currentDayOfMonth - lastDayOfFirstWeek;\n weekNumber = weekNumber + Math.ceil(remainingDaysAfterFirstWeek / 7);\n }\n\n return weekNumber;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\n\nexport default function lastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import differenceInCalendarWeeks from '../differenceInCalendarWeeks/index.js';\nimport lastDayOfMonth from '../lastDayOfMonth/index.js';\nimport startOfMonth from '../startOfMonth/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * var result = getWeeksInMonth(new Date(2015, 1, 8))\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * var result = getWeeksInMonth(new Date(2017, 6, 5), { weekStartsOn: 1 })\n * //=> 6\n */\n\nexport default function getWeeksInMonth(date, options) {\n requiredArgs(1, arguments);\n return differenceInCalendarWeeks(lastDayOfMonth(date), startOfMonth(date), options) + 1;\n}","import subDays from '../subDays/index.js';\nimport subMonths from '../subMonths/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n *\n * | Key | Description |\n * |---------|------------------------------------|\n * | years | Amount of years to be subtracted |\n * | months | Amount of months to be subtracted |\n * | weeks | Amount of weeks to be subtracted |\n * | days | Amount of days to be subtracted |\n * | hours | Amount of hours to be subtracted |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\n\nexport default function sub(dirtyDate, duration) {\n requiredArgs(2, arguments);\n if (!duration || typeof duration !== 'object') return new Date(NaN);\n var years = 'years' in duration ? toInteger(duration.years) : 0;\n var months = 'months' in duration ? toInteger(duration.months) : 0;\n var weeks = 'weeks' in duration ? toInteger(duration.weeks) : 0;\n var days = 'days' in duration ? toInteger(duration.days) : 0;\n var hours = 'hours' in duration ? toInteger(duration.hours) : 0;\n var minutes = 'minutes' in duration ? toInteger(duration.minutes) : 0;\n var seconds = 'seconds' in duration ? toInteger(duration.seconds) : 0; // Subtract years and months\n\n var dateWithoutMonths = subMonths(toDate(dirtyDate), months + years * 12); // Subtract weeks and days\n\n var dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7); // Subtract hours, minutes and seconds\n\n var minutestoSub = minutes + hours * 60;\n var secondstoSub = seconds + minutestoSub * 60;\n var mstoSub = secondstoSub * 1000;\n var finalDate = new Date(dateWithoutDays.getTime() - mstoSub);\n return finalDate;\n}","import compareAsc from '../compareAsc/index.js';\nimport differenceInYears from '../differenceInYears/index.js';\nimport differenceInMonths from '../differenceInMonths/index.js';\nimport differenceInDays from '../differenceInDays/index.js';\nimport differenceInHours from '../differenceInHours/index.js';\nimport differenceInMinutes from '../differenceInMinutes/index.js';\nimport differenceInSeconds from '../differenceInSeconds/index.js';\nimport isValid from '../isValid/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nimport toDate from '../toDate/index.js';\nimport sub from '../sub/index.js';\n/**\n * @name intervalToDuration\n * @category Common Helpers\n * @summary Convert interval to duration\n *\n * @description\n * Convert a interval object to a duration object.\n *\n * @param {Interval} interval - the interval to convert to duration\n *\n * @returns {Duration} The duration Object\n * @throws {TypeError} Requires 2 arguments\n * @throws {RangeError} `start` must not be Invalid Date\n * @throws {RangeError} `end` must not be Invalid Date\n *\n * @example\n * // Get the duration between January 15, 1929 and April 4, 1968.\n * intervalToDuration({\n * start: new Date(1929, 0, 15, 12, 0, 0),\n * end: new Date(1968, 3, 4, 19, 5, 0)\n * })\n * // => { years: 39, months: 2, days: 20, hours: 7, minutes: 5, seconds: 0 }\n */\n\nexport default function intervalToDuration(_ref) {\n var start = _ref.start,\n end = _ref.end;\n requiredArgs(1, arguments);\n var dateLeft = toDate(start);\n var dateRight = toDate(end);\n\n if (!isValid(dateLeft)) {\n throw new RangeError('Start Date is invalid');\n }\n\n if (!isValid(dateRight)) {\n throw new RangeError('End Date is invalid');\n }\n\n var duration = {\n years: 0,\n months: 0,\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0\n };\n var sign = compareAsc(dateLeft, dateRight);\n duration.years = Math.abs(differenceInYears(dateLeft, dateRight));\n var remainingMonths = sub(dateLeft, {\n years: sign * duration.years\n });\n duration.months = Math.abs(differenceInMonths(remainingMonths, dateRight));\n var remainingDays = sub(remainingMonths, {\n months: sign * duration.months\n });\n duration.days = Math.abs(differenceInDays(remainingDays, dateRight));\n var remainingHours = sub(remainingDays, {\n days: sign * duration.days\n });\n duration.hours = Math.abs(differenceInHours(remainingHours, dateRight));\n var remainingMinutes = sub(remainingHours, {\n hours: sign * duration.hours\n });\n duration.minutes = Math.abs(differenceInMinutes(remainingMinutes, dateRight));\n var remainingSeconds = sub(remainingMinutes, {\n minutes: sign * duration.minutes\n });\n duration.seconds = Math.abs(differenceInSeconds(remainingSeconds, dateRight));\n return duration;\n}","/**\n * @name isExists\n * @category Common Helpers\n * @summary Is the given date exists?\n *\n * @description\n * Checks if the given arguments convert to an existing date.\n *\n * @param {Number} year of the date to check\n * @param {Number} month of the date to check\n * @param {Number} day of the date to check\n * @returns {Boolean} the date exists\n * @throws {TypeError} 3 arguments required\n *\n * @example\n * // For the valid date:\n * var result = isExists(2018, 0, 31)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isExists(2018, 1, 31)\n * //=> false\n */\nexport default function isExists(year, month, day) {\n if (arguments.length < 3) {\n throw new TypeError('3 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = new Date(year, month, day);\n return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isFirstDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the first day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\n\nexport default function isFirstDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDate() === 1;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isFriday\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 26 September 2014 Friday?\n * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\n\nexport default function isFriday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 5;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isFuture\n * @category Common Helpers\n * @summary Is the given date in the future?\n * @pure false\n *\n * @description\n * Is the given date in the future?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the future\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 31 December 2014 in the future?\n * var result = isFuture(new Date(2014, 11, 31))\n * //=> true\n */\n\nexport default function isFuture(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getTime() > Date.now();\n}","import toDate from '../toDate/index.js';\nimport endOfDay from '../endOfDay/index.js';\nimport endOfMonth from '../endOfMonth/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\n\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import parse from '../parse/index.js';\nimport isValid from '../isValid/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isMatch\n * @category Common Helpers\n * @summary validates the date string against given formats\n *\n * @description\n * Return the true if given date is string correct against the given format else\n * will return false.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * isMatch('23 AM', 'HH a')\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `isMatch` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `isMatch` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `isMatch` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `isMatch('50', 'yy') //=> true`\n *\n * `isMatch('75', 'yy') //=> true`\n *\n * while `uu` will use the year as is:\n *\n * `isMatch('50', 'uu') //=> true`\n *\n * `isMatch('75', 'uu') //=> true`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be checked in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are matched (e.g. when matching string 'January 1st' without a year),\n * the values will be taken from today's using `new Date()` date which works as a context of parsing.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n *\n *\n * @param {String} dateString - the date string to verify\n * @param {String} formatString - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Boolean}\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Match 11 February 2014 from middle-endian format:\n * var result = isMatch('02/11/2014', 'MM/dd/yyyy')\n * //=> true\n *\n * @example\n * // Match 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = isMatch('28-a de februaro', \"do 'de' MMMM\", {\n * locale: eo\n * })\n * //=> true\n */\n\nexport default function isMatch(dateString, formatString, dirtyOptions) {\n requiredArgs(2, arguments);\n return isValid(parse(dateString, formatString, new Date(), dirtyOptions));\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isMonday\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 22 September 2014 Monday?\n * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\n\nexport default function isMonday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 1;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isPast\n * @category Common Helpers\n * @summary Is the given date in the past?\n * @pure false\n *\n * @description\n * Is the given date in the past?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the past\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 2 July 2014 in the past?\n * var result = isPast(new Date(2014, 6, 2))\n * //=> true\n */\n\nexport default function isPast(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getTime() < Date.now();\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * var result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\n\nexport default function startOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(0, 0, 0);\n return date;\n}","import startOfHour from '../startOfHour/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 6, 30))\n * //=> true\n */\n\nexport default function isSameHour(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft);\n var dateRightStartOfHour = startOfHour(dirtyDateRight);\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime();\n}","import startOfWeek from '../startOfWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the dates are in the same week\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4))\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4), {\n * weekStartsOn: 1\n * })\n * //=> false\n */\n\nexport default function isSameWeek(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n requiredArgs(2, arguments);\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions);\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions);\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime();\n}","import isSameWeek from '../isSameWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSameISOWeek\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(new Date(2014, 8, 1), new Date(2014, 8, 7))\n * //=> true\n */\n\nexport default function isSameISOWeek(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n return isSameWeek(dirtyDateLeft, dirtyDateRight, {\n weekStartsOn: 1\n });\n}","import startOfISOWeekYear from '../startOfISOWeekYear/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSameISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isSameISOYear` to `isSameISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOWeekYear(new Date(2003, 11, 29), new Date(2005, 0, 2))\n * //=> true\n */\n\nexport default function isSameISOWeekYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfYear = startOfISOWeekYear(dirtyDateLeft);\n var dateRightStartOfYear = startOfISOWeekYear(dirtyDateRight);\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime();\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * var result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\n\nexport default function startOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(0, 0);\n return date;\n}","import startOfMinute from '../startOfMinute/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSameMinute\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same minute\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\n\nexport default function isSameMinute(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft);\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight);\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime();\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * var result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\n\nexport default function startOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(0);\n return date;\n}","import startOfSecond from '../startOfSecond/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\n\nexport default function isSameSecond(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft);\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight);\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime();\n}","import isSameHour from '../isSameHour/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isThisHour\n * @category Hour Helpers\n * @summary Is the given date in the same hour as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same hour as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:00:00 in this hour?\n * var result = isThisHour(new Date(2014, 8, 25, 18))\n * //=> true\n */\n\nexport default function isThisHour(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameHour(Date.now(), dirtyDate);\n}","import isSameISOWeek from '../isSameISOWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isThisISOWeek\n * @category ISO Week Helpers\n * @summary Is the given date in the same ISO week as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same ISO week as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 22 September 2014 in this ISO week?\n * var result = isThisISOWeek(new Date(2014, 8, 22))\n * //=> true\n */\n\nexport default function isThisISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameISOWeek(dirtyDate, Date.now());\n}","import isSameMinute from '../isSameMinute/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isThisMinute\n * @category Minute Helpers\n * @summary Is the given date in the same minute as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same minute as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:00 in this minute?\n * var result = isThisMinute(new Date(2014, 8, 25, 18, 30))\n * //=> true\n */\n\nexport default function isThisMinute(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameMinute(Date.now(), dirtyDate);\n}","import isSameMonth from '../isSameMonth/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isThisMonth\n * @category Month Helpers\n * @summary Is the given date in the same month as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same month as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 15 September 2014 in this month?\n * var result = isThisMonth(new Date(2014, 8, 15))\n * //=> true\n */\n\nexport default function isThisMonth(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameMonth(Date.now(), dirtyDate);\n}","import isSameQuarter from '../isSameQuarter/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isThisQuarter\n * @category Quarter Helpers\n * @summary Is the given date in the same quarter as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same quarter as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this quarter?\n * var result = isThisQuarter(new Date(2014, 6, 2))\n * //=> true\n */\n\nexport default function isThisQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameQuarter(Date.now(), dirtyDate);\n}","import isSameSecond from '../isSameSecond/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isThisSecond\n * @category Second Helpers\n * @summary Is the given date in the same second as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same second as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:15.000 in this second?\n * var result = isThisSecond(new Date(2014, 8, 25, 18, 30, 15))\n * //=> true\n */\n\nexport default function isThisSecond(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameSecond(Date.now(), dirtyDate);\n}","import isSameWeek from '../isSameWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isThisWeek\n * @category Week Helpers\n * @summary Is the given date in the same week as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same week as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @param {Object} [options] - the object with options\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the date is in this week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // If today is 25 September 2014, is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21))\n * //=> true\n *\n * @example\n * // If today is 25 September 2014 and week starts with Monday\n * // is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21), { weekStartsOn: 1 })\n * //=> false\n */\n\nexport default function isThisWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n return isSameWeek(dirtyDate, Date.now(), options);\n}","import isSameYear from '../isSameYear/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isThisYear\n * @category Year Helpers\n * @summary Is the given date in the same year as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same year as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this year?\n * var result = isThisYear(new Date(2014, 6, 2))\n * //=> true\n */\n\nexport default function isThisYear(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameYear(dirtyDate, Date.now());\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isThursday\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isThursday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 4;\n}","import isSameDay from '../isSameDay/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * var result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\n\nexport default function isToday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, Date.now());\n}","import addDays from '../addDays/index.js';\nimport isSameDay from '../isSameDay/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isTomorrow\n * @category Day Helpers\n * @summary Is the given date tomorrow?\n * @pure false\n *\n * @description\n * Is the given date tomorrow?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is tomorrow\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 7 October 14:00:00 tomorrow?\n * var result = isTomorrow(new Date(2014, 9, 7, 14, 0))\n * //=> true\n */\n\nexport default function isTomorrow(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, addDays(Date.now(), 1));\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isTuesday\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\n\nexport default function isTuesday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 2;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isWednesday\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * var result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\n\nexport default function isWednesday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 3;\n}","import isSameDay from '../isSameDay/index.js';\nimport subDays from '../subDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isYesterday\n * @category Day Helpers\n * @summary Is the given date yesterday?\n * @pure false\n *\n * @description\n * Is the given date yesterday?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is yesterday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * var result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\n\nexport default function isYesterday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, subDays(Date.now(), 1));\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name lastDayOfDecade\n * @category Decade Helpers\n * @summary Return the last day of a decade for the given date.\n *\n * @description\n * Return the last day of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a decade for 21 December 2012 21:12:00:\n * var result = lastDayOfDecade(new Date(2012, 11, 21, 21, 12, 00))\n * //=> Wed Dec 31 2019 00:00:00\n */\n\nexport default function lastDayOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = 9 + Math.floor(year / 10) * 10;\n date.setFullYear(decade + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from '../toDate/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the last day of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport default function lastDayOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + diff);\n return date;\n}","import lastDayOfWeek from '../lastDayOfWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name lastDayOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport default function lastDayOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return lastDayOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from '../getISOWeekYear/index.js';\nimport startOfISOWeek from '../startOfISOWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name lastDayOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `lastDayOfISOYear` to `lastDayOfISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * var result = lastDayOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\n\nexport default function lastDayOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year + 1, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n date.setDate(date.getDate() - 1);\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name lastDayOfQuarter\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\n\nexport default function lastDayOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name lastDayOfYear\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\n\nexport default function lastDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from '../toDate/index.js';\nimport formatters from '../_lib/format/lightFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport isValid from '../isValid/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js'; // This RegExp consists of three parts separated by `|`:\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name lightFormat\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. Unlike `format`,\n * `lightFormat` doesn't use locales and outputs date using the most popular tokens.\n *\n * > ⚠️ Please note that the `lightFormat` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples |\n * |---------------------------------|---------|-----------------------------------|\n * | AM, PM | a..aaa | AM, PM |\n * | | aaaa | a.m., p.m. |\n * | | aaaaa | a, p |\n * | Calendar year | y | 44, 1, 1900, 2017 |\n * | | yy | 44, 01, 00, 17 |\n * | | yyy | 044, 001, 000, 017 |\n * | | yyyy | 0044, 0001, 1900, 2017 |\n * | Month (formatting) | M | 1, 2, ..., 12 |\n * | | MM | 01, 02, ..., 12 |\n * | Day of month | d | 1, 2, ..., 31 |\n * | | dd | 01, 02, ..., 31 |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 |\n * | | hh | 01, 02, ..., 11, 12 |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 |\n * | | HH | 00, 01, 02, ..., 23 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | Fraction of second | S | 0, 1, ..., 9 |\n * | | SS | 00, 01, ..., 99 |\n * | | SSS | 000, 0001, ..., 999 |\n * | | SSSS | ... |\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * var result = lightFormat(new Date(2014, 1, 11), 'yyyy-MM-dd')\n * //=> '1987-02-11'\n */\n\nexport default function lightFormat(dirtyDate, dirtyFormatStr) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var result = formatStr.match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n return formatter(utcDate, substring, null, {});\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name parseJSON\n * @category Common Helpers\n * @summary Parse a JSON date string\n *\n * @description\n * Converts a complete ISO date string in UTC time, the typical format for transmitting\n * a date in JSON, to a JavaScript `Date` instance.\n *\n * This is a minimal implementation for converting dates retrieved from a JSON API to\n * a `Date` instance which can be used with other functions in the `date-fns` library.\n * The following formats are supported:\n *\n * - `2000-03-15T05:20:10.123Z`: The output of `.toISOString()` and `JSON.stringify(new Date())`\n * - `2000-03-15T05:20:10Z`: Without milliseconds\n * - `2000-03-15T05:20:10+00:00`: With a zero offset, the default JSON encoded format in some other languages\n * - `2000-03-15T05:20:10+0000`: With a zero offset without a colon\n * - `2000-03-15T05:20:10`: Without a trailing 'Z' symbol\n * - `2000-03-15T05:20:10.1234567`: Up to 7 digits in milliseconds field. Only first 3 are taken into account since JS does not allow fractional milliseconds\n * - `2000-03-15 05:20:10`: With a space instead of a 'T' separator for APIs returning a SQL date without reformatting\n *\n * For convenience and ease of use these other input types are also supported\n * via [toDate]{@link https://date-fns.org/docs/toDate}:\n *\n * - A `Date` instance will be cloned\n * - A `number` will be treated as a timestamp\n *\n * Any other input type or invalid date strings will return an `Invalid Date`.\n *\n * @param {String|Number|Date} argument A fully formed ISO8601 date string to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n */\n\nexport default function parseJSON(argument) {\n requiredArgs(1, arguments);\n\n if (typeof argument === 'string') {\n var parts = argument.match(/(\\d{4})-(\\d{2})-(\\d{2})[T ](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{0,7}))?(?:Z|\\+00:?00)?/);\n\n if (parts) {\n return new Date(Date.UTC(+parts[1], parts[2] - 1, +parts[3], +parts[4], +parts[5], +parts[6], +((parts[7] || '0') + '00').substring(0, 3)));\n }\n\n return new Date(NaN);\n }\n\n return toDate(argument);\n}","import toDate from '../toDate/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\n/**\n * @name roundToNearestMinutes\n * @category Minute Helpers\n * @summary Rounds the given date to the nearest minute\n *\n * @description\n * Rounds the given date to the nearest minute (or number of minutes).\n * Rounds up when the given date is exactly between the nearest round minutes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to round\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.nearestTo=1] - nearest number of minutes to round to. E.g. `15` to round to quarter hours.\n * @returns {Date} the new date rounded to the closest minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.nearestTo` must be between 1 and 30\n *\n * @example\n * // Round 10 July 2014 12:12:34 to nearest minute:\n * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34))\n * //=> Thu Jul 10 2014 12:13:00\n *\n * @example\n * // Round 10 July 2014 12:07:30 to nearest quarter hour:\n * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34), { nearestTo: 15 })\n * // rounds up because given date is exactly between 12:00:00 and 12:15:00\n * //=> Thu Jul 10 2014 12:15:00\n */\n\nexport default function roundToNearestMinutes(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only none provided present');\n }\n\n var nearestTo = options && 'nearestTo' in options ? toInteger(options.nearestTo) : 1;\n\n if (nearestTo < 1 || nearestTo > 30) {\n throw new RangeError('`options.nearestTo` must be between 1 and 30');\n }\n\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds(); // relevant if nearestTo is 1, which is the default case\n\n var minutes = date.getMinutes() + seconds / 60;\n var roundedMinutes = Math.floor(minutes / nearestTo) * nearestTo;\n var remainderMinutes = minutes % nearestTo;\n var addedMinutes = Math.round(remainderMinutes / nearestTo) * nearestTo;\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), roundedMinutes + addedMinutes);\n}","import toDate from '../toDate/index.js';\nimport setMonth from '../setMonth/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * var result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * var result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\n\nexport default function set(dirtyDate, values) {\n requiredArgs(2, arguments);\n\n if (typeof values !== 'object' || values === null) {\n throw new RangeError('values parameter must be an object');\n }\n\n var date = toDate(dirtyDate); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n if (isNaN(date)) {\n return new Date(NaN);\n }\n\n if (values.year != null) {\n date.setFullYear(values.year);\n }\n\n if (values.month != null) {\n date = setMonth(date, values.month);\n }\n\n if (values.date != null) {\n date.setDate(toInteger(values.date));\n }\n\n if (values.hours != null) {\n date.setHours(toInteger(values.hours));\n }\n\n if (values.minutes != null) {\n date.setMinutes(toInteger(values.minutes));\n }\n\n if (values.seconds != null) {\n date.setSeconds(toInteger(values.seconds));\n }\n\n if (values.milliseconds != null) {\n date.setMilliseconds(toInteger(values.milliseconds));\n }\n\n return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\n\nexport default function setDate(dirtyDate, dirtyDayOfMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = toInteger(dirtyDayOfMonth);\n date.setDate(dayOfMonth);\n return date;\n}","import addDays from '../addDays/index.js';\nimport toDate from '../toDate/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the new date with the day of the week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * var result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport default function setDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate, options);\n var day = toInteger(dirtyDay);\n var currentDay = date.getDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var delta = 7 - weekStartsOn;\n var diff = day < 0 || day > 6 ? day - (currentDay + delta) % 7 : (dayIndex + delta) % 7 - (currentDay + delta) % 7;\n return addDays(date, diff, options);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setDayOfYear\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @returns {Date} the new date with the day of the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\n\nexport default function setDayOfYear(dirtyDate, dirtyDayOfYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dayOfYear = toInteger(dirtyDayOfYear);\n date.setMonth(0);\n date.setDate(dayOfYear);\n return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport addDays from '../addDays/index.js';\nimport getISODay from '../getISODay/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @returns {Date} the new date with the day of the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport default function setISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = getISODay(date);\n var diff = day - currentDay;\n return addDays(date, diff);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport getISOWeek from '../getISOWeek/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @returns {Date} the new date with the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * var result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\n\nexport default function setISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getISOWeek(date) - isoWeek;\n date.setDate(date.getDate() - diff * 7);\n return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * var result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\n\nexport default function setMilliseconds(dirtyDate, dirtyMilliseconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var milliseconds = toInteger(dirtyMilliseconds);\n date.setMilliseconds(milliseconds);\n return date;\n}","import getWeek from '../getWeek/index.js';\nimport toDate from '../toDate/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} week - the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * var result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * var result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\n\nexport default function setWeek(dirtyDate, dirtyWeek, dirtyOptions) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getWeek(date, dirtyOptions) - week;\n date.setDate(date.getDate() - diff * 7);\n return date;\n}","import differenceInCalendarDays from '../differenceInCalendarDays/index.js';\nimport startOfWeekYear from '../startOfWeekYear/index.js';\nimport toDate from '../toDate/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Set the local week-numbering year to the given date.\n *\n * @description\n * Set the local week-numbering year to the given date,\n * saving the week number and the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} weekYear - the local week-numbering year of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week-numbering year set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010 with default options:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004)\n * //=> Sat Jan 03 2004 00:00:00\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010,\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sat Jan 01 2005 00:00:00\n */\n\nexport default function setWeekYear(dirtyDate, dirtyWeekYear, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var date = toDate(dirtyDate);\n var weekYear = toInteger(dirtyWeekYear);\n var diff = differenceInCalendarDays(date, startOfWeekYear(date, dirtyOptions));\n var firstWeek = new Date(0);\n firstWeek.setFullYear(weekYear, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n date = startOfWeekYear(firstWeek, dirtyOptions);\n date.setDate(date.getDate() + diff);\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfDecade\n * @category Decade Helpers\n * @summary Return the start of a decade for the given date.\n *\n * @description\n * Return the start of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a decade for 21 October 2015 00:00:00:\n * var result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))\n * //=> Jan 01 2010 00:00:00\n */\n\nexport default function startOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = Math.floor(year / 10) * 10;\n date.setFullYear(decade, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import startOfDay from '../startOfDay/index.js';\n/**\n * @name startOfToday\n * @category Day Helpers\n * @summary Return the start of today.\n * @pure false\n *\n * @description\n * Return the start of today.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the start of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfToday()\n * //=> Mon Oct 6 2014 00:00:00\n */\n\nexport default function startOfToday() {\n return startOfDay(Date.now());\n}","/**\n * @name startOfTomorrow\n * @category Day Helpers\n * @summary Return the start of tomorrow.\n * @pure false\n *\n * @description\n * Return the start of tomorrow.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the start of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfTomorrow()\n * //=> Tue Oct 7 2014 00:00:00\n */\nexport default function startOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","/**\n * @name startOfYesterday\n * @category Day Helpers\n * @summary Return the start of yesterday.\n * @pure false\n *\n * @description\n * Return the start of yesterday.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the start of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfYesterday()\n * //=> Sun Oct 5 2014 00:00:00\n */\nexport default function startOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addBusinessDays from '../addBusinessDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subBusinessDays\n * @category Day Helpers\n * @summary Substract the specified number of business days (mon - fri) to the given date.\n *\n * @description\n * Substract the specified number of business days (mon - fri) to the given date, ignoring weekends.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of business days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the business days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Substract 10 business days from 1 September 2014:\n * var result = subBusinessDays(new Date(2014, 8, 1), 10)\n * //=> Mon Aug 18 2014 00:00:00 (skipped weekend days)\n */\n\nexport default function subBusinessDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addBusinessDays(dirtyDate, -amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addQuarters from '../addQuarters/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * var result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\n\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addQuarters(dirtyDate, -amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addSeconds from '../addSeconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subSeconds\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * var result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\n\nexport default function subSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addSeconds(dirtyDate, -amount);\n}","/**\n * Maximum allowed time.\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * Minimum allowed time.\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minTime = -maxTime;","import { Component, createElement } from 'react';\nimport { findDOMNode } from 'react-dom';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // SVG <use/> elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n\n return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // If source=local then this event came from 'somewhere'\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's 'you shouldn't care about the DOM' philosophy.\n\n\n while (current.parentNode) {\n if (isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n\n current = current.parentNode;\n }\n\n return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}\n\n// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n return;\n }\n\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n\n var noop = function noop() {};\n\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n return passive;\n};\n\nfunction autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();\n\nvar passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = null;\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions = {\n passive: !instance.props.preventDefault\n };\n }\n\n return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n var _class, _temp;\n\n var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(onClickOutside, _Component);\n\n function onClickOutside(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.__outsideClickHandler = function (event) {\n if (typeof _this.__clickOutsideHandlerProp === 'function') {\n _this.__clickOutsideHandlerProp(event);\n\n return;\n }\n\n var instance = _this.getInstance();\n\n if (typeof instance.props.handleClickOutside === 'function') {\n instance.props.handleClickOutside(event);\n return;\n }\n\n if (typeof instance.handleClickOutside === 'function') {\n instance.handleClickOutside(event);\n return;\n }\n\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n };\n\n _this.__getComponentNode = function () {\n var instance = _this.getInstance();\n\n if (config && typeof config.setClickOutsideRef === 'function') {\n return config.setClickOutsideRef()(instance);\n }\n\n if (typeof instance.setClickOutsideRef === 'function') {\n return instance.setClickOutsideRef();\n }\n\n return findDOMNode(instance);\n };\n\n _this.enableOnClickOutside = function () {\n if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n return;\n }\n\n if (typeof passiveEventSupport === 'undefined') {\n passiveEventSupport = testPassiveEventSupport();\n }\n\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n handlersMap[_this._uid] = function (event) {\n if (_this.componentNode === null) return;\n\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.target;\n\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n\n _this.__outsideClickHandler(event);\n };\n\n events.forEach(function (eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_this, eventName));\n });\n };\n\n _this.disableOnClickOutside = function () {\n delete enabledInstances[_this._uid];\n var fn = handlersMap[_this._uid];\n\n if (fn && typeof document !== 'undefined') {\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n events.forEach(function (eventName) {\n return document.removeEventListener(eventName, fn, getEventHandlerOptions(_this, eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n\n _this.getRef = function (ref) {\n return _this.instanceRef = ref;\n };\n\n _this._uid = uid();\n return _this;\n }\n /**\n * Access the WrappedComponent's instance.\n */\n\n\n var _proto = onClickOutside.prototype;\n\n _proto.getInstance = function getInstance() {\n if (!WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n\n var ref = this.instanceRef;\n return ref.getInstance ? ref.getInstance() : ref;\n };\n\n /**\n * Add click listeners to the current document,\n * linked to this component's state.\n */\n _proto.componentDidMount = function componentDidMount() {\n // If we are in an environment without a DOM such\n // as shallow rendering or snapshots then we exit\n // early to prevent any unhandled errors being thrown.\n if (typeof document === 'undefined' || !document.createElement) {\n return;\n }\n\n var instance = this.getInstance();\n\n if (config && typeof config.handleClickOutside === 'function') {\n this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n if (typeof this.__clickOutsideHandlerProp !== 'function') {\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n }\n }\n\n this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n if (this.props.disableOnClickOutside) return;\n this.enableOnClickOutside();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = this.__getComponentNode();\n };\n /**\n * Remove all document's event listeners for this component\n */\n\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n };\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n\n\n /**\n * Pass-through render\n */\n _proto.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _props = this.props,\n excludeScrollbar = _props.excludeScrollbar,\n props = _objectWithoutProperties(_props, [\"excludeScrollbar\"]);\n\n if (WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n eventTypes: ['mousedown', 'touchstart'],\n excludeScrollbar: config && config.excludeScrollbar || false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function () {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}\n\nexport { IGNORE_CLASS_NAME };\nexport default onClickOutsideHOC;\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","import _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport createContext from 'create-react-context';\nexport var ManagerReferenceNodeContext = createContext();\nexport var ManagerReferenceNodeSetterContext = createContext();\n\nvar Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Manager, _React$Component);\n\n function Manager() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"referenceNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"setReferenceNode\", function (newReferenceNode) {\n if (newReferenceNode && _this.referenceNode !== newReferenceNode) {\n _this.referenceNode = newReferenceNode;\n\n _this.forceUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = Manager.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.referenceNode = null;\n };\n\n _proto.render = function render() {\n return React.createElement(ManagerReferenceNodeContext.Provider, {\n value: this.referenceNode\n }, React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: this.setReferenceNode\n }, this.props.children));\n };\n\n return Manager;\n}(React.Component);\n\nexport { Manager as default };","/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Does a shallow equality check of two objects by comparing the reference\n * equality of each value.\n */\n\nexport var shallowEqual = function shallowEqual(objA, objB) {\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n\n if (bKeys.length !== aKeys.length) {\n return false;\n }\n\n for (var i = 0; i < bKeys.length; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === \"function\") {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport deepEqual from \"deep-equal\";\nimport * as React from 'react';\nimport PopperJS from 'popper.js';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef, shallowEqual } from './utils';\nvar initialStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nexport var InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerPopper, _React$Component);\n\n function InnerPopper() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n data: undefined,\n placement: undefined\n });\n\n _defineProperty(_assertThisInitialized(_this), \"popperInstance\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"popperNode\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"arrowNode\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"setPopperNode\", function (popperNode) {\n if (!popperNode || _this.popperNode === popperNode) return;\n setRef(_this.props.innerRef, popperNode);\n _this.popperNode = popperNode;\n\n _this.updatePopperInstance();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setArrowNode\", function (arrowNode) {\n _this.arrowNode = arrowNode;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateStateModifier\", {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n var placement = data.placement;\n\n _this.setState({\n data: data,\n placement: placement\n });\n\n return data;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getOptions\", function () {\n return {\n placement: _this.props.placement,\n eventsEnabled: _this.props.eventsEnabled,\n positionFixed: _this.props.positionFixed,\n modifiers: _extends({}, _this.props.modifiers, {\n arrow: _extends({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n enabled: !!_this.arrowNode,\n element: _this.arrowNode\n }),\n applyStyle: {\n enabled: false\n },\n updateStateModifier: _this.updateStateModifier\n })\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getPopperStyle\", function () {\n return !_this.popperNode || !_this.state.data ? initialStyle : _extends({\n position: _this.state.data.offsets.popper.position\n }, _this.state.data.styles);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getPopperPlacement\", function () {\n return !_this.state.data ? undefined : _this.state.placement;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getArrowStyle\", function () {\n return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getOutOfBoundariesState\", function () {\n return _this.state.data ? _this.state.data.hide : undefined;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"destroyPopperInstance\", function () {\n if (!_this.popperInstance) return;\n\n _this.popperInstance.destroy();\n\n _this.popperInstance = null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updatePopperInstance\", function () {\n _this.destroyPopperInstance();\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n popperNode = _assertThisInitialize.popperNode;\n\n var referenceElement = _this.props.referenceElement;\n if (!referenceElement || !popperNode) return;\n _this.popperInstance = new PopperJS(referenceElement, popperNode, _this.getOptions());\n });\n\n _defineProperty(_assertThisInitialized(_this), \"scheduleUpdate\", function () {\n if (_this.popperInstance) {\n _this.popperInstance.scheduleUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = InnerPopper.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If the Popper.js options have changed, update the instance (destroy + create)\n if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed || !deepEqual(this.props.modifiers, prevProps.modifiers, {\n strict: true\n })) {\n // develop only check that modifiers isn't being updated needlessly\n if (process.env.NODE_ENV === \"development\") {\n if (this.props.modifiers !== prevProps.modifiers && this.props.modifiers != null && prevProps.modifiers != null && shallowEqual(this.props.modifiers, prevProps.modifiers)) {\n console.warn(\"'modifiers' prop reference updated even though all values appear the same.\\nConsider memoizing the 'modifiers' object to avoid needless rendering.\");\n }\n }\n\n this.updatePopperInstance();\n } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n } // A placement difference in state means popper determined a new placement\n // apart from the props value. By the time the popper element is rendered with\n // the new position Popper has already measured it, if the place change triggers\n // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n if (prevState.placement !== this.state.placement) {\n this.scheduleUpdate();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n this.destroyPopperInstance();\n };\n\n _proto.render = function render() {\n return unwrapArray(this.props.children)({\n ref: this.setPopperNode,\n style: this.getPopperStyle(),\n placement: this.getPopperPlacement(),\n outOfBoundaries: this.getOutOfBoundariesState(),\n scheduleUpdate: this.scheduleUpdate,\n arrowProps: {\n ref: this.setArrowNode,\n style: this.getArrowStyle()\n }\n });\n };\n\n return InnerPopper;\n}(React.Component);\n\n_defineProperty(InnerPopper, \"defaultProps\", {\n placement: 'bottom',\n eventsEnabled: true,\n referenceElement: undefined,\n positionFixed: false\n});\n\nvar placements = PopperJS.placements;\nexport { placements };\nexport default function Popper(_ref) {\n var referenceElement = _ref.referenceElement,\n props = _objectWithoutPropertiesLoose(_ref, [\"referenceElement\"]);\n\n return React.createElement(ManagerReferenceNodeContext.Consumer, null, function (referenceNode) {\n return React.createElement(InnerPopper, _extends({\n referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n }, props));\n });\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\n\nvar InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerReference, _React$Component);\n\n function InnerReference() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"refHandler\", function (node) {\n setRef(_this.props.innerRef, node);\n safeInvoke(_this.props.setReferenceNode, node);\n });\n\n return _this;\n }\n\n var _proto = InnerReference.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n };\n\n _proto.render = function render() {\n warning(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n return unwrapArray(this.props.children)({\n ref: this.refHandler\n });\n };\n\n return InnerReference;\n}(React.Component);\n\nexport default function Reference(props) {\n return React.createElement(ManagerReferenceNodeSetterContext.Consumer, null, function (setReferenceNode) {\n return React.createElement(InnerReference, _extends({\n setReferenceNode: setReferenceNode\n }, props));\n });\n}","import e from\"react\";import\"prop-types\";import t from\"classnames\";import r from\"date-fns/isDate\";import n from\"date-fns/isValid\";import o from\"date-fns/format\";import a from\"date-fns/addMinutes\";import s from\"date-fns/addHours\";import p from\"date-fns/addDays\";import i from\"date-fns/addWeeks\";import c from\"date-fns/addMonths\";import l from\"date-fns/addYears\";import\"date-fns/subMinutes\";import\"date-fns/subHours\";import d from\"date-fns/subDays\";import u from\"date-fns/subWeeks\";import h from\"date-fns/subMonths\";import m from\"date-fns/subYears\";import f from\"date-fns/getSeconds\";import v from\"date-fns/getMinutes\";import y from\"date-fns/getHours\";import D from\"date-fns/getDay\";import w from\"date-fns/getDate\";import k from\"date-fns/getWeek\";import g from\"date-fns/getMonth\";import b from\"date-fns/getQuarter\";import C from\"date-fns/getYear\";import _ from\"date-fns/getTime\";import S from\"date-fns/setSeconds\";import M from\"date-fns/setMinutes\";import P from\"date-fns/setHours\";import E from\"date-fns/setMonth\";import N from\"date-fns/setQuarter\";import O from\"date-fns/setYear\";import x from\"date-fns/min\";import Y from\"date-fns/max\";import T from\"date-fns/differenceInCalendarDays\";import I from\"date-fns/differenceInCalendarMonths\";import\"date-fns/differenceInCalendarWeeks\";import L from\"date-fns/differenceInCalendarYears\";import F from\"date-fns/startOfDay\";import R from\"date-fns/startOfWeek\";import W from\"date-fns/startOfMonth\";import A from\"date-fns/startOfQuarter\";import B from\"date-fns/startOfYear\";import j from\"date-fns/endOfDay\";import\"date-fns/endOfWeek\";import\"date-fns/endOfMonth\";import K from\"date-fns/isEqual\";import H from\"date-fns/isSameDay\";import Q from\"date-fns/isSameMonth\";import V from\"date-fns/isSameYear\";import q from\"date-fns/isSameQuarter\";import U from\"date-fns/isAfter\";import $ from\"date-fns/isBefore\";import z from\"date-fns/isWithinInterval\";import G from\"date-fns/toDate\";import J from\"date-fns/parse\";import X from\"date-fns/parseISO\";import Z from\"react-onclickoutside\";import{Popper as ee,Manager as te,Reference as re}from\"react-popper\";import ne from\"react-dom\";function oe(e){return(oe=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function ae(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function se(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function pe(e,t,r){return t&&se(e.prototype,t),r&&se(e,r),e}function ie(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ce(){return(ce=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function le(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function de(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?le(Object(r),!0).forEach((function(t){ie(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):le(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ue(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&me(e,t)}function he(e){return(he=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function me(e,t){return(me=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function fe(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function ve(e,t){return!t||\"object\"!=typeof t&&\"function\"!=typeof t?fe(e):t}function ye(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=he(e);if(t){var o=he(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return ve(this,r)}}function De(e,t){switch(e){case\"P\":return t.date({width:\"short\"});case\"PP\":return t.date({width:\"medium\"});case\"PPP\":return t.date({width:\"long\"});case\"PPPP\":default:return t.date({width:\"full\"})}}function we(e,t){switch(e){case\"p\":return t.time({width:\"short\"});case\"pp\":return t.time({width:\"medium\"});case\"ppp\":return t.time({width:\"long\"});case\"pppp\":default:return t.time({width:\"full\"})}}var ke={p:we,P:function(e,t){var r,n=e.match(/(P+)(p+)?/),o=n[1],a=n[2];if(!a)return De(e,t);switch(o){case\"P\":r=t.dateTime({width:\"short\"});break;case\"PP\":r=t.dateTime({width:\"medium\"});break;case\"PPP\":r=t.dateTime({width:\"long\"});break;case\"PPPP\":default:r=t.dateTime({width:\"full\"})}return r.replace(\"{{date}}\",De(o,t)).replace(\"{{time}}\",we(a,t))}},ge=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;function be(e){var t=e?\"string\"==typeof e||e instanceof String?X(e):G(e):new Date;return _e(t)?t:null}function Ce(e,t,r,n){var a=null,s=He(r)||Ke(),p=!0;return Array.isArray(t)?(t.forEach((function(t){var r=J(e,t,new Date,{locale:s});n&&(p=_e(r)&&e===o(r,t,{awareOfUnicodeTokens:!0})),_e(r)&&p&&(a=r)})),a):(a=J(e,t,new Date,{locale:s}),n?p=_e(a)&&e===o(a,t,{awareOfUnicodeTokens:!0}):_e(a)||(t=t.match(ge).map((function(e){var t=e[0];return\"p\"===t||\"P\"===t?s?(0,ke[t])(e,s.formatLong):t:e})).join(\"\"),e.length>0&&(a=J(e,t.slice(0,e.length),new Date)),_e(a)||(a=new Date(e))),_e(a)&&p?a:null)}function _e(e){return n(e)&&U(e,new Date(\"1/1/1000\"))}function Se(e,t,r){if(\"en\"===r)return o(e,t,{awareOfUnicodeTokens:!0});var n=He(r);return r&&!n&&console.warn('A locale object was not found for the provided string [\"'.concat(r,'\"].')),!n&&Ke()&&He(Ke())&&(n=He(Ke())),o(e,t,{locale:n||null,awareOfUnicodeTokens:!0})}function Me(e,t){var r=t.hour,n=void 0===r?0:r,o=t.minute,a=void 0===o?0:o,s=t.second;return P(M(S(e,void 0===s?0:s),a),n)}function Pe(e,t){var r=t&&He(t)||Ke()&&He(Ke());return k(e,r?{locale:r}:null)}function Ee(e,t){return Se(e,\"ddd\",t)}function Ne(e){return F(e)}function Oe(e,t){var r=He(t||Ke());return R(e,{locale:r})}function xe(e){return W(e)}function Ye(e){return B(e)}function Te(e){return A(e)}function Ie(e,t){return e&&t?V(e,t):!e&&!t}function Le(e,t){return e&&t?Q(e,t):!e&&!t}function Fe(e,t){return e&&t?q(e,t):!e&&!t}function Re(e,t){return e&&t?H(e,t):!e&&!t}function We(e,t){return e&&t?K(e,t):!e&&!t}function Ae(e,t,r){var n,o=F(t),a=j(r);try{n=z(e,{start:o,end:a})}catch(e){n=!1}return n}function Be(e,t){var r=\"undefined\"!=typeof window?window:global;r.__localeData__||(r.__localeData__={}),r.__localeData__[e]=t}function je(e){(\"undefined\"!=typeof window?window:global).__localeId__=e}function Ke(){return(\"undefined\"!=typeof window?window:global).__localeId__}function He(e){if(\"string\"==typeof e){var t=\"undefined\"!=typeof window?window:global;return t.__localeData__?t.__localeData__[e]:null}return e}function Qe(e,t){return Se(E(be(),e),\"LLLL\",t)}function Ve(e,t){return Se(E(be(),e),\"LLL\",t)}function qe(e,t){return Se(N(be(),e),\"QQQ\",t)}function Ue(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.maxDate,o=t.excludeDates,a=t.includeDates,s=t.filterDate;return et(e,{minDate:r,maxDate:n})||o&&o.some((function(t){return Re(e,t)}))||a&&!a.some((function(t){return Re(e,t)}))||s&&!s(be(e))||!1}function $e(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeDates;return r&&r.some((function(t){return Re(e,t)}))||!1}function ze(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.maxDate,o=t.excludeDates,a=t.includeDates,s=t.filterDate;return et(e,{minDate:r,maxDate:n})||o&&o.some((function(t){return Le(e,t)}))||a&&!a.some((function(t){return Le(e,t)}))||s&&!s(be(e))||!1}function Ge(e,t,r,n){var o=C(e),a=g(e),s=C(t),p=g(t),i=C(n);return o===s&&o===i?a<=r&&r<=p:o<s?i===o&&a<=r||i===s&&p>=r||i<s&&i>o:void 0}function Je(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.maxDate,o=t.excludeDates,a=t.includeDates,s=t.filterDate;return et(e,{minDate:r,maxDate:n})||o&&o.some((function(t){return Fe(e,t)}))||a&&!a.some((function(t){return Fe(e,t)}))||s&&!s(be(e))||!1}function Xe(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.maxDate,o=new Date(e,0,1);return et(o,{minDate:r,maxDate:n})||!1}function Ze(e,t,r,n){var o=C(e),a=b(e),s=C(t),p=b(t),i=C(n);return o===s&&o===i?a<=r&&r<=p:o<s?i===o&&a<=r||i===s&&p>=r||i<s&&i>o:void 0}function et(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.maxDate;return r&&T(e,r)<0||n&&T(e,n)>0}function tt(e,t){for(var r=t.length,n=0;n<r;n++)if(y(t[n])===y(e)&&v(t[n])===v(e))return!0;return!1}function rt(e,t){var r=t.minTime,n=t.maxTime;if(!r||!n)throw new Error(\"Both minTime and maxTime props required\");var o,a=be(),s=P(M(a,v(e)),y(e)),p=P(M(a,v(r)),y(r)),i=P(M(a,v(n)),y(n));try{o=!z(s,{start:p,end:i})}catch(e){o=!1}return o}function nt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.includeDates,o=h(e,1);return r&&I(r,o)>0||n&&n.every((function(e){return I(e,o)>0}))||!1}function ot(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,n=t.includeDates,o=c(e,1);return r&&I(o,r)>0||n&&n.every((function(e){return I(o,e)>0}))||!1}function at(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.includeDates,o=m(e,1);return r&&L(r,o)>0||n&&n.every((function(e){return L(e,o)>0}))||!1}function st(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,n=t.includeDates,o=l(e,1);return r&&L(o,r)>0||n&&n.every((function(e){return L(o,e)>0}))||!1}function pt(e){var t=e.minDate,r=e.includeDates;if(r&&t){var n=r.filter((function(e){return T(e,t)>=0}));return x(n)}return r?x(r):t}function it(e){var t=e.maxDate,r=e.includeDates;if(r&&t){var n=r.filter((function(e){return T(e,t)<=0}));return Y(n)}return r?Y(r):t}function ct(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--highlighted\",n=new Map,o=0,a=e.length;o<a;o++){var s=e[o];if(r(s)){var p=Se(s,\"MM.dd.yyyy\"),i=n.get(p)||[];i.includes(t)||(i.push(t),n.set(p,i))}else if(\"object\"===oe(s)){var c=Object.keys(s),l=c[0],d=s[c[0]];if(\"string\"==typeof l&&d.constructor===Array)for(var u=0,h=d.length;u<h;u++){var m=Se(d[u],\"MM.dd.yyyy\"),f=n.get(m)||[];f.includes(l)||(f.push(l),n.set(m,f))}}}return n}function lt(e,t,r,n,o){for(var p=o.length,i=[],c=0;c<p;c++){var l=a(s(e,y(o[c])),v(o[c])),d=a(e,(r+1)*n);U(l,t)&&$(l,d)&&i.push(o[c])}return i}function dt(e){return e<10?\"0\".concat(e):\"\".concat(e)}function ut(e){var t=12*Math.ceil(C(e)/12);return{startPeriod:t-11,endPeriod:t}}function ht(e,t,r,n){for(var o=[],a=0;a<2*t+1;a++){var s=e+t-a,p=!0;r&&(p=C(r)<=s),n&&p&&(p=C(n)>=s),p&&o.push(s)}return o}var mt=Z(function(r){ue(o,e.Component);var n=ye(o);function o(t){var r;ae(this,o),ie(fe(r=n.call(this,t)),\"renderOptions\",(function(){var t=r.props.year,n=r.state.yearsList.map((function(n){return e.createElement(\"div\",{className:t===n?\"react-datepicker__year-option react-datepicker__year-option--selected_year\":\"react-datepicker__year-option\",key:n,onClick:r.onChange.bind(fe(r),n)},t===n?e.createElement(\"span\",{className:\"react-datepicker__year-option--selected\"},\"✓\"):\"\",n)})),o=r.props.minDate?C(r.props.minDate):null,a=r.props.maxDate?C(r.props.maxDate):null;return a&&r.state.yearsList.find((function(e){return e===a}))||n.unshift(e.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"upcoming\",onClick:r.incrementYears},e.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming\"}))),o&&r.state.yearsList.find((function(e){return e===o}))||n.push(e.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"previous\",onClick:r.decrementYears},e.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous\"}))),n})),ie(fe(r),\"onChange\",(function(e){r.props.onChange(e)})),ie(fe(r),\"handleClickOutside\",(function(){r.props.onCancel()})),ie(fe(r),\"shiftYears\",(function(e){var t=r.state.yearsList.map((function(t){return t+e}));r.setState({yearsList:t})})),ie(fe(r),\"incrementYears\",(function(){return r.shiftYears(1)})),ie(fe(r),\"decrementYears\",(function(){return r.shiftYears(-1)}));var a=t.yearDropdownItemNumber,s=t.scrollableYearDropdown,p=a||(s?10:5);return r.state={yearsList:ht(r.props.year,p,r.props.minDate,r.props.maxDate)},r}return pe(o,[{key:\"render\",value:function(){var r=t({\"react-datepicker__year-dropdown\":!0,\"react-datepicker__year-dropdown--scrollable\":this.props.scrollableYearDropdown});return e.createElement(\"div\",{className:r},this.renderOptions())}}]),o}()),ft=function(t){ue(n,e.Component);var r=ye(n);function n(){var t;ae(this,n);for(var o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];return ie(fe(t=r.call.apply(r,[this].concat(a))),\"state\",{dropdownVisible:!1}),ie(fe(t),\"renderSelectOptions\",(function(){for(var r=t.props.minDate?C(t.props.minDate):1900,n=t.props.maxDate?C(t.props.maxDate):2100,o=[],a=r;a<=n;a++)o.push(e.createElement(\"option\",{key:a,value:a},a));return o})),ie(fe(t),\"onSelectChange\",(function(e){t.onChange(e.target.value)})),ie(fe(t),\"renderSelectMode\",(function(){return e.createElement(\"select\",{value:t.props.year,className:\"react-datepicker__year-select\",onChange:t.onSelectChange},t.renderSelectOptions())})),ie(fe(t),\"renderReadView\",(function(r){return e.createElement(\"div\",{key:\"read\",style:{visibility:r?\"visible\":\"hidden\"},className:\"react-datepicker__year-read-view\",onClick:function(e){return t.toggleDropdown(e)}},e.createElement(\"span\",{className:\"react-datepicker__year-read-view--down-arrow\"}),e.createElement(\"span\",{className:\"react-datepicker__year-read-view--selected-year\"},t.props.year))})),ie(fe(t),\"renderDropdown\",(function(){return e.createElement(mt,{key:\"dropdown\",year:t.props.year,onChange:t.onChange,onCancel:t.toggleDropdown,minDate:t.props.minDate,maxDate:t.props.maxDate,scrollableYearDropdown:t.props.scrollableYearDropdown,yearDropdownItemNumber:t.props.yearDropdownItemNumber})})),ie(fe(t),\"renderScrollMode\",(function(){var e=t.state.dropdownVisible,r=[t.renderReadView(!e)];return e&&r.unshift(t.renderDropdown()),r})),ie(fe(t),\"onChange\",(function(e){t.toggleDropdown(),e!==t.props.year&&t.props.onChange(e)})),ie(fe(t),\"toggleDropdown\",(function(e){t.setState({dropdownVisible:!t.state.dropdownVisible},(function(){t.props.adjustDateOnChange&&t.handleYearChange(t.props.date,e)}))})),ie(fe(t),\"handleYearChange\",(function(e,r){t.onSelect(e,r),t.setOpen()})),ie(fe(t),\"onSelect\",(function(e,r){t.props.onSelect&&t.props.onSelect(e,r)})),ie(fe(t),\"setOpen\",(function(){t.props.setOpen&&t.props.setOpen(!0)})),t}return pe(n,[{key:\"render\",value:function(){var t;switch(this.props.dropdownMode){case\"scroll\":t=this.renderScrollMode();break;case\"select\":t=this.renderSelectMode()}return e.createElement(\"div\",{className:\"react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--\".concat(this.props.dropdownMode)},t)}}]),n}(),vt=Z(function(t){ue(n,e.Component);var r=ye(n);function n(){var t;ae(this,n);for(var o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];return ie(fe(t=r.call.apply(r,[this].concat(a))),\"renderOptions\",(function(){return t.props.monthNames.map((function(r,n){return e.createElement(\"div\",{className:t.props.month===n?\"react-datepicker__month-option react-datepicker__month-option--selected_month\":\"react-datepicker__month-option\",key:r,onClick:t.onChange.bind(fe(t),n)},t.props.month===n?e.createElement(\"span\",{className:\"react-datepicker__month-option--selected\"},\"✓\"):\"\",r)}))})),ie(fe(t),\"onChange\",(function(e){return t.props.onChange(e)})),ie(fe(t),\"handleClickOutside\",(function(){return t.props.onCancel()})),t}return pe(n,[{key:\"render\",value:function(){return e.createElement(\"div\",{className:\"react-datepicker__month-dropdown\"},this.renderOptions())}}]),n}()),yt=function(t){ue(n,e.Component);var r=ye(n);function n(){var t;ae(this,n);for(var o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];return ie(fe(t=r.call.apply(r,[this].concat(a))),\"state\",{dropdownVisible:!1}),ie(fe(t),\"renderSelectOptions\",(function(t){return t.map((function(t,r){return e.createElement(\"option\",{key:r,value:r},t)}))})),ie(fe(t),\"renderSelectMode\",(function(r){return e.createElement(\"select\",{value:t.props.month,className:\"react-datepicker__month-select\",onChange:function(e){return t.onChange(e.target.value)}},t.renderSelectOptions(r))})),ie(fe(t),\"renderReadView\",(function(r,n){return e.createElement(\"div\",{key:\"read\",style:{visibility:r?\"visible\":\"hidden\"},className:\"react-datepicker__month-read-view\",onClick:t.toggleDropdown},e.createElement(\"span\",{className:\"react-datepicker__month-read-view--down-arrow\"}),e.createElement(\"span\",{className:\"react-datepicker__month-read-view--selected-month\"},n[t.props.month]))})),ie(fe(t),\"renderDropdown\",(function(r){return e.createElement(vt,{key:\"dropdown\",month:t.props.month,monthNames:r,onChange:t.onChange,onCancel:t.toggleDropdown})})),ie(fe(t),\"renderScrollMode\",(function(e){var r=t.state.dropdownVisible,n=[t.renderReadView(!r,e)];return r&&n.unshift(t.renderDropdown(e)),n})),ie(fe(t),\"onChange\",(function(e){t.toggleDropdown(),e!==t.props.month&&t.props.onChange(e)})),ie(fe(t),\"toggleDropdown\",(function(){return t.setState({dropdownVisible:!t.state.dropdownVisible})})),t}return pe(n,[{key:\"render\",value:function(){var t,r=this,n=[0,1,2,3,4,5,6,7,8,9,10,11].map(this.props.useShortMonthInDropdown?function(e){return Ve(e,r.props.locale)}:function(e){return Qe(e,r.props.locale)});switch(this.props.dropdownMode){case\"scroll\":t=this.renderScrollMode(n);break;case\"select\":t=this.renderSelectMode(n)}return e.createElement(\"div\",{className:\"react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--\".concat(this.props.dropdownMode)},t)}}]),n}();function Dt(e,t){for(var r=[],n=xe(e),o=xe(t);!U(n,o);)r.push(be(n)),n=c(n,1);return r}var wt=Z(function(r){ue(o,e.Component);var n=ye(o);function o(t){var r;return ae(this,o),ie(fe(r=n.call(this,t)),\"renderOptions\",(function(){return r.state.monthYearsList.map((function(t){var n=_(t),o=Ie(r.props.date,t)&&Le(r.props.date,t);return e.createElement(\"div\",{className:o?\"react-datepicker__month-year-option --selected_month-year\":\"react-datepicker__month-year-option\",key:n,onClick:r.onChange.bind(fe(r),n)},o?e.createElement(\"span\",{className:\"react-datepicker__month-year-option--selected\"},\"✓\"):\"\",Se(t,r.props.dateFormat))}))})),ie(fe(r),\"onChange\",(function(e){return r.props.onChange(e)})),ie(fe(r),\"handleClickOutside\",(function(){r.props.onCancel()})),r.state={monthYearsList:Dt(r.props.minDate,r.props.maxDate)},r}return pe(o,[{key:\"render\",value:function(){var r=t({\"react-datepicker__month-year-dropdown\":!0,\"react-datepicker__month-year-dropdown--scrollable\":this.props.scrollableMonthYearDropdown});return e.createElement(\"div\",{className:r},this.renderOptions())}}]),o}()),kt=function(t){ue(n,e.Component);var r=ye(n);function n(){var t;ae(this,n);for(var o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];return ie(fe(t=r.call.apply(r,[this].concat(a))),\"state\",{dropdownVisible:!1}),ie(fe(t),\"renderSelectOptions\",(function(){for(var r=xe(t.props.minDate),n=xe(t.props.maxDate),o=[];!U(r,n);){var a=_(r);o.push(e.createElement(\"option\",{key:a,value:a},Se(r,t.props.dateFormat,t.props.locale))),r=c(r,1)}return o})),ie(fe(t),\"onSelectChange\",(function(e){t.onChange(e.target.value)})),ie(fe(t),\"renderSelectMode\",(function(){return e.createElement(\"select\",{value:_(xe(t.props.date)),className:\"react-datepicker__month-year-select\",onChange:t.onSelectChange},t.renderSelectOptions())})),ie(fe(t),\"renderReadView\",(function(r){var n=Se(t.props.date,t.props.dateFormat,t.props.locale);return e.createElement(\"div\",{key:\"read\",style:{visibility:r?\"visible\":\"hidden\"},className:\"react-datepicker__month-year-read-view\",onClick:function(e){return t.toggleDropdown(e)}},e.createElement(\"span\",{className:\"react-datepicker__month-year-read-view--down-arrow\"}),e.createElement(\"span\",{className:\"react-datepicker__month-year-read-view--selected-month-year\"},n))})),ie(fe(t),\"renderDropdown\",(function(){return e.createElement(wt,{key:\"dropdown\",date:t.props.date,dateFormat:t.props.dateFormat,onChange:t.onChange,onCancel:t.toggleDropdown,minDate:t.props.minDate,maxDate:t.props.maxDate,scrollableMonthYearDropdown:t.props.scrollableMonthYearDropdown})})),ie(fe(t),\"renderScrollMode\",(function(){var e=t.state.dropdownVisible,r=[t.renderReadView(!e)];return e&&r.unshift(t.renderDropdown()),r})),ie(fe(t),\"onChange\",(function(e){t.toggleDropdown();var r=be(parseInt(e));Ie(t.props.date,r)&&Le(t.props.date,r)||t.props.onChange(r)})),ie(fe(t),\"toggleDropdown\",(function(){return t.setState({dropdownVisible:!t.state.dropdownVisible})})),t}return pe(n,[{key:\"render\",value:function(){var t;switch(this.props.dropdownMode){case\"scroll\":t=this.renderScrollMode();break;case\"select\":t=this.renderSelectMode()}return e.createElement(\"div\",{className:\"react-datepicker__month-year-dropdown-container react-datepicker__month-year-dropdown-container--\".concat(this.props.dropdownMode)},t)}}]),n}(),gt=function(r){ue(o,e.Component);var n=ye(o);function o(){var r;ae(this,o);for(var a=arguments.length,s=new Array(a),p=0;p<a;p++)s[p]=arguments[p];return ie(fe(r=n.call.apply(n,[this].concat(s))),\"dayEl\",e.createRef()),ie(fe(r),\"handleClick\",(function(e){!r.isDisabled()&&r.props.onClick&&r.props.onClick(e)})),ie(fe(r),\"handleMouseEnter\",(function(e){!r.isDisabled()&&r.props.onMouseEnter&&r.props.onMouseEnter(e)})),ie(fe(r),\"handleOnKeyDown\",(function(e){\" \"===e.key&&(e.preventDefault(),e.key=\"Enter\"),r.props.handleOnKeyDown(e)})),ie(fe(r),\"isSameDay\",(function(e){return Re(r.props.day,e)})),ie(fe(r),\"isKeyboardSelected\",(function(){return!r.props.disabledKeyboardNavigation&&!r.isSameDay(r.props.selected)&&r.isSameDay(r.props.preSelection)})),ie(fe(r),\"isDisabled\",(function(){return Ue(r.props.day,r.props)})),ie(fe(r),\"isExcluded\",(function(){return $e(r.props.day,r.props)})),ie(fe(r),\"getHighLightedClass\",(function(e){var t=r.props,n=t.day,o=t.highlightDates;if(!o)return!1;var a=Se(n,\"MM.dd.yyyy\");return o.get(a)})),ie(fe(r),\"isInRange\",(function(){var e=r.props,t=e.day,n=e.startDate,o=e.endDate;return!(!n||!o)&&Ae(t,n,o)})),ie(fe(r),\"isInSelectingRange\",(function(){var e=r.props,t=e.day,n=e.selectsStart,o=e.selectsEnd,a=e.selectsRange,s=e.selectingDate,p=e.startDate,i=e.endDate;return!(!(n||o||a)||!s||r.isDisabled())&&(n&&i&&($(s,i)||We(s,i))?Ae(t,s,i):(o&&p&&(U(s,p)||We(s,p))||!(!a||!p||i||!U(s,p)&&!We(s,p)))&&Ae(t,p,s))})),ie(fe(r),\"isSelectingRangeStart\",(function(){if(!r.isInSelectingRange())return!1;var e=r.props,t=e.day,n=e.selectingDate,o=e.startDate;return Re(t,e.selectsStart?n:o)})),ie(fe(r),\"isSelectingRangeEnd\",(function(){if(!r.isInSelectingRange())return!1;var e=r.props,t=e.day,n=e.selectingDate,o=e.endDate;return Re(t,e.selectsEnd?n:o)})),ie(fe(r),\"isRangeStart\",(function(){var e=r.props,t=e.day,n=e.startDate,o=e.endDate;return!(!n||!o)&&Re(n,t)})),ie(fe(r),\"isRangeEnd\",(function(){var e=r.props,t=e.day,n=e.startDate,o=e.endDate;return!(!n||!o)&&Re(o,t)})),ie(fe(r),\"isWeekend\",(function(){var e=D(r.props.day);return 0===e||6===e})),ie(fe(r),\"isOutsideMonth\",(function(){return void 0!==r.props.month&&r.props.month!==g(r.props.day)})),ie(fe(r),\"getClassNames\",(function(e){var n=r.props.dayClassName?r.props.dayClassName(e):void 0;return t(\"react-datepicker__day\",n,\"react-datepicker__day--\"+Ee(r.props.day),{\"react-datepicker__day--disabled\":r.isDisabled(),\"react-datepicker__day--excluded\":r.isExcluded(),\"react-datepicker__day--selected\":r.isSameDay(r.props.selected),\"react-datepicker__day--keyboard-selected\":r.isKeyboardSelected(),\"react-datepicker__day--range-start\":r.isRangeStart(),\"react-datepicker__day--range-end\":r.isRangeEnd(),\"react-datepicker__day--in-range\":r.isInRange(),\"react-datepicker__day--in-selecting-range\":r.isInSelectingRange(),\"react-datepicker__day--selecting-range-start\":r.isSelectingRangeStart(),\"react-datepicker__day--selecting-range-end\":r.isSelectingRangeEnd(),\"react-datepicker__day--today\":r.isSameDay(be()),\"react-datepicker__day--weekend\":r.isWeekend(),\"react-datepicker__day--outside-month\":r.isOutsideMonth()},r.getHighLightedClass(\"react-datepicker__day--highlighted\"))})),ie(fe(r),\"getAriaLabel\",(function(){var e=r.props,t=e.day,n=e.ariaLabelPrefixWhenEnabled,o=void 0===n?\"Choose\":n,a=e.ariaLabelPrefixWhenDisabled,s=void 0===a?\"Not available\":a,p=r.isDisabled()||r.isExcluded()?s:o;return\"\".concat(p,\" \").concat(Se(t,\"PPPP\"))})),ie(fe(r),\"getTabIndex\",(function(e,t){var n=e||r.props.selected,o=t||r.props.preSelection;return r.isKeyboardSelected()||r.isSameDay(n)&&Re(o,n)?0:-1})),ie(fe(r),\"handleFocusDay\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=!1;0===r.getTabIndex()&&!e.isInputFocused&&r.isSameDay(r.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(t=!0),r.props.containerRef&&r.props.containerRef.current&&r.props.containerRef.current.contains(document.activeElement)&&document.activeElement.classList.contains(\"react-datepicker__day\")&&(t=!0)),t&&r.dayEl.current.focus({preventScroll:!0})})),ie(fe(r),\"render\",(function(){return e.createElement(\"div\",{ref:r.dayEl,className:r.getClassNames(r.props.day),onKeyDown:r.handleOnKeyDown,onClick:r.handleClick,onMouseEnter:r.handleMouseEnter,tabIndex:r.getTabIndex(),\"aria-label\":r.getAriaLabel(),role:\"button\",\"aria-disabled\":r.isDisabled()},r.props.renderDayContents?r.props.renderDayContents(w(r.props.day),r.props.day):w(r.props.day))})),r}return pe(o,[{key:\"componentDidMount\",value:function(){this.handleFocusDay()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusDay(e)}}]),o}(),bt=function(r){ue(o,e.Component);var n=ye(o);function o(){var e;ae(this,o);for(var t=arguments.length,r=new Array(t),a=0;a<t;a++)r[a]=arguments[a];return ie(fe(e=n.call.apply(n,[this].concat(r))),\"handleClick\",(function(t){e.props.onClick&&e.props.onClick(t)})),e}return pe(o,[{key:\"render\",value:function(){var r=this.props,n=r.weekNumber,o=r.ariaLabelPrefix,a=void 0===o?\"week \":o,s={\"react-datepicker__week-number\":!0,\"react-datepicker__week-number--clickable\":!!r.onClick};return e.createElement(\"div\",{className:t(s),\"aria-label\":\"\".concat(a,\" \").concat(this.props.weekNumber),onClick:this.handleClick},n)}}]),o}(),Ct=function(t){ue(n,e.Component);var r=ye(n);function n(){var t;ae(this,n);for(var o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];return ie(fe(t=r.call.apply(r,[this].concat(a))),\"handleDayClick\",(function(e,r){t.props.onDayClick&&t.props.onDayClick(e,r)})),ie(fe(t),\"handleDayMouseEnter\",(function(e){t.props.onDayMouseEnter&&t.props.onDayMouseEnter(e)})),ie(fe(t),\"handleWeekClick\",(function(e,r,n){\"function\"==typeof t.props.onWeekSelect&&t.props.onWeekSelect(e,r,n),t.props.shouldCloseOnSelect&&t.props.setOpen(!1)})),ie(fe(t),\"formatWeekNumber\",(function(e){return t.props.formatWeekNumber?t.props.formatWeekNumber(e):Pe(e,t.props.locale)})),ie(fe(t),\"renderDays\",(function(){var r=Oe(t.props.day,t.props.locale),n=[],o=t.formatWeekNumber(r);if(t.props.showWeekNumber){var a=t.props.onWeekSelect?t.handleWeekClick.bind(fe(t),r,o):void 0;n.push(e.createElement(bt,{key:\"W\",weekNumber:o,onClick:a,ariaLabelPrefix:t.props.ariaLabelPrefix}))}return n.concat([0,1,2,3,4,5,6].map((function(n){var o=p(r,n);return e.createElement(gt,{ariaLabelPrefixWhenEnabled:t.props.chooseDayAriaLabelPrefix,ariaLabelPrefixWhenDisabled:t.props.disabledDayAriaLabelPrefix,key:o.valueOf(),day:o,month:t.props.month,onClick:t.handleDayClick.bind(fe(t),o),onMouseEnter:t.handleDayMouseEnter.bind(fe(t),o),minDate:t.props.minDate,maxDate:t.props.maxDate,excludeDates:t.props.excludeDates,includeDates:t.props.includeDates,highlightDates:t.props.highlightDates,selectingDate:t.props.selectingDate,filterDate:t.props.filterDate,preSelection:t.props.preSelection,selected:t.props.selected,selectsStart:t.props.selectsStart,selectsEnd:t.props.selectsEnd,selectsRange:t.props.selectsRange,startDate:t.props.startDate,endDate:t.props.endDate,dayClassName:t.props.dayClassName,renderDayContents:t.props.renderDayContents,disabledKeyboardNavigation:t.props.disabledKeyboardNavigation,handleOnKeyDown:t.props.handleOnKeyDown,isInputFocused:t.props.isInputFocused,containerRef:t.props.containerRef})})))})),t}return pe(n,[{key:\"render\",value:function(){return e.createElement(\"div\",{className:\"react-datepicker__week\"},this.renderDays())}}],[{key:\"defaultProps\",get:function(){return{shouldCloseOnSelect:!0}}}]),n}(),_t=function(r){ue(o,e.Component);var n=ye(o);function o(){var r;ae(this,o);for(var a=arguments.length,s=new Array(a),c=0;c<a;c++)s[c]=arguments[c];return ie(fe(r=n.call.apply(n,[this].concat(s))),\"handleDayClick\",(function(e,t){r.props.onDayClick&&r.props.onDayClick(e,t,r.props.orderInDisplay)})),ie(fe(r),\"handleDayMouseEnter\",(function(e){r.props.onDayMouseEnter&&r.props.onDayMouseEnter(e)})),ie(fe(r),\"handleMouseLeave\",(function(){r.props.onMouseLeave&&r.props.onMouseLeave()})),ie(fe(r),\"isRangeStartMonth\",(function(e){var t=r.props,n=t.day,o=t.startDate,a=t.endDate;return!(!o||!a)&&Le(E(n,e),o)})),ie(fe(r),\"isRangeStartQuarter\",(function(e){var t=r.props,n=t.day,o=t.startDate,a=t.endDate;return!(!o||!a)&&Fe(N(n,e),o)})),ie(fe(r),\"isRangeEndMonth\",(function(e){var t=r.props,n=t.day,o=t.startDate,a=t.endDate;return!(!o||!a)&&Le(E(n,e),a)})),ie(fe(r),\"isRangeEndQuarter\",(function(e){var t=r.props,n=t.day,o=t.startDate,a=t.endDate;return!(!o||!a)&&Fe(N(n,e),a)})),ie(fe(r),\"isWeekInMonth\",(function(e){var t=r.props.day,n=p(e,6);return Le(e,t)||Le(n,t)})),ie(fe(r),\"renderWeeks\",(function(){for(var t=[],n=r.props.fixedHeight,o=Oe(xe(r.props.day),r.props.locale),a=0,s=!1;t.push(e.createElement(Ct,{ariaLabelPrefix:r.props.weekAriaLabelPrefix,chooseDayAriaLabelPrefix:r.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:r.props.disabledDayAriaLabelPrefix,key:a,day:o,month:g(r.props.day),onDayClick:r.handleDayClick,onDayMouseEnter:r.handleDayMouseEnter,onWeekSelect:r.props.onWeekSelect,formatWeekNumber:r.props.formatWeekNumber,locale:r.props.locale,minDate:r.props.minDate,maxDate:r.props.maxDate,excludeDates:r.props.excludeDates,includeDates:r.props.includeDates,highlightDates:r.props.highlightDates,selectingDate:r.props.selectingDate,filterDate:r.props.filterDate,preSelection:r.props.preSelection,selected:r.props.selected,selectsStart:r.props.selectsStart,selectsEnd:r.props.selectsEnd,selectsRange:r.props.selectsRange,showWeekNumber:r.props.showWeekNumbers,startDate:r.props.startDate,endDate:r.props.endDate,dayClassName:r.props.dayClassName,setOpen:r.props.setOpen,shouldCloseOnSelect:r.props.shouldCloseOnSelect,disabledKeyboardNavigation:r.props.disabledKeyboardNavigation,renderDayContents:r.props.renderDayContents,handleOnKeyDown:r.props.handleOnKeyDown,isInputFocused:r.props.isInputFocused,containerRef:r.props.containerRef})),!s;){a++,o=i(o,1);var p=n&&a>=6,c=!n&&!r.isWeekInMonth(o);if(p||c){if(!r.props.peekNextMonth)break;s=!0}}return t})),ie(fe(r),\"onMonthClick\",(function(e,t){r.handleDayClick(xe(E(r.props.day,t)),e)})),ie(fe(r),\"onQuarterClick\",(function(e,t){r.handleDayClick(Te(N(r.props.day,t)),e)})),ie(fe(r),\"getMonthClassNames\",(function(e){var n=r.props,o=n.day,a=n.startDate,s=n.endDate,p=n.selected,i=n.minDate,c=n.maxDate;return t(\"react-datepicker__month-text\",\"react-datepicker__month-\".concat(e),{\"react-datepicker__month--disabled\":(i||c)&&ze(E(o,e),r.props),\"react-datepicker__month--selected\":g(o)===e&&C(o)===C(p),\"react-datepicker__month--in-range\":Ge(a,s,e,o),\"react-datepicker__month--range-start\":r.isRangeStartMonth(e),\"react-datepicker__month--range-end\":r.isRangeEndMonth(e)})})),ie(fe(r),\"getQuarterClassNames\",(function(e){var n=r.props,o=n.day,a=n.startDate,s=n.endDate,p=n.selected,i=n.minDate,c=n.maxDate;return t(\"react-datepicker__quarter-text\",\"react-datepicker__quarter-\".concat(e),{\"react-datepicker__quarter--disabled\":(i||c)&&Je(N(o,e),r.props),\"react-datepicker__quarter--selected\":b(o)===e&&C(o)===C(p),\"react-datepicker__quarter--in-range\":Ze(a,s,e,o),\"react-datepicker__quarter--range-start\":r.isRangeStartQuarter(e),\"react-datepicker__quarter--range-end\":r.isRangeEndQuarter(e)})})),ie(fe(r),\"renderMonths\",(function(){var t=r.props,n=t.showFullMonthYearPicker,o=t.showTwoColumnMonthYearPicker,a=t.locale;return(o?[[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]]:[[0,1,2],[3,4,5],[6,7,8],[9,10,11]]).map((function(t,o){return e.createElement(\"div\",{className:\"react-datepicker__month-wrapper\",key:o},t.map((function(t,o){return e.createElement(\"div\",{key:o,onClick:function(e){r.onMonthClick(e,t)},className:r.getMonthClassNames(t)},n?Qe(t,a):Ve(t,a))})))}))})),ie(fe(r),\"renderQuarters\",(function(){return e.createElement(\"div\",{className:\"react-datepicker__quarter-wrapper\"},[1,2,3,4].map((function(t,n){return e.createElement(\"div\",{key:n,onClick:function(e){r.onQuarterClick(e,t)},className:r.getQuarterClassNames(t)},qe(t,r.props.locale))})))})),ie(fe(r),\"getClassNames\",(function(){var e=r.props,n=e.selectingDate,o=e.selectsStart,a=e.selectsEnd,s=e.showMonthYearPicker,p=e.showQuarterYearPicker;return t(\"react-datepicker__month\",{\"react-datepicker__month--selecting-range\":n&&(o||a)},{\"react-datepicker__monthPicker\":s},{\"react-datepicker__quarterPicker\":p})})),r}return pe(o,[{key:\"render\",value:function(){var t=this.props,r=t.showMonthYearPicker,n=t.showQuarterYearPicker,o=t.day,a=t.ariaLabelPrefix,s=void 0===a?\"month \":a;return e.createElement(\"div\",{className:this.getClassNames(),onMouseLeave:this.handleMouseLeave,\"aria-label\":\"\".concat(s,\" \").concat(Se(o,\"yyyy-MM\"))},r?this.renderMonths():n?this.renderQuarters():this.renderWeeks())}}]),o}(),St=function(t){ue(n,e.Component);var r=ye(n);function n(){var t;ae(this,n);for(var o=arguments.length,s=new Array(o),p=0;p<o;p++)s[p]=arguments[p];return ie(fe(t=r.call.apply(r,[this].concat(s))),\"state\",{height:null}),ie(fe(t),\"handleClick\",(function(e){(t.props.minTime||t.props.maxTime)&&rt(e,t.props)||t.props.excludeTimes&&tt(e,t.props.excludeTimes)||t.props.includeTimes&&!tt(e,t.props.includeTimes)||t.props.onChange(e)})),ie(fe(t),\"liClasses\",(function(e,r,n){var o=[\"react-datepicker__time-list-item\",t.props.timeClassName?t.props.timeClassName(e,r,n):void 0];return t.props.selected&&r===y(e)&&n===v(e)&&o.push(\"react-datepicker__time-list-item--selected\"),((t.props.minTime||t.props.maxTime)&&rt(e,t.props)||t.props.excludeTimes&&tt(e,t.props.excludeTimes)||t.props.includeTimes&&!tt(e,t.props.includeTimes))&&o.push(\"react-datepicker__time-list-item--disabled\"),t.props.injectTimes&&(60*y(e)+v(e))%t.props.intervals!=0&&o.push(\"react-datepicker__time-list-item--injected\"),o.join(\" \")})),ie(fe(t),\"renderTimes\",(function(){for(var r=[],n=t.props.format?t.props.format:\"p\",o=t.props.intervals,s=t.props.selected||t.props.openToDate||be(),p=y(s),i=v(s),c=Ne(be()),l=1440/o,d=t.props.injectTimes&&t.props.injectTimes.sort((function(e,t){return e-t})),u=[],h=0;h<l;h++){var m=a(c,h*o);if(r.push(m),d){var f=lt(c,m,h,o,d);r=r.concat(f)}p===y(m)&&u.push(m)}return r.map((function(r,o){return e.createElement(\"li\",{key:o,onClick:t.handleClick.bind(fe(t),r),className:t.liClasses(r,p,i),ref:function(e){p===y(r)&&(i>=v(r)?t.centerLi=e:t.centerLi||u.indexOf(r)!==u.length-1||(t.centerLi=e))}},Se(r,n,t.props.locale))}))})),t}return pe(n,[{key:\"componentDidMount\",value:function(){this.list.scrollTop=n.calcCenterPosition(this.props.monthRef?this.props.monthRef.clientHeight-this.header.clientHeight:this.list.clientHeight,this.centerLi),this.props.monthRef&&this.header&&this.setState({height:this.props.monthRef.clientHeight-this.header.clientHeight})}},{key:\"render\",value:function(){var t=this,r=this.state.height;return e.createElement(\"div\",{className:\"react-datepicker__time-container \".concat(this.props.todayButton?\"react-datepicker__time-container--with-today-button\":\"\")},e.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--time\",ref:function(e){t.header=e}},e.createElement(\"div\",{className:\"react-datepicker-time__header\"},this.props.timeCaption)),e.createElement(\"div\",{className:\"react-datepicker__time\"},e.createElement(\"div\",{className:\"react-datepicker__time-box\"},e.createElement(\"ul\",{className:\"react-datepicker__time-list\",ref:function(e){t.list=e},style:r?{height:r}:{}},this.renderTimes()))))}}],[{key:\"defaultProps\",get:function(){return{intervals:30,onTimeChange:function(){},todayButton:null,timeCaption:\"Time\"}}}]),n}();ie(St,\"calcCenterPosition\",(function(e,t){return t.offsetTop-(e/2-t.clientHeight/2)}));var Mt=function(r){ue(o,e.Component);var n=ye(o);function o(e){var r;return ae(this,o),ie(fe(r=n.call(this,e)),\"handleYearClick\",(function(e,t){r.props.onDayClick&&r.props.onDayClick(e,t)})),ie(fe(r),\"isSameDay\",(function(e,t){return Re(e,t)})),ie(fe(r),\"isKeyboardSelected\",(function(e){var t=Ye(O(r.props.date,e));return!r.props.disabledKeyboardNavigation&&!r.props.inline&&!Re(t,Ye(r.props.selected))&&Re(t,Ye(r.props.preSelection))})),ie(fe(r),\"onYearClick\",(function(e,t){var n=r.props.date;r.handleYearClick(Ye(O(n,t)),e)})),ie(fe(r),\"getYearClassNames\",(function(e){var n=r.props,o=n.minDate,a=n.maxDate,s=n.selected;return t(\"react-datepicker__year-text\",{\"react-datepicker__year-text--selected\":e===C(s),\"react-datepicker__year-text--disabled\":(o||a)&&Xe(e,r.props),\"react-datepicker__year-text--keyboard-selected\":r.isKeyboardSelected(e)})})),r}return pe(o,[{key:\"render\",value:function(){for(var t=this,r=[],n=ut(this.props.date),o=n.startPeriod,a=n.endPeriod,s=function(n){r.push(e.createElement(\"div\",{onClick:function(e){t.onYearClick(e,n)},className:t.getYearClassNames(n),key:n},n))},p=o;p<=a;p++)s(p);return e.createElement(\"div\",{className:\"react-datepicker__year\"},e.createElement(\"div\",{className:\"react-datepicker__year-wrapper\"},r))}}]),o}(),Pt=function(t){ue(n,e.Component);var r=ye(n);function n(t){var o;return ae(this,n),ie(fe(o=r.call(this,t)),\"onTimeChange\",(function(e){o.setState({time:e});var t=new Date;t.setHours(e.split(\":\")[0]),t.setMinutes(e.split(\":\")[1]),o.props.onChange(t)})),ie(fe(o),\"renderTimeInput\",(function(){var t=o.state.time,r=o.props,n=r.timeString,a=r.customTimeInput;return a?e.cloneElement(a,{value:t,onChange:o.onTimeChange}):e.createElement(\"input\",{type:\"time\",className:\"react-datepicker-time__input\",placeholder:\"Time\",name:\"time-input\",required:!0,value:t,onChange:function(e){o.onTimeChange(e.target.value||n)}})})),o.state={time:o.props.timeString},o}return pe(n,[{key:\"render\",value:function(){return e.createElement(\"div\",{className:\"react-datepicker__input-time-container\"},e.createElement(\"div\",{className:\"react-datepicker-time__caption\"},this.props.timeInputLabel),e.createElement(\"div\",{className:\"react-datepicker-time__input-container\"},e.createElement(\"div\",{className:\"react-datepicker-time__input\"},this.renderTimeInput())))}}]),n}();function Et(t){var r=t.className,n=t.children,o=t.showPopperArrow,a=t.arrowProps,s=void 0===a?{}:a;return e.createElement(\"div\",{className:r},o&&e.createElement(\"div\",ce({className:\"react-datepicker__triangle\"},s)),n)}var Nt=[\"react-datepicker__year-select\",\"react-datepicker__month-select\",\"react-datepicker__month-year-select\"],Ot=function(r){ue(o,e.Component);var n=ye(o);function o(r){var a;return ae(this,o),ie(fe(a=n.call(this,r)),\"handleClickOutside\",(function(e){a.props.onClickOutside(e)})),ie(fe(a),\"setClickOutsideRef\",(function(){return a.containerRef.current})),ie(fe(a),\"handleDropdownFocus\",(function(e){(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(e.className||\"\").split(/\\s+/);return Nt.some((function(e){return t.indexOf(e)>=0}))})(e.target)&&a.props.onDropdownFocus()})),ie(fe(a),\"getDateInView\",(function(){var e=a.props,t=e.preSelection,r=e.selected,n=e.openToDate,o=pt(a.props),s=it(a.props),p=be(),i=n||r||t;return i||(o&&$(p,o)?o:s&&U(p,s)?s:p)})),ie(fe(a),\"increaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:c(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),ie(fe(a),\"decreaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:h(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),ie(fe(a),\"handleDayClick\",(function(e,t,r){return a.props.onSelect(e,t,r)})),ie(fe(a),\"handleDayMouseEnter\",(function(e){a.setState({selectingDate:e}),a.props.onDayMouseEnter&&a.props.onDayMouseEnter(e)})),ie(fe(a),\"handleMonthMouseLeave\",(function(){a.setState({selectingDate:null}),a.props.onMonthMouseLeave&&a.props.onMonthMouseLeave()})),ie(fe(a),\"handleYearChange\",(function(e){a.props.onYearChange&&a.props.onYearChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),ie(fe(a),\"handleMonthChange\",(function(e){a.props.onMonthChange&&a.props.onMonthChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),ie(fe(a),\"handleMonthYearChange\",(function(e){a.handleYearChange(e),a.handleMonthChange(e)})),ie(fe(a),\"changeYear\",(function(e){a.setState((function(t){var r=t.date;return{date:O(r,e)}}),(function(){return a.handleYearChange(a.state.date)}))})),ie(fe(a),\"changeMonth\",(function(e){a.setState((function(t){var r=t.date;return{date:E(r,e)}}),(function(){return a.handleMonthChange(a.state.date)}))})),ie(fe(a),\"changeMonthYear\",(function(e){a.setState((function(t){var r=t.date;return{date:O(E(r,g(e)),C(e))}}),(function(){return a.handleMonthYearChange(a.state.date)}))})),ie(fe(a),\"header\",(function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,n=Oe(r,a.props.locale),o=[];return a.props.showWeekNumbers&&o.push(e.createElement(\"div\",{key:\"W\",className:\"react-datepicker__day-name\"},a.props.weekLabel||\"#\")),o.concat([0,1,2,3,4,5,6].map((function(r){var o=p(n,r),s=a.formatWeekday(o,a.props.locale),i=a.props.weekDayClassName?a.props.weekDayClassName(o):void 0;return e.createElement(\"div\",{key:r,className:t(\"react-datepicker__day-name\",i)},s)})))})),ie(fe(a),\"formatWeekday\",(function(e,t){return a.props.formatWeekDay?function(e,t,r){return t(Se(e,\"EEEE\",r))}(e,a.props.formatWeekDay,t):a.props.useWeekdaysShort?function(e,t){return Se(e,\"EEE\",t)}(e,t):function(e,t){return Se(e,\"EEEEEE\",t)}(e,t)})),ie(fe(a),\"decreaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:m(t,a.props.showYearPicker?12:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),ie(fe(a),\"renderPreviousButton\",(function(){if(!a.props.renderCustomHeader){var t;switch(!0){case a.props.showMonthYearPicker:t=at(a.state.date,a.props);break;case a.props.showYearPicker:t=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=Ye(m(e,12)),o=ut(n),a=o.startPeriod,s=o.endPeriod,p=r&&C(r);return p&&(p<a||p>s)||!1}(a.state.date,a.props);break;default:t=nt(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!t)&&!a.props.showTimeSelectOnly){var r=[\"react-datepicker__navigation\",\"react-datepicker__navigation--previous\"],n=a.decreaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(n=a.decreaseYear),t&&a.props.showDisabledMonthNavigation&&(r.push(\"react-datepicker__navigation--previous--disabled\"),n=null);var o=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,s=a.props,p=s.previousMonthAriaLabel,i=void 0===p?\"Previous Month\":p,c=s.previousYearAriaLabel,l=void 0===c?\"Previous Year\":c;return e.createElement(\"button\",{type:\"button\",className:r.join(\" \"),onClick:n,\"aria-label\":o?l:i},o?a.props.previousYearButtonLabel:a.props.previousMonthButtonLabel)}}})),ie(fe(a),\"increaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:l(t,a.props.showYearPicker?12:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),ie(fe(a),\"renderNextButton\",(function(){if(!a.props.renderCustomHeader){var t;switch(!0){case a.props.showMonthYearPicker:t=st(a.state.date,a.props);break;case a.props.showYearPicker:t=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,n=l(e,12),o=ut(n),a=o.startPeriod,s=o.endPeriod,p=r&&C(r);return p&&(p<a||p>s)||!1}(a.state.date,a.props);break;default:t=ot(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!t)&&!a.props.showTimeSelectOnly){var r=[\"react-datepicker__navigation\",\"react-datepicker__navigation--next\"];a.props.showTimeSelect&&r.push(\"react-datepicker__navigation--next--with-time\"),a.props.todayButton&&r.push(\"react-datepicker__navigation--next--with-today-button\");var n=a.increaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(n=a.increaseYear),t&&a.props.showDisabledMonthNavigation&&(r.push(\"react-datepicker__navigation--next--disabled\"),n=null);var o=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,s=a.props,p=s.nextMonthAriaLabel,i=void 0===p?\"Next Month\":p,c=s.nextYearAriaLabel,d=void 0===c?\"Next Year\":c;return e.createElement(\"button\",{type:\"button\",className:r.join(\" \"),onClick:n,\"aria-label\":o?d:i},o?a.props.nextYearButtonLabel:a.props.nextMonthButtonLabel)}}})),ie(fe(a),\"renderCurrentMonth\",(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,r=[\"react-datepicker__current-month\"];return a.props.showYearDropdown&&r.push(\"react-datepicker__current-month--hasYearDropdown\"),a.props.showMonthDropdown&&r.push(\"react-datepicker__current-month--hasMonthDropdown\"),a.props.showMonthYearDropdown&&r.push(\"react-datepicker__current-month--hasMonthYearDropdown\"),e.createElement(\"div\",{className:r.join(\" \")},Se(t,a.props.dateFormat,a.props.locale))})),ie(fe(a),\"renderYearDropdown\",(function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showYearDropdown&&!t)return e.createElement(ft,{adjustDateOnChange:a.props.adjustDateOnChange,date:a.state.date,onSelect:a.props.onSelect,setOpen:a.props.setOpen,dropdownMode:a.props.dropdownMode,onChange:a.changeYear,minDate:a.props.minDate,maxDate:a.props.maxDate,year:C(a.state.date),scrollableYearDropdown:a.props.scrollableYearDropdown,yearDropdownItemNumber:a.props.yearDropdownItemNumber})})),ie(fe(a),\"renderMonthDropdown\",(function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthDropdown&&!t)return e.createElement(yt,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,onChange:a.changeMonth,month:g(a.state.date),useShortMonthInDropdown:a.props.useShortMonthInDropdown})})),ie(fe(a),\"renderMonthYearDropdown\",(function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthYearDropdown&&!t)return e.createElement(kt,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,dateFormat:a.props.dateFormat,onChange:a.changeMonthYear,minDate:a.props.minDate,maxDate:a.props.maxDate,date:a.state.date,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown})})),ie(fe(a),\"renderTodayButton\",(function(){if(a.props.todayButton&&!a.props.showTimeSelectOnly)return e.createElement(\"div\",{className:\"react-datepicker__today-button\",onClick:function(e){return a.props.onSelect(F(be()),e)}},a.props.todayButton)})),ie(fe(a),\"renderDefaultHeader\",(function(t){var r=t.monthDate,n=t.i;return e.createElement(\"div\",{className:\"react-datepicker__header\"},a.renderCurrentMonth(r),e.createElement(\"div\",{className:\"react-datepicker__header__dropdown react-datepicker__header__dropdown--\".concat(a.props.dropdownMode),onFocus:a.handleDropdownFocus},a.renderMonthDropdown(0!==n),a.renderMonthYearDropdown(0!==n),a.renderYearDropdown(0!==n)),e.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(r)))})),ie(fe(a),\"renderCustomHeader\",(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.monthDate,n=t.i;if(0!==n&&void 0!==n)return null;var o=nt(a.state.date,a.props),s=ot(a.state.date,a.props),p=at(a.state.date,a.props),i=st(a.state.date,a.props),c=!a.props.showMonthYearPicker&&!a.props.showQuarterYearPicker&&!a.props.showYearPicker;return e.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--custom\",onFocus:a.props.onDropdownFocus},a.props.renderCustomHeader(de(de({},a.state),{},{changeMonth:a.changeMonth,changeYear:a.changeYear,decreaseMonth:a.decreaseMonth,increaseMonth:a.increaseMonth,decreaseYear:a.decreaseYear,increaseYear:a.increaseYear,prevMonthButtonDisabled:o,nextMonthButtonDisabled:s,prevYearButtonDisabled:p,nextYearButtonDisabled:i})),c&&e.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(r)))})),ie(fe(a),\"renderYearHeader\",(function(){var t=a.state.date,r=a.props.showYearPicker,n=ut(t),o=n.startPeriod,s=n.endPeriod;return e.createElement(\"div\",{className:\"react-datepicker__header react-datepicker-year-header\"},r?\"\".concat(o,\" - \").concat(s):C(t))})),ie(fe(a),\"renderHeader\",(function(e){switch(!0){case void 0!==a.props.renderCustomHeader:return a.renderCustomHeader(e);case a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker:return a.renderYearHeader(e);default:return a.renderDefaultHeader(e)}})),ie(fe(a),\"renderMonths\",(function(){if(!a.props.showTimeSelectOnly&&!a.props.showYearPicker){for(var t=[],r=a.props.showPreviousMonths?a.props.monthsShown-1:0,n=h(a.state.date,r),o=0;o<a.props.monthsShown;++o){var s=o-a.props.monthSelectedIn,p=c(n,s),i=\"month-\".concat(o);t.push(e.createElement(\"div\",{key:i,ref:function(e){a.monthContainer=e},className:\"react-datepicker__month-container\"},a.renderHeader({monthDate:p,i:o}),e.createElement(_t,{chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,onChange:a.changeMonthYear,day:p,dayClassName:a.props.dayClassName,monthClassName:a.props.monthClassName,onDayClick:a.handleDayClick,handleOnKeyDown:a.props.handleOnKeyDown,onDayMouseEnter:a.handleDayMouseEnter,onMouseLeave:a.handleMonthMouseLeave,onWeekSelect:a.props.onWeekSelect,orderInDisplay:o,formatWeekNumber:a.props.formatWeekNumber,locale:a.props.locale,minDate:a.props.minDate,maxDate:a.props.maxDate,excludeDates:a.props.excludeDates,highlightDates:a.props.highlightDates,selectingDate:a.state.selectingDate,includeDates:a.props.includeDates,fixedHeight:a.props.fixedHeight,filterDate:a.props.filterDate,preSelection:a.props.preSelection,selected:a.props.selected,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,showWeekNumbers:a.props.showWeekNumbers,startDate:a.props.startDate,endDate:a.props.endDate,peekNextMonth:a.props.peekNextMonth,setOpen:a.props.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,renderDayContents:a.props.renderDayContents,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,isInputFocused:a.props.isInputFocused,containerRef:a.containerRef})))}return t}})),ie(fe(a),\"renderYears\",(function(){if(!a.props.showTimeSelectOnly)return a.props.showYearPicker?e.createElement(\"div\",{className:\"react-datepicker__year--container\"},a.renderHeader(),e.createElement(Mt,ce({onDayClick:a.handleDayClick,date:a.state.date},a.props))):void 0})),ie(fe(a),\"renderTimeSection\",(function(){if(a.props.showTimeSelect&&(a.state.monthContainer||a.props.showTimeSelectOnly))return e.createElement(St,{selected:a.props.selected,openToDate:a.props.openToDate,onChange:a.props.onTimeChange,timeClassName:a.props.timeClassName,format:a.props.timeFormat,includeTimes:a.props.includeTimes,intervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,timeCaption:a.props.timeCaption,todayButton:a.props.todayButton,showMonthDropdown:a.props.showMonthDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,monthRef:a.state.monthContainer,injectTimes:a.props.injectTimes,locale:a.props.locale})})),ie(fe(a),\"renderInputTimeSection\",(function(){var t=new Date(a.props.selected),r=_e(t)&&Boolean(a.props.selected)?\"\".concat(dt(t.getHours()),\":\").concat(dt(t.getMinutes())):\"\";if(a.props.showTimeInput)return e.createElement(Pt,{timeString:r,timeInputLabel:a.props.timeInputLabel,onChange:a.props.onTimeChange,customTimeInput:a.props.customTimeInput})})),a.containerRef=e.createRef(),a.state={date:a.getDateInView(),selectingDate:null,monthContainer:null},a}return pe(o,null,[{key:\"defaultProps\",get:function(){return{onDropdownFocus:function(){},monthsShown:1,monthSelectedIn:0,forceShowMonthNavigation:!1,timeCaption:\"Time\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",customTimeInput:null}}}]),pe(o,[{key:\"componentDidMount\",value:function(){var e=this;this.props.showTimeSelect&&(this.assignMonthContainer=void e.setState({monthContainer:e.monthContainer}))}},{key:\"componentDidUpdate\",value:function(e){this.props.preSelection&&!Re(this.props.preSelection,e.preSelection)?this.setState({date:this.props.preSelection}):this.props.openToDate&&!Re(this.props.openToDate,e.openToDate)&&this.setState({date:this.props.openToDate})}},{key:\"render\",value:function(){var r=this.props.container||Et;return e.createElement(\"div\",{ref:this.containerRef},e.createElement(r,{className:t(\"react-datepicker\",this.props.className,{\"react-datepicker--time-only\":this.props.showTimeSelectOnly}),showPopperArrow:this.props.showPopperArrow,arrowProps:this.props.arrowProps},this.renderPreviousButton(),this.renderNextButton(),this.renderMonths(),this.renderYears(),this.renderTodayButton(),this.renderTimeSection(),this.renderInputTimeSection(),this.props.children))}}]),o}(),xt=function(e){return!e.disabled&&-1!==e.tabIndex},Yt=function(t){ue(n,e.Component);var r=ye(n);function n(t){var o;return ae(this,n),ie(fe(o=r.call(this,t)),\"getTabChildren\",(function(){return Array.prototype.slice.call(o.tabLoopRef.current.querySelectorAll(\"[tabindex], a, button, input, select, textarea\"),1,-1).filter(xt)})),ie(fe(o),\"handleFocusStart\",(function(e){var t=o.getTabChildren();t&&t.length>1&&t[t.length-1].focus()})),ie(fe(o),\"handleFocusEnd\",(function(e){var t=o.getTabChildren();t&&t.length>1&&t[0].focus()})),o.tabLoopRef=e.createRef(),o}return pe(n,null,[{key:\"defaultProps\",get:function(){return{enableTabLoop:!0}}}]),pe(n,[{key:\"render\",value:function(){return this.props.enableTabLoop?e.createElement(\"div\",{className:\"react-datepicker__tab-loop\",ref:this.tabLoopRef},e.createElement(\"div\",{className:\"react-datepicker__tab-loop__start\",tabIndex:\"0\",onFocus:this.handleFocusStart}),this.props.children,e.createElement(\"div\",{className:\"react-datepicker__tab-loop__end\",tabIndex:\"0\",onFocus:this.handleFocusEnd})):this.props.children}}]),n}(),Tt=function(t){ue(n,e.Component);var r=ye(n);function n(e){var t;return ae(this,n),(t=r.call(this,e)).el=document.createElement(\"div\"),t}return pe(n,[{key:\"componentDidMount\",value:function(){this.portalRoot=document.getElementById(this.props.portalId),this.portalRoot||(this.portalRoot=document.createElement(\"div\"),this.portalRoot.setAttribute(\"id\",this.props.portalId),document.body.appendChild(this.portalRoot)),this.portalRoot.appendChild(this.el)}},{key:\"componentWillUnmount\",value:function(){this.portalRoot.removeChild(this.el)}},{key:\"render\",value:function(){return ne.createPortal(this.props.children,this.el)}}]),n}(),It=function(r){ue(o,e.Component);var n=ye(o);function o(){return ae(this,o),n.apply(this,arguments)}return pe(o,[{key:\"render\",value:function(){var r,n=this.props,o=n.className,a=n.wrapperClassName,s=n.hidePopper,p=n.popperComponent,i=n.popperModifiers,c=n.popperPlacement,l=n.popperProps,d=n.targetComponent,u=n.enableTabLoop,h=n.popperOnKeyDown,m=n.portalId;if(!s){var f=t(\"react-datepicker-popper\",o);r=e.createElement(ee,ce({modifiers:i,placement:c},l),(function(t){var r=t.ref,n=t.style,o=t.placement,a=t.arrowProps;return e.createElement(Yt,{enableTabLoop:u},e.createElement(\"div\",ce({ref:r,style:n},{className:f,\"data-placement\":o,onKeyDown:h}),e.cloneElement(p,{arrowProps:a})))}))}this.props.popperContainer&&(r=e.createElement(this.props.popperContainer,{},r)),m&&!s&&(r=e.createElement(Tt,{portalId:m},r));var v=t(\"react-datepicker-wrapper\",a);return e.createElement(te,{className:\"react-datepicker-manager\"},e.createElement(re,null,(function(t){var r=t.ref;return e.createElement(\"div\",{ref:r,className:v},d)})),r)}}],[{key:\"defaultProps\",get:function(){return{hidePopper:!0,popperModifiers:{preventOverflow:{enabled:!0,escapeWithReference:!0,boundariesElement:\"viewport\"}},popperProps:{},popperPlacement:\"bottom-start\"}}}]),o}(),Lt=Z(Ot);var Ft=function(n){ue(a,e.Component);var o=ye(a);function a(n){var s;return ae(this,a),ie(fe(s=o.call(this,n)),\"getPreSelection\",(function(){return s.props.openToDate?s.props.openToDate:s.props.selectsEnd&&s.props.startDate?s.props.startDate:s.props.selectsStart&&s.props.endDate?s.props.endDate:be()})),ie(fe(s),\"calcInitialState\",(function(){var e=s.getPreSelection(),t=pt(s.props),r=it(s.props),n=t&&$(e,t)?t:r&&U(e,r)?r:e;return{open:s.props.startOpen||!1,preventFocus:!1,preSelection:s.props.selected?s.props.selected:n,highlightDates:ct(s.props.highlightDates),focused:!1}})),ie(fe(s),\"clearPreventFocusTimeout\",(function(){s.preventFocusTimeout&&clearTimeout(s.preventFocusTimeout)})),ie(fe(s),\"setFocus\",(function(){s.input&&s.input.focus&&s.input.focus({preventScroll:!0})})),ie(fe(s),\"setBlur\",(function(){s.input&&s.input.blur&&s.input.blur(),s.cancelFocusInput()})),ie(fe(s),\"setOpen\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];s.setState({open:e,preSelection:e&&s.state.open?s.state.preSelection:s.calcInitialState().preSelection,lastPreSelectChange:Wt},(function(){e||s.setState((function(e){return{focused:!!t&&e.focused}}),(function(){!t&&s.setBlur(),s.setState({inputValue:null})}))}))})),ie(fe(s),\"inputOk\",(function(){return r(s.state.preSelection)})),ie(fe(s),\"isCalendarOpen\",(function(){return void 0===s.props.open?s.state.open&&!s.props.disabled&&!s.props.readOnly:s.props.open})),ie(fe(s),\"handleFocus\",(function(e){s.state.preventFocus||(s.props.onFocus(e),s.props.preventOpenOnFocus||s.props.readOnly||s.setOpen(!0)),s.setState({focused:!0})})),ie(fe(s),\"cancelFocusInput\",(function(){clearTimeout(s.inputFocusTimeout),s.inputFocusTimeout=null})),ie(fe(s),\"deferFocusInput\",(function(){s.cancelFocusInput(),s.inputFocusTimeout=setTimeout((function(){return s.setFocus()}),1)})),ie(fe(s),\"handleDropdownFocus\",(function(){s.cancelFocusInput()})),ie(fe(s),\"handleBlur\",(function(e){(!s.state.open||s.props.withPortal||s.props.showTimeInput)&&s.props.onBlur(e),s.setState({focused:!1})})),ie(fe(s),\"handleCalendarClickOutside\",(function(e){s.props.inline||s.setOpen(!1),s.props.onClickOutside(e),s.props.withPortal&&e.preventDefault()})),ie(fe(s),\"handleChange\",(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t[0];if(!s.props.onChangeRaw||(s.props.onChangeRaw.apply(fe(s),t),\"function\"==typeof n.isDefaultPrevented&&!n.isDefaultPrevented())){s.setState({inputValue:n.target.value,lastPreSelectChange:Rt});var o=Ce(n.target.value,s.props.dateFormat,s.props.locale,s.props.strictParsing);!o&&n.target.value||s.setSelected(o,n,!0)}})),ie(fe(s),\"handleSelect\",(function(e,t,r){s.setState({preventFocus:!0},(function(){return s.preventFocusTimeout=setTimeout((function(){return s.setState({preventFocus:!1})}),50),s.preventFocusTimeout})),s.props.onChangeRaw&&s.props.onChangeRaw(t),s.setSelected(e,t,!1,r),!s.props.shouldCloseOnSelect||s.props.showTimeSelect?s.setPreSelection(e):s.props.inline||s.setOpen(!1)})),ie(fe(s),\"setSelected\",(function(e,t,r,n){var o=e;if(null===o||!Ue(o,s.props)){var a=s.props,p=a.onChange,i=a.selectsRange,c=a.startDate,l=a.endDate;if(!We(s.props.selected,o)||s.props.allowSameDay||i)if(null!==o&&(!s.props.selected||r&&(s.props.showTimeSelect||s.props.showTimeSelectOnly||s.props.showTimeInput)||(o=Me(o,{hour:y(s.props.selected),minute:v(s.props.selected),second:f(s.props.selected)})),s.props.inline||s.setState({preSelection:o}),s.props.focusSelectedMonth||s.setState({monthSelectedIn:n})),i){var d=c&&!l,u=c&&l;!c&&!l?p([o,null],t):d&&($(o,c)?p([o,null],t):p([c,o],t)),u&&p([o,null],t)}else p(o,t);r||(s.props.onSelect(o,t),s.setState({inputValue:null}))}})),ie(fe(s),\"setPreSelection\",(function(e){var t=void 0!==s.props.minDate,r=void 0!==s.props.maxDate,n=!0;e&&(t&&r?n=Ae(e,s.props.minDate,s.props.maxDate):t?n=U(e,s.props.minDate):r&&(n=$(e,s.props.maxDate))),n&&s.setState({preSelection:e})})),ie(fe(s),\"handleTimeChange\",(function(e){var t=Me(s.props.selected?s.props.selected:s.getPreSelection(),{hour:y(e),minute:v(e)});s.setState({preSelection:t}),s.props.onChange(t),s.props.shouldCloseOnSelect&&s.setOpen(!1),s.props.showTimeInput&&s.setOpen(!0),s.setState({inputValue:null})})),ie(fe(s),\"onInputClick\",(function(){s.props.disabled||s.props.readOnly||s.setOpen(!0),s.props.onInputClick()})),ie(fe(s),\"onInputKeyDown\",(function(e){s.props.onKeyDown(e);var t=e.key;if(s.state.open||s.props.inline||s.props.preventOpenOnFocus){if(s.state.open){if(\"ArrowDown\"===t||\"ArrowUp\"===t){e.preventDefault();var r=s.calendar.componentNode&&s.calendar.componentNode.querySelector('.react-datepicker__day[tabindex=\"0\"]');return void(r&&r.focus({preventScroll:!0}))}var n=be(s.state.preSelection);\"Enter\"===t?(e.preventDefault(),s.inputOk()&&s.state.lastPreSelectChange===Wt?(s.handleSelect(n,e),!s.props.shouldCloseOnSelect&&s.setPreSelection(n)):s.setOpen(!1)):\"Escape\"===t&&(e.preventDefault(),s.setOpen(!1)),s.inputOk()||s.props.onInputError({code:1,msg:\"Date input not valid.\"})}}else\"ArrowDown\"!==t&&\"ArrowUp\"!==t&&\"Enter\"!==t||s.onInputClick()})),ie(fe(s),\"onDayKeyDown\",(function(e){s.props.onKeyDown(e);var t=e.key,r=be(s.state.preSelection);if(\"Enter\"===t)e.preventDefault(),s.handleSelect(r,e),!s.props.shouldCloseOnSelect&&s.setPreSelection(r);else if(\"Escape\"===t)e.preventDefault(),s.setOpen(!1),s.inputOk()||s.props.onInputError({code:1,msg:\"Date input not valid.\"});else if(!s.props.disabledKeyboardNavigation){var n;switch(t){case\"ArrowLeft\":n=d(r,1);break;case\"ArrowRight\":n=p(r,1);break;case\"ArrowUp\":n=u(r,1);break;case\"ArrowDown\":n=i(r,1);break;case\"PageUp\":n=h(r,1);break;case\"PageDown\":n=c(r,1);break;case\"Home\":n=m(r,1);break;case\"End\":n=l(r,1)}if(!n)return void(s.props.onInputError&&s.props.onInputError({code:1,msg:\"Date input not valid.\"}));e.preventDefault(),s.setState({lastPreSelectChange:Wt}),s.props.adjustDateOnChange&&s.setSelected(n),s.setPreSelection(n)}})),ie(fe(s),\"onPopperKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),s.setState({preventFocus:!0},(function(){s.setOpen(!1),setTimeout((function(){s.setFocus(),s.setState({preventFocus:!1})}))})))})),ie(fe(s),\"onClearClick\",(function(e){e&&e.preventDefault&&e.preventDefault(),s.props.onChange(null,e),s.setState({inputValue:null})})),ie(fe(s),\"clear\",(function(){s.onClearClick()})),ie(fe(s),\"onScroll\",(function(e){\"boolean\"==typeof s.props.closeOnScroll&&s.props.closeOnScroll?e.target!==document&&e.target!==document.documentElement&&e.target!==document.body||s.setOpen(!1):\"function\"==typeof s.props.closeOnScroll&&s.props.closeOnScroll(e)&&s.setOpen(!1)})),ie(fe(s),\"renderCalendar\",(function(){return s.props.inline||s.isCalendarOpen()?e.createElement(Lt,{ref:function(e){s.calendar=e},locale:s.props.locale,chooseDayAriaLabelPrefix:s.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:s.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:s.props.weekAriaLabelPrefix,adjustDateOnChange:s.props.adjustDateOnChange,setOpen:s.setOpen,shouldCloseOnSelect:s.props.shouldCloseOnSelect,dateFormat:s.props.dateFormatCalendar,useWeekdaysShort:s.props.useWeekdaysShort,formatWeekDay:s.props.formatWeekDay,dropdownMode:s.props.dropdownMode,selected:s.props.selected,preSelection:s.state.preSelection,onSelect:s.handleSelect,onWeekSelect:s.props.onWeekSelect,openToDate:s.props.openToDate,minDate:s.props.minDate,maxDate:s.props.maxDate,selectsStart:s.props.selectsStart,selectsEnd:s.props.selectsEnd,selectsRange:s.props.selectsRange,startDate:s.props.startDate,endDate:s.props.endDate,excludeDates:s.props.excludeDates,filterDate:s.props.filterDate,onClickOutside:s.handleCalendarClickOutside,formatWeekNumber:s.props.formatWeekNumber,highlightDates:s.state.highlightDates,includeDates:s.props.includeDates,includeTimes:s.props.includeTimes,injectTimes:s.props.injectTimes,peekNextMonth:s.props.peekNextMonth,showMonthDropdown:s.props.showMonthDropdown,showPreviousMonths:s.props.showPreviousMonths,useShortMonthInDropdown:s.props.useShortMonthInDropdown,showMonthYearDropdown:s.props.showMonthYearDropdown,showWeekNumbers:s.props.showWeekNumbers,showYearDropdown:s.props.showYearDropdown,withPortal:s.props.withPortal,forceShowMonthNavigation:s.props.forceShowMonthNavigation,showDisabledMonthNavigation:s.props.showDisabledMonthNavigation,scrollableYearDropdown:s.props.scrollableYearDropdown,scrollableMonthYearDropdown:s.props.scrollableMonthYearDropdown,todayButton:s.props.todayButton,weekLabel:s.props.weekLabel,outsideClickIgnoreClass:\"react-datepicker-ignore-onclickoutside\",fixedHeight:s.props.fixedHeight,monthsShown:s.props.monthsShown,monthSelectedIn:s.state.monthSelectedIn,onDropdownFocus:s.handleDropdownFocus,onMonthChange:s.props.onMonthChange,onYearChange:s.props.onYearChange,dayClassName:s.props.dayClassName,weekDayClassName:s.props.weekDayClassName,monthClassName:s.props.monthClassName,timeClassName:s.props.timeClassName,showTimeSelect:s.props.showTimeSelect,showTimeSelectOnly:s.props.showTimeSelectOnly,onTimeChange:s.handleTimeChange,timeFormat:s.props.timeFormat,timeIntervals:s.props.timeIntervals,minTime:s.props.minTime,maxTime:s.props.maxTime,excludeTimes:s.props.excludeTimes,timeCaption:s.props.timeCaption,className:s.props.calendarClassName,container:s.props.calendarContainer,yearDropdownItemNumber:s.props.yearDropdownItemNumber,previousMonthButtonLabel:s.props.previousMonthButtonLabel,nextMonthButtonLabel:s.props.nextMonthButtonLabel,previousYearButtonLabel:s.props.previousYearButtonLabel,nextYearButtonLabel:s.props.nextYearButtonLabel,timeInputLabel:s.props.timeInputLabel,disabledKeyboardNavigation:s.props.disabledKeyboardNavigation,renderCustomHeader:s.props.renderCustomHeader,popperProps:s.props.popperProps,renderDayContents:s.props.renderDayContents,onDayMouseEnter:s.props.onDayMouseEnter,onMonthMouseLeave:s.props.onMonthMouseLeave,showTimeInput:s.props.showTimeInput,showMonthYearPicker:s.props.showMonthYearPicker,showFullMonthYearPicker:s.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:s.props.showTwoColumnMonthYearPicker,showYearPicker:s.props.showYearPicker,showQuarterYearPicker:s.props.showQuarterYearPicker,showPopperArrow:s.props.showPopperArrow,excludeScrollbar:s.props.excludeScrollbar,handleOnKeyDown:s.onDayKeyDown,isInputFocused:s.state.focused,customTimeInput:s.props.customTimeInput,setPreSelection:s.setPreSelection},s.props.children):null})),ie(fe(s),\"renderDateInput\",(function(){var r,n,o,a,p,i=t(s.props.className,ie({},\"react-datepicker-ignore-onclickoutside\",s.state.open)),c=s.props.customInput||e.createElement(\"input\",{type:\"text\"}),l=s.props.customInputRef||\"ref\",d=\"string\"==typeof s.props.value?s.props.value:\"string\"==typeof s.state.inputValue?s.state.inputValue:(n=s.props.selected,o=s.props,a=o.dateFormat,p=o.locale,n&&Se(n,Array.isArray(a)?a[0]:a,p)||\"\");return e.cloneElement(c,(ie(r={},l,(function(e){s.input=e})),ie(r,\"value\",d),ie(r,\"onBlur\",s.handleBlur),ie(r,\"onChange\",s.handleChange),ie(r,\"onClick\",s.onInputClick),ie(r,\"onFocus\",s.handleFocus),ie(r,\"onKeyDown\",s.onInputKeyDown),ie(r,\"id\",s.props.id),ie(r,\"name\",s.props.name),ie(r,\"autoFocus\",s.props.autoFocus),ie(r,\"placeholder\",s.props.placeholderText),ie(r,\"disabled\",s.props.disabled),ie(r,\"autoComplete\",s.props.autoComplete),ie(r,\"className\",t(c.props.className,i)),ie(r,\"title\",s.props.title),ie(r,\"readOnly\",s.props.readOnly),ie(r,\"required\",s.props.required),ie(r,\"tabIndex\",s.props.tabIndex),ie(r,\"aria-labelledby\",s.props.ariaLabelledBy),r))})),ie(fe(s),\"renderClearButton\",(function(){var t=s.props,r=t.isClearable,n=t.selected,o=t.clearButtonTitle,a=t.ariaLabelClose,p=void 0===a?\"Close\":a;return r&&null!=n?e.createElement(\"button\",{type:\"button\",className:\"react-datepicker__close-icon\",\"aria-label\":p,onClick:s.onClearClick,title:o,tabIndex:-1}):null})),s.state=s.calcInitialState(),s}return pe(a,null,[{key:\"defaultProps\",get:function(){return{allowSameDay:!1,dateFormat:\"MM/dd/yyyy\",dateFormatCalendar:\"LLLL yyyy\",onChange:function(){},disabled:!1,disabledKeyboardNavigation:!1,dropdownMode:\"scroll\",onFocus:function(){},onBlur:function(){},onKeyDown:function(){},onInputClick:function(){},onSelect:function(){},onClickOutside:function(){},onMonthChange:function(){},onCalendarOpen:function(){},onCalendarClose:function(){},preventOpenOnFocus:!1,onYearChange:function(){},onInputError:function(){},monthsShown:1,readOnly:!1,withPortal:!1,shouldCloseOnSelect:!0,showTimeSelect:!1,showTimeInput:!1,showPreviousMonths:!1,showMonthYearPicker:!1,showFullMonthYearPicker:!1,showTwoColumnMonthYearPicker:!1,showYearPicker:!1,showQuarterYearPicker:!1,strictParsing:!1,timeIntervals:30,timeCaption:\"Time\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",timeInputLabel:\"Time\",enableTabLoop:!0,renderDayContents:function(e){return e},focusSelectedMonth:!1,showPopperArrow:!0,excludeScrollbar:!0,customTimeInput:null}}}]),pe(a,[{key:\"componentDidMount\",value:function(){window.addEventListener(\"scroll\",this.onScroll,!0)}},{key:\"componentDidUpdate\",value:function(e,t){var r,n;e.inline&&(r=e.selected,n=this.props.selected,r&&n?g(r)!==g(n)||C(r)!==C(n):r!==n)&&this.setPreSelection(this.props.selected),void 0!==this.state.monthSelectedIn&&e.monthsShown!==this.props.monthsShown&&this.setState({monthSelectedIn:0}),e.highlightDates!==this.props.highlightDates&&this.setState({highlightDates:ct(this.props.highlightDates)}),t.focused||We(e.selected,this.props.selected)||this.setState({inputValue:null}),t.open!==this.state.open&&(!1===t.open&&!0===this.state.open&&this.props.onCalendarOpen(),!0===t.open&&!1===this.state.open&&this.props.onCalendarClose())}},{key:\"componentWillUnmount\",value:function(){this.clearPreventFocusTimeout(),window.removeEventListener(\"scroll\",this.onScroll,!0)}},{key:\"render\",value:function(){var t=this.renderCalendar();return this.props.inline&&!this.props.withPortal?t:this.props.withPortal?e.createElement(\"div\",null,this.props.inline?null:e.createElement(\"div\",{className:\"react-datepicker__input-container\"},this.renderDateInput(),this.renderClearButton()),this.state.open||this.props.inline?e.createElement(\"div\",{className:\"react-datepicker__portal\"},t):null):e.createElement(It,{className:this.props.popperClassName,wrapperClassName:this.props.wrapperClassName,hidePopper:!this.isCalendarOpen(),portalId:this.props.portalId,popperModifiers:this.props.popperModifiers,targetComponent:e.createElement(\"div\",{className:\"react-datepicker__input-container\"},this.renderDateInput(),this.renderClearButton()),popperContainer:this.props.popperContainer,popperComponent:t,popperPlacement:this.props.popperPlacement,popperProps:this.props.popperProps,popperOnKeyDown:this.onPopperKeyDown,enableTabLoop:this.props.enableTabLoop})}}]),a}(),Rt=\"input\",Wt=\"navigate\";export default Ft;export{Et as CalendarContainer,Ke as getDefaultLocale,Be as registerLocale,je as setDefaultLocale};\n"],"sourceRoot":""}