Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-inclu.../js/dist
File: components.js
state: latestState
[51500] Fix | Delete
} = latest.current;
[51501] Fix | Delete
const itemIndex = getItemIndex(index, selectedItem, latestState.selectedItems);
[51502] Fix | Delete
[51503] Fix | Delete
if (itemIndex < 0) {
[51504] Fix | Delete
throw new Error('Pass either selectedItem or index in getSelectedItemProps!');
[51505] Fix | Delete
}
[51506] Fix | Delete
[51507] Fix | Delete
const selectedItemHandleClick = () => {
[51508] Fix | Delete
dispatch({
[51509] Fix | Delete
type: SelectedItemClick,
[51510] Fix | Delete
index
[51511] Fix | Delete
});
[51512] Fix | Delete
};
[51513] Fix | Delete
[51514] Fix | Delete
const selectedItemHandleKeyDown = event => {
[51515] Fix | Delete
const key = normalizeArrowKey(event);
[51516] Fix | Delete
[51517] Fix | Delete
if (key && selectedItemKeyDownHandlers[key]) {
[51518] Fix | Delete
selectedItemKeyDownHandlers[key](event);
[51519] Fix | Delete
}
[51520] Fix | Delete
};
[51521] Fix | Delete
[51522] Fix | Delete
return {
[51523] Fix | Delete
[refKey]: handleRefs(ref, selectedItemNode => {
[51524] Fix | Delete
if (selectedItemNode) {
[51525] Fix | Delete
selectedItemRefs.current.push(selectedItemNode);
[51526] Fix | Delete
}
[51527] Fix | Delete
}),
[51528] Fix | Delete
tabIndex: index === latestState.activeIndex ? 0 : -1,
[51529] Fix | Delete
onClick: callAllEventHandlers(onClick, selectedItemHandleClick),
[51530] Fix | Delete
onKeyDown: callAllEventHandlers(onKeyDown, selectedItemHandleKeyDown),
[51531] Fix | Delete
...rest
[51532] Fix | Delete
};
[51533] Fix | Delete
}, [dispatch, latest, selectedItemKeyDownHandlers]);
[51534] Fix | Delete
const getDropdownProps = (0,external_React_.useCallback)(function (_temp2, _temp3) {
[51535] Fix | Delete
let {
[51536] Fix | Delete
refKey = 'ref',
[51537] Fix | Delete
ref,
[51538] Fix | Delete
onKeyDown,
[51539] Fix | Delete
onClick,
[51540] Fix | Delete
preventKeyAction = false,
[51541] Fix | Delete
...rest
[51542] Fix | Delete
} = _temp2 === void 0 ? {} : _temp2;
[51543] Fix | Delete
let {
[51544] Fix | Delete
suppressRefError = false
[51545] Fix | Delete
} = _temp3 === void 0 ? {} : _temp3;
[51546] Fix | Delete
setGetterPropCallInfo('getDropdownProps', suppressRefError, refKey, dropdownRef);
[51547] Fix | Delete
[51548] Fix | Delete
const dropdownHandleKeyDown = event => {
[51549] Fix | Delete
const key = normalizeArrowKey(event);
[51550] Fix | Delete
[51551] Fix | Delete
if (key && dropdownKeyDownHandlers[key]) {
[51552] Fix | Delete
dropdownKeyDownHandlers[key](event);
[51553] Fix | Delete
}
[51554] Fix | Delete
};
[51555] Fix | Delete
[51556] Fix | Delete
const dropdownHandleClick = () => {
[51557] Fix | Delete
dispatch({
[51558] Fix | Delete
type: DropdownClick
[51559] Fix | Delete
});
[51560] Fix | Delete
};
[51561] Fix | Delete
[51562] Fix | Delete
return {
[51563] Fix | Delete
[refKey]: handleRefs(ref, dropdownNode => {
[51564] Fix | Delete
if (dropdownNode) {
[51565] Fix | Delete
dropdownRef.current = dropdownNode;
[51566] Fix | Delete
}
[51567] Fix | Delete
}),
[51568] Fix | Delete
...(!preventKeyAction && {
[51569] Fix | Delete
onKeyDown: callAllEventHandlers(onKeyDown, dropdownHandleKeyDown),
[51570] Fix | Delete
onClick: callAllEventHandlers(onClick, dropdownHandleClick)
[51571] Fix | Delete
}),
[51572] Fix | Delete
...rest
[51573] Fix | Delete
};
[51574] Fix | Delete
}, [dispatch, dropdownKeyDownHandlers, setGetterPropCallInfo]); // returns
[51575] Fix | Delete
[51576] Fix | Delete
const addSelectedItem = (0,external_React_.useCallback)(selectedItem => {
[51577] Fix | Delete
dispatch({
[51578] Fix | Delete
type: FunctionAddSelectedItem,
[51579] Fix | Delete
selectedItem
[51580] Fix | Delete
});
[51581] Fix | Delete
}, [dispatch]);
[51582] Fix | Delete
const removeSelectedItem = (0,external_React_.useCallback)(selectedItem => {
[51583] Fix | Delete
dispatch({
[51584] Fix | Delete
type: FunctionRemoveSelectedItem,
[51585] Fix | Delete
selectedItem
[51586] Fix | Delete
});
[51587] Fix | Delete
}, [dispatch]);
[51588] Fix | Delete
const setSelectedItems = (0,external_React_.useCallback)(newSelectedItems => {
[51589] Fix | Delete
dispatch({
[51590] Fix | Delete
type: FunctionSetSelectedItems,
[51591] Fix | Delete
selectedItems: newSelectedItems
[51592] Fix | Delete
});
[51593] Fix | Delete
}, [dispatch]);
[51594] Fix | Delete
const setActiveIndex = (0,external_React_.useCallback)(newActiveIndex => {
[51595] Fix | Delete
dispatch({
[51596] Fix | Delete
type: FunctionSetActiveIndex,
[51597] Fix | Delete
activeIndex: newActiveIndex
[51598] Fix | Delete
});
[51599] Fix | Delete
}, [dispatch]);
[51600] Fix | Delete
const reset = (0,external_React_.useCallback)(() => {
[51601] Fix | Delete
dispatch({
[51602] Fix | Delete
type: FunctionReset
[51603] Fix | Delete
});
[51604] Fix | Delete
}, [dispatch]);
[51605] Fix | Delete
return {
[51606] Fix | Delete
getSelectedItemProps,
[51607] Fix | Delete
getDropdownProps,
[51608] Fix | Delete
addSelectedItem,
[51609] Fix | Delete
removeSelectedItem,
[51610] Fix | Delete
setSelectedItems,
[51611] Fix | Delete
setActiveIndex,
[51612] Fix | Delete
reset,
[51613] Fix | Delete
selectedItems,
[51614] Fix | Delete
activeIndex
[51615] Fix | Delete
};
[51616] Fix | Delete
}
[51617] Fix | Delete
[51618] Fix | Delete
[51619] Fix | Delete
[51620] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/components/build-module/custom-select-control/index.js
[51621] Fix | Delete
// @ts-nocheck
[51622] Fix | Delete
/**
[51623] Fix | Delete
* External dependencies
[51624] Fix | Delete
*/
[51625] Fix | Delete
[51626] Fix | Delete
[51627] Fix | Delete
[51628] Fix | Delete
/**
[51629] Fix | Delete
* WordPress dependencies
[51630] Fix | Delete
*/
[51631] Fix | Delete
[51632] Fix | Delete
[51633] Fix | Delete
[51634] Fix | Delete
[51635] Fix | Delete
/**
[51636] Fix | Delete
* Internal dependencies
[51637] Fix | Delete
*/
[51638] Fix | Delete
[51639] Fix | Delete
[51640] Fix | Delete
[51641] Fix | Delete
[51642] Fix | Delete
[51643] Fix | Delete
[51644] Fix | Delete
[51645] Fix | Delete
[51646] Fix | Delete
const custom_select_control_itemToString = item => item?.name;
[51647] Fix | Delete
// This is needed so that in Windows, where
[51648] Fix | Delete
// the menu does not necessarily open on
[51649] Fix | Delete
// key up/down, you can still switch between
[51650] Fix | Delete
// options with the menu closed.
[51651] Fix | Delete
const custom_select_control_stateReducer = ({
[51652] Fix | Delete
selectedItem
[51653] Fix | Delete
}, {
[51654] Fix | Delete
type,
[51655] Fix | Delete
changes,
[51656] Fix | Delete
props: {
[51657] Fix | Delete
items
[51658] Fix | Delete
}
[51659] Fix | Delete
}) => {
[51660] Fix | Delete
switch (type) {
[51661] Fix | Delete
case useSelect.stateChangeTypes.ToggleButtonKeyDownArrowDown:
[51662] Fix | Delete
// If we already have a selected item, try to select the next one,
[51663] Fix | Delete
// without circular navigation. Otherwise, select the first item.
[51664] Fix | Delete
return {
[51665] Fix | Delete
selectedItem: items[selectedItem ? Math.min(items.indexOf(selectedItem) + 1, items.length - 1) : 0]
[51666] Fix | Delete
};
[51667] Fix | Delete
case useSelect.stateChangeTypes.ToggleButtonKeyDownArrowUp:
[51668] Fix | Delete
// If we already have a selected item, try to select the previous one,
[51669] Fix | Delete
// without circular navigation. Otherwise, select the last item.
[51670] Fix | Delete
return {
[51671] Fix | Delete
selectedItem: items[selectedItem ? Math.max(items.indexOf(selectedItem) - 1, 0) : items.length - 1]
[51672] Fix | Delete
};
[51673] Fix | Delete
default:
[51674] Fix | Delete
return changes;
[51675] Fix | Delete
}
[51676] Fix | Delete
};
[51677] Fix | Delete
function CustomSelectControl(props) {
[51678] Fix | Delete
const {
[51679] Fix | Delete
/** Start opting into the larger default height that will become the default size in a future version. */
[51680] Fix | Delete
__next40pxDefaultSize = false,
[51681] Fix | Delete
className,
[51682] Fix | Delete
hideLabelFromVision,
[51683] Fix | Delete
label,
[51684] Fix | Delete
describedBy,
[51685] Fix | Delete
options: items,
[51686] Fix | Delete
onChange: onSelectedItemChange,
[51687] Fix | Delete
/** @type {import('../select-control/types').SelectControlProps.size} */
[51688] Fix | Delete
size = 'default',
[51689] Fix | Delete
value: _selectedItem,
[51690] Fix | Delete
onMouseOver,
[51691] Fix | Delete
onMouseOut,
[51692] Fix | Delete
onFocus,
[51693] Fix | Delete
onBlur,
[51694] Fix | Delete
__experimentalShowSelectedHint = false
[51695] Fix | Delete
} = useDeprecated36pxDefaultSizeProp(props);
[51696] Fix | Delete
const {
[51697] Fix | Delete
getLabelProps,
[51698] Fix | Delete
getToggleButtonProps,
[51699] Fix | Delete
getMenuProps,
[51700] Fix | Delete
getItemProps,
[51701] Fix | Delete
isOpen,
[51702] Fix | Delete
highlightedIndex,
[51703] Fix | Delete
selectedItem
[51704] Fix | Delete
} = useSelect({
[51705] Fix | Delete
initialSelectedItem: items[0],
[51706] Fix | Delete
items,
[51707] Fix | Delete
itemToString: custom_select_control_itemToString,
[51708] Fix | Delete
onSelectedItemChange,
[51709] Fix | Delete
...(typeof _selectedItem !== 'undefined' && _selectedItem !== null ? {
[51710] Fix | Delete
selectedItem: _selectedItem
[51711] Fix | Delete
} : undefined),
[51712] Fix | Delete
stateReducer: custom_select_control_stateReducer
[51713] Fix | Delete
});
[51714] Fix | Delete
function getDescribedBy() {
[51715] Fix | Delete
if (describedBy) {
[51716] Fix | Delete
return describedBy;
[51717] Fix | Delete
}
[51718] Fix | Delete
if (!selectedItem) {
[51719] Fix | Delete
return (0,external_wp_i18n_namespaceObject.__)('No selection');
[51720] Fix | Delete
}
[51721] Fix | Delete
[51722] Fix | Delete
// translators: %s: The selected option.
[51723] Fix | Delete
return (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('Currently selected: %s'), selectedItem.name);
[51724] Fix | Delete
}
[51725] Fix | Delete
let menuProps = getMenuProps({
[51726] Fix | Delete
className: 'components-custom-select-control__menu',
[51727] Fix | Delete
'aria-hidden': !isOpen
[51728] Fix | Delete
});
[51729] Fix | Delete
const onKeyDownHandler = (0,external_wp_element_namespaceObject.useCallback)(e => {
[51730] Fix | Delete
e.stopPropagation();
[51731] Fix | Delete
menuProps?.onKeyDown?.(e);
[51732] Fix | Delete
}, [menuProps]);
[51733] Fix | Delete
[51734] Fix | Delete
// We need this here, because the null active descendant is not fully ARIA compliant.
[51735] Fix | Delete
if (menuProps['aria-activedescendant']?.startsWith('downshift-null')) {
[51736] Fix | Delete
const {
[51737] Fix | Delete
'aria-activedescendant': ariaActivedescendant,
[51738] Fix | Delete
...restMenuProps
[51739] Fix | Delete
} = menuProps;
[51740] Fix | Delete
menuProps = restMenuProps;
[51741] Fix | Delete
}
[51742] Fix | Delete
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
[51743] Fix | Delete
className: dist_clsx('components-custom-select-control', className),
[51744] Fix | Delete
children: [hideLabelFromVision ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(visually_hidden_component, {
[51745] Fix | Delete
as: "label",
[51746] Fix | Delete
...getLabelProps(),
[51747] Fix | Delete
children: label
[51748] Fix | Delete
}) :
[51749] Fix | Delete
/*#__PURE__*/
[51750] Fix | Delete
/* eslint-disable-next-line jsx-a11y/label-has-associated-control, jsx-a11y/label-has-for */
[51751] Fix | Delete
(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyledLabel, {
[51752] Fix | Delete
...getLabelProps({
[51753] Fix | Delete
className: 'components-custom-select-control__label'
[51754] Fix | Delete
}),
[51755] Fix | Delete
children: label
[51756] Fix | Delete
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(input_base, {
[51757] Fix | Delete
__next40pxDefaultSize: __next40pxDefaultSize,
[51758] Fix | Delete
size: size,
[51759] Fix | Delete
suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(select_control_chevron_down, {}),
[51760] Fix | Delete
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Select, {
[51761] Fix | Delete
onMouseOver: onMouseOver,
[51762] Fix | Delete
onMouseOut: onMouseOut,
[51763] Fix | Delete
as: "button",
[51764] Fix | Delete
onFocus: onFocus,
[51765] Fix | Delete
onBlur: onBlur,
[51766] Fix | Delete
selectSize: size,
[51767] Fix | Delete
__next40pxDefaultSize: __next40pxDefaultSize,
[51768] Fix | Delete
...getToggleButtonProps({
[51769] Fix | Delete
// This is needed because some speech recognition software don't support `aria-labelledby`.
[51770] Fix | Delete
'aria-label': label,
[51771] Fix | Delete
'aria-labelledby': undefined,
[51772] Fix | Delete
className: 'components-custom-select-control__button',
[51773] Fix | Delete
describedBy: getDescribedBy()
[51774] Fix | Delete
}),
[51775] Fix | Delete
children: [custom_select_control_itemToString(selectedItem), __experimentalShowSelectedHint && selectedItem.__experimentalHint && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
[51776] Fix | Delete
className: "components-custom-select-control__hint",
[51777] Fix | Delete
children: selectedItem.__experimentalHint
[51778] Fix | Delete
})]
[51779] Fix | Delete
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
[51780] Fix | Delete
className: "components-custom-select-control__menu-wrapper",
[51781] Fix | Delete
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {
[51782] Fix | Delete
...menuProps,
[51783] Fix | Delete
onKeyDown: onKeyDownHandler,
[51784] Fix | Delete
children: isOpen && items.map((item, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("li", {
[51785] Fix | Delete
...getItemProps({
[51786] Fix | Delete
item,
[51787] Fix | Delete
index,
[51788] Fix | Delete
className: dist_clsx(item.className, 'components-custom-select-control__item', {
[51789] Fix | Delete
'is-highlighted': index === highlightedIndex,
[51790] Fix | Delete
'has-hint': !!item.__experimentalHint,
[51791] Fix | Delete
'is-next-40px-default-size': __next40pxDefaultSize
[51792] Fix | Delete
}),
[51793] Fix | Delete
style: item.style
[51794] Fix | Delete
}),
[51795] Fix | Delete
children: [item.name, item.__experimentalHint && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
[51796] Fix | Delete
className: "components-custom-select-control__item-hint",
[51797] Fix | Delete
children: item.__experimentalHint
[51798] Fix | Delete
}), item === selectedItem && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(icons_build_module_icon, {
[51799] Fix | Delete
icon: library_check,
[51800] Fix | Delete
className: "components-custom-select-control__item-icon"
[51801] Fix | Delete
})]
[51802] Fix | Delete
}, item.key))
[51803] Fix | Delete
})
[51804] Fix | Delete
})]
[51805] Fix | Delete
})]
[51806] Fix | Delete
});
[51807] Fix | Delete
}
[51808] Fix | Delete
function StableCustomSelectControl(props) {
[51809] Fix | Delete
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CustomSelectControl, {
[51810] Fix | Delete
...props,
[51811] Fix | Delete
__experimentalShowSelectedHint: false
[51812] Fix | Delete
});
[51813] Fix | Delete
}
[51814] Fix | Delete
[51815] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/use-lilius/build/index.es.js
[51816] Fix | Delete
[51817] Fix | Delete
[51818] Fix | Delete
/**
[51819] Fix | Delete
* @name toDate
[51820] Fix | Delete
* @category Common Helpers
[51821] Fix | Delete
* @summary Convert the given argument to an instance of Date.
[51822] Fix | Delete
*
[51823] Fix | Delete
* @description
[51824] Fix | Delete
* Convert the given argument to an instance of Date.
[51825] Fix | Delete
*
[51826] Fix | Delete
* If the argument is an instance of Date, the function returns its clone.
[51827] Fix | Delete
*
[51828] Fix | Delete
* If the argument is a number, it is treated as a timestamp.
[51829] Fix | Delete
*
[51830] Fix | Delete
* If the argument is none of the above, the function returns Invalid Date.
[51831] Fix | Delete
*
[51832] Fix | Delete
* **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.
[51833] Fix | Delete
*
[51834] Fix | Delete
* @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
[51835] Fix | Delete
*
[51836] Fix | Delete
* @param argument - The value to convert
[51837] Fix | Delete
*
[51838] Fix | Delete
* @returns The parsed date in the local time zone
[51839] Fix | Delete
*
[51840] Fix | Delete
* @example
[51841] Fix | Delete
* // Clone the date:
[51842] Fix | Delete
* const result = toDate(new Date(2014, 1, 11, 11, 30, 30))
[51843] Fix | Delete
* //=> Tue Feb 11 2014 11:30:30
[51844] Fix | Delete
*
[51845] Fix | Delete
* @example
[51846] Fix | Delete
* // Convert the timestamp to date:
[51847] Fix | Delete
* const result = toDate(1392098430000)
[51848] Fix | Delete
* //=> Tue Feb 11 2014 11:30:30
[51849] Fix | Delete
*/
[51850] Fix | Delete
function toDate(argument) {
[51851] Fix | Delete
const argStr = Object.prototype.toString.call(argument);
[51852] Fix | Delete
[51853] Fix | Delete
// Clone the date
[51854] Fix | Delete
if (
[51855] Fix | Delete
argument instanceof Date ||
[51856] Fix | Delete
(typeof argument === "object" && argStr === "[object Date]")
[51857] Fix | Delete
) {
[51858] Fix | Delete
// Prevent the date to lose the milliseconds when passed to new Date() in IE10
[51859] Fix | Delete
return new argument.constructor(+argument);
[51860] Fix | Delete
} else if (
[51861] Fix | Delete
typeof argument === "number" ||
[51862] Fix | Delete
argStr === "[object Number]" ||
[51863] Fix | Delete
typeof argument === "string" ||
[51864] Fix | Delete
argStr === "[object String]"
[51865] Fix | Delete
) {
[51866] Fix | Delete
// TODO: Can we get rid of as?
[51867] Fix | Delete
return new Date(argument);
[51868] Fix | Delete
} else {
[51869] Fix | Delete
// TODO: Can we get rid of as?
[51870] Fix | Delete
return new Date(NaN);
[51871] Fix | Delete
}
[51872] Fix | Delete
}
[51873] Fix | Delete
[51874] Fix | Delete
/**
[51875] Fix | Delete
* @name constructFrom
[51876] Fix | Delete
* @category Generic Helpers
[51877] Fix | Delete
* @summary Constructs a date using the reference date and the value
[51878] Fix | Delete
*
[51879] Fix | Delete
* @description
[51880] Fix | Delete
* The function constructs a new date using the constructor from the reference
[51881] Fix | Delete
* date and the given value. It helps to build generic functions that accept
[51882] Fix | Delete
* date extensions.
[51883] Fix | Delete
*
[51884] Fix | Delete
* It defaults to `Date` if the passed reference date is a number or a string.
[51885] Fix | Delete
*
[51886] Fix | Delete
* @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
[51887] Fix | Delete
*
[51888] Fix | Delete
* @param date - The reference date to take constructor from
[51889] Fix | Delete
* @param value - The value to create the date
[51890] Fix | Delete
*
[51891] Fix | Delete
* @returns Date initialized using the given date and value
[51892] Fix | Delete
*
[51893] Fix | Delete
* @example
[51894] Fix | Delete
* import { constructFrom } from 'date-fns'
[51895] Fix | Delete
*
[51896] Fix | Delete
* // A function that clones a date preserving the original type
[51897] Fix | Delete
* function cloneDate<DateType extends Date(date: DateType): DateType {
[51898] Fix | Delete
* return constructFrom(
[51899] Fix | Delete
* date, // Use contrustor from the given date
[51900] Fix | Delete
* date.getTime() // Use the date value to create a new date
[51901] Fix | Delete
* )
[51902] Fix | Delete
* }
[51903] Fix | Delete
*/
[51904] Fix | Delete
function constructFrom(date, value) {
[51905] Fix | Delete
if (date instanceof Date) {
[51906] Fix | Delete
return new date.constructor(value);
[51907] Fix | Delete
} else {
[51908] Fix | Delete
return new Date(value);
[51909] Fix | Delete
}
[51910] Fix | Delete
}
[51911] Fix | Delete
[51912] Fix | Delete
/**
[51913] Fix | Delete
* @name addDays
[51914] Fix | Delete
* @category Day Helpers
[51915] Fix | Delete
* @summary Add the specified number of days to the given date.
[51916] Fix | Delete
*
[51917] Fix | Delete
* @description
[51918] Fix | Delete
* Add the specified number of days to the given date.
[51919] Fix | Delete
*
[51920] Fix | Delete
* @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
[51921] Fix | Delete
*
[51922] Fix | Delete
* @param date - The date to be changed
[51923] Fix | Delete
* @param amount - The amount of days to be added.
[51924] Fix | Delete
*
[51925] Fix | Delete
* @returns The new date with the days added
[51926] Fix | Delete
*
[51927] Fix | Delete
* @example
[51928] Fix | Delete
* // Add 10 days to 1 September 2014:
[51929] Fix | Delete
* const result = addDays(new Date(2014, 8, 1), 10)
[51930] Fix | Delete
* //=> Thu Sep 11 2014 00:00:00
[51931] Fix | Delete
*/
[51932] Fix | Delete
function addDays(date, amount) {
[51933] Fix | Delete
const _date = toDate(date);
[51934] Fix | Delete
if (isNaN(amount)) return constructFrom(date, NaN);
[51935] Fix | Delete
if (!amount) {
[51936] Fix | Delete
// If 0 days, no-op to avoid changing times in the hour before end of DST
[51937] Fix | Delete
return _date;
[51938] Fix | Delete
}
[51939] Fix | Delete
_date.setDate(_date.getDate() + amount);
[51940] Fix | Delete
return _date;
[51941] Fix | Delete
}
[51942] Fix | Delete
[51943] Fix | Delete
/**
[51944] Fix | Delete
* @name addMonths
[51945] Fix | Delete
* @category Month Helpers
[51946] Fix | Delete
* @summary Add the specified number of months to the given date.
[51947] Fix | Delete
*
[51948] Fix | Delete
* @description
[51949] Fix | Delete
* Add the specified number of months to the given date.
[51950] Fix | Delete
*
[51951] Fix | Delete
* @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
[51952] Fix | Delete
*
[51953] Fix | Delete
* @param date - The date to be changed
[51954] Fix | Delete
* @param amount - The amount of months to be added.
[51955] Fix | Delete
*
[51956] Fix | Delete
* @returns The new date with the months added
[51957] Fix | Delete
*
[51958] Fix | Delete
* @example
[51959] Fix | Delete
* // Add 5 months to 1 September 2014:
[51960] Fix | Delete
* const result = addMonths(new Date(2014, 8, 1), 5)
[51961] Fix | Delete
* //=> Sun Feb 01 2015 00:00:00
[51962] Fix | Delete
*
[51963] Fix | Delete
* // Add one month to 30 January 2023:
[51964] Fix | Delete
* const result = addMonths(new Date(2023, 0, 30), 1)
[51965] Fix | Delete
* //=> Tue Feb 28 2023 00:00:00
[51966] Fix | Delete
*/
[51967] Fix | Delete
function addMonths(date, amount) {
[51968] Fix | Delete
const _date = toDate(date);
[51969] Fix | Delete
if (isNaN(amount)) return constructFrom(date, NaN);
[51970] Fix | Delete
if (!amount) {
[51971] Fix | Delete
// If 0 months, no-op to avoid changing times in the hour before end of DST
[51972] Fix | Delete
return _date;
[51973] Fix | Delete
}
[51974] Fix | Delete
const dayOfMonth = _date.getDate();
[51975] Fix | Delete
[51976] Fix | Delete
// The JS Date object supports date math by accepting out-of-bounds values for
[51977] Fix | Delete
// month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and
[51978] Fix | Delete
// new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we
[51979] Fix | Delete
// want except that dates will wrap around the end of a month, meaning that
[51980] Fix | Delete
// new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So
[51981] Fix | Delete
// we'll default to the end of the desired month by adding 1 to the desired
[51982] Fix | Delete
// month and using a date of 0 to back up one day to the end of the desired
[51983] Fix | Delete
// month.
[51984] Fix | Delete
const endOfDesiredMonth = constructFrom(date, _date.getTime());
[51985] Fix | Delete
endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);
[51986] Fix | Delete
const daysInMonth = endOfDesiredMonth.getDate();
[51987] Fix | Delete
if (dayOfMonth >= daysInMonth) {
[51988] Fix | Delete
// If we're already at the end of the month, then this is the correct date
[51989] Fix | Delete
// and we're done.
[51990] Fix | Delete
return endOfDesiredMonth;
[51991] Fix | Delete
} else {
[51992] Fix | Delete
// Otherwise, we now know that setting the original day-of-month value won't
[51993] Fix | Delete
// cause an overflow, so set the desired day-of-month. Note that we can't
[51994] Fix | Delete
// just set the date of `endOfDesiredMonth` because that object may have had
[51995] Fix | Delete
// its time changed in the unusual case where where a DST transition was on
[51996] Fix | Delete
// the last day of the month and its local time was in the hour skipped or
[51997] Fix | Delete
// repeated next to a DST transition. So we use `date` instead which is
[51998] Fix | Delete
// guaranteed to still have the original time.
[51999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function