@wordpress/components
Version:
UI components for WordPress.
8 lines (7 loc) • 10.2 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../../src/date-time/date/use-lilius/index.ts"],
"sourcesContent": ["/**\n * This source is a local copy of the use-lilius library, since the original\n * library is not actively maintained.\n * @see https://github.com/WordPress/gutenberg/discussions/64968\n *\n * use-lilius@2.0.5\n * https://github.com/Avarios/use-lilius\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2021-Present Danny Tatom\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 */\n\n/**\n * External dependencies\n */\nimport { addMonths, addYears, eachDayOfInterval, eachMonthOfInterval, eachWeekOfInterval, endOfMonth, endOfWeek, isAfter, isBefore, isEqual, set, setMonth, setYear, startOfMonth, startOfToday, startOfWeek, subMonths, subYears } from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nexport let Month = /*#__PURE__*/function (Month) {\n Month[Month[\"JANUARY\"] = 0] = \"JANUARY\";\n Month[Month[\"FEBRUARY\"] = 1] = \"FEBRUARY\";\n Month[Month[\"MARCH\"] = 2] = \"MARCH\";\n Month[Month[\"APRIL\"] = 3] = \"APRIL\";\n Month[Month[\"MAY\"] = 4] = \"MAY\";\n Month[Month[\"JUNE\"] = 5] = \"JUNE\";\n Month[Month[\"JULY\"] = 6] = \"JULY\";\n Month[Month[\"AUGUST\"] = 7] = \"AUGUST\";\n Month[Month[\"SEPTEMBER\"] = 8] = \"SEPTEMBER\";\n Month[Month[\"OCTOBER\"] = 9] = \"OCTOBER\";\n Month[Month[\"NOVEMBER\"] = 10] = \"NOVEMBER\";\n Month[Month[\"DECEMBER\"] = 11] = \"DECEMBER\";\n return Month;\n}({});\nexport let Day = /*#__PURE__*/function (Day) {\n Day[Day[\"SUNDAY\"] = 0] = \"SUNDAY\";\n Day[Day[\"MONDAY\"] = 1] = \"MONDAY\";\n Day[Day[\"TUESDAY\"] = 2] = \"TUESDAY\";\n Day[Day[\"WEDNESDAY\"] = 3] = \"WEDNESDAY\";\n Day[Day[\"THURSDAY\"] = 4] = \"THURSDAY\";\n Day[Day[\"FRIDAY\"] = 5] = \"FRIDAY\";\n Day[Day[\"SATURDAY\"] = 6] = \"SATURDAY\";\n return Day;\n}({});\nconst inRange = (date, min, max) => (isEqual(date, min) || isAfter(date, min)) && (isEqual(date, max) || isBefore(date, max));\nconst clearTime = date => set(date, {\n hours: 0,\n minutes: 0,\n seconds: 0,\n milliseconds: 0\n});\nexport const useLilius = ({\n weekStartsOn = Day.SUNDAY,\n viewing: initialViewing = new Date(),\n selected: initialSelected = [],\n numberOfMonths = 1\n} = {}) => {\n const [viewing, setViewing] = useState(initialViewing);\n const viewToday = useCallback(() => setViewing(startOfToday()), [setViewing]);\n const viewMonth = useCallback(month => setViewing(v => setMonth(v, month)), []);\n const viewPreviousMonth = useCallback(() => setViewing(v => subMonths(v, 1)), []);\n const viewNextMonth = useCallback(() => setViewing(v => addMonths(v, 1)), []);\n const viewYear = useCallback(year => setViewing(v => setYear(v, year)), []);\n const viewPreviousYear = useCallback(() => setViewing(v => subYears(v, 1)), []);\n const viewNextYear = useCallback(() => setViewing(v => addYears(v, 1)), []);\n const [selected, setSelected] = useState(initialSelected.map(clearTime));\n const clearSelected = () => setSelected([]);\n const isSelected = useCallback(date => selected.findIndex(s => isEqual(s, date)) > -1, [selected]);\n const select = useCallback((date, replaceExisting) => {\n if (replaceExisting) {\n setSelected(Array.isArray(date) ? date : [date]);\n } else {\n setSelected(selectedItems => selectedItems.concat(Array.isArray(date) ? date : [date]));\n }\n }, []);\n const deselect = useCallback(date => setSelected(selectedItems => Array.isArray(date) ? selectedItems.filter(s => !date.map(d => d.getTime()).includes(s.getTime())) : selectedItems.filter(s => !isEqual(s, date))), []);\n const toggle = useCallback((date, replaceExisting) => isSelected(date) ? deselect(date) : select(date, replaceExisting), [deselect, isSelected, select]);\n const selectRange = useCallback((start, end, replaceExisting) => {\n if (replaceExisting) {\n setSelected(eachDayOfInterval({\n start,\n end\n }));\n } else {\n setSelected(selectedItems => selectedItems.concat(eachDayOfInterval({\n start,\n end\n })));\n }\n }, []);\n const deselectRange = useCallback((start, end) => {\n setSelected(selectedItems => selectedItems.filter(s => !eachDayOfInterval({\n start,\n end\n }).map(d => d.getTime()).includes(s.getTime())));\n }, []);\n const calendar = useMemo(() => eachMonthOfInterval({\n start: startOfMonth(viewing),\n end: endOfMonth(addMonths(viewing, numberOfMonths - 1))\n }).map(month => eachWeekOfInterval({\n start: startOfMonth(month),\n end: endOfMonth(month)\n }, {\n weekStartsOn\n }).map(week => eachDayOfInterval({\n start: startOfWeek(week, {\n weekStartsOn\n }),\n end: endOfWeek(week, {\n weekStartsOn\n })\n }))), [viewing, weekStartsOn, numberOfMonths]);\n return {\n clearTime,\n inRange,\n viewing,\n setViewing,\n viewToday,\n viewMonth,\n viewPreviousMonth,\n viewNextMonth,\n viewYear,\n viewPreviousYear,\n viewNextYear,\n selected,\n setSelected,\n clearSelected,\n isSelected,\n select,\n deselect,\n toggle,\n selectRange,\n deselectRange,\n calendar\n };\n};"],
"mappings": "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",
"names": ["Month", "Day"]
}