{"version":3,"sources":["../src/Helpers.js"],"names":["cancelEvent","getFirstDayOfMonth","getDaysInMonth","getModifiersFromProps","getFirstDayOfWeekFromProps","isRangeOfDates","getMonthsDiff","getWeekArray","startOfMonth","getDayNodes","nodeListToArray","hasOwnProp","e","preventDefault","stopPropagation","d","Date","getFullYear","getMonth","resultDate","setMonth","setDate","getDate","props","modifiers","selectedDays","classNames","selected","disabledDays","disabled","firstDayOfWeek","locale","localeUtils","isNaN","getFirstDayOfWeek","value","from","to","d1","d2","fixedWeeks","daysInMonth","dayArray","week","weekArray","i","push","forEach","length","day","getDay","indexOf","firstWeek","outsideDate","unshift","lastWeek","lastExtraWeek","lastDay","extraWeek","j","newDate","setHours","node","outsideClassName","defaultClassNames","outside","dayQuery","replace","outsideDayQuery","selector","querySelectorAll","nodeList","Array","prototype","slice","call","obj","prop","Object","hasOwnProperty"],"mappings":"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","file":"Helpers.js","sourcesContent":["import { clone } from './DateUtils';\nimport { getFirstDayOfWeek } from './LocaleUtils';\nimport defaultClassNames from './classNames';\n\nexport function cancelEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\n\nexport function getFirstDayOfMonth(d) {\n return new Date(d.getFullYear(), d.getMonth(), 1, 12);\n}\n\nexport function getDaysInMonth(d) {\n const resultDate = getFirstDayOfMonth(d);\n\n resultDate.setMonth(resultDate.getMonth() + 1);\n resultDate.setDate(resultDate.getDate() - 1);\n\n return resultDate.getDate();\n}\n\nexport function getModifiersFromProps(props) {\n const modifiers = { ...props.modifiers };\n if (props.selectedDays) {\n modifiers[props.classNames.selected] = props.selectedDays;\n }\n if (props.disabledDays) {\n modifiers[props.classNames.disabled] = props.disabledDays;\n }\n return modifiers;\n}\n\nexport function getFirstDayOfWeekFromProps(props) {\n const { firstDayOfWeek, locale = 'en', localeUtils = {} } = props;\n if (!isNaN(firstDayOfWeek)) {\n return firstDayOfWeek;\n }\n if (localeUtils.getFirstDayOfWeek) {\n return localeUtils.getFirstDayOfWeek(locale);\n }\n return 0;\n}\n\nexport function isRangeOfDates(value) {\n return !!(value && value.from && value.to);\n}\n\nexport function getMonthsDiff(d1, d2) {\n return (\n d2.getMonth() - d1.getMonth() + 12 * (d2.getFullYear() - d1.getFullYear())\n );\n}\n\nexport function getWeekArray(\n d,\n firstDayOfWeek = getFirstDayOfWeek(),\n fixedWeeks\n) {\n const daysInMonth = getDaysInMonth(d);\n const dayArray = [];\n\n let week = [];\n const weekArray = [];\n\n for (let i = 1; i <= daysInMonth; i += 1) {\n dayArray.push(new Date(d.getFullYear(), d.getMonth(), i, 12));\n }\n\n dayArray.forEach(day => {\n if (week.length > 0 && day.getDay() === firstDayOfWeek) {\n weekArray.push(week);\n week = [];\n }\n week.push(day);\n if (dayArray.indexOf(day) === dayArray.length - 1) {\n weekArray.push(week);\n }\n });\n\n // unshift days to start the first week\n const firstWeek = weekArray[0];\n for (let i = 7 - firstWeek.length; i > 0; i -= 1) {\n const outsideDate = clone(firstWeek[0]);\n outsideDate.setDate(firstWeek[0].getDate() - 1);\n firstWeek.unshift(outsideDate);\n }\n\n // push days until the end of the last week\n const lastWeek = weekArray[weekArray.length - 1];\n for (let i = lastWeek.length; i < 7; i += 1) {\n const outsideDate = clone(lastWeek[lastWeek.length - 1]);\n outsideDate.setDate(lastWeek[lastWeek.length - 1].getDate() + 1);\n lastWeek.push(outsideDate);\n }\n\n // add extra weeks to reach 6 weeks\n if (fixedWeeks && weekArray.length < 6) {\n let lastExtraWeek;\n\n for (let i = weekArray.length; i < 6; i += 1) {\n lastExtraWeek = weekArray[weekArray.length - 1];\n const lastDay = lastExtraWeek[lastExtraWeek.length - 1];\n const extraWeek = [];\n\n for (let j = 0; j < 7; j += 1) {\n const outsideDate = clone(lastDay);\n outsideDate.setDate(lastDay.getDate() + j + 1);\n extraWeek.push(outsideDate);\n }\n\n weekArray.push(extraWeek);\n }\n }\n\n return weekArray;\n}\n\nexport function startOfMonth(d) {\n const newDate = clone(d);\n newDate.setDate(1);\n newDate.setHours(12, 0, 0, 0); // always set noon to avoid time zone issues\n return newDate;\n}\n\nexport function getDayNodes(node, classNames) {\n let outsideClassName;\n if (classNames === defaultClassNames) {\n // When using CSS modules prefix the modifier as required by the BEM syntax\n outsideClassName = `${classNames.day}--${classNames.outside}`;\n } else {\n outsideClassName = `${classNames.outside}`;\n }\n const dayQuery = classNames.day.replace(/ /g, '.');\n const outsideDayQuery = outsideClassName.replace(/ /g, '.');\n const selector = `.${dayQuery}:not(.${outsideDayQuery})`;\n return node.querySelectorAll(selector);\n}\n\nexport function nodeListToArray(nodeList) {\n return Array.prototype.slice.call(nodeList, 0);\n}\n\nexport function hasOwnProp(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n"]}