import { getDefaultOptions, setDefaultOptions as setInternalDefaultOptions } from "../_lib/defaultOptions/index.js"; import requiredArgs from "../_lib/requiredArgs/index.js"; /** * @name setDefaultOptions * @category Common Helpers * @summary Set default options including locale. * @pure false * * @description * Sets the defaults for * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate` * arguments for all functions. * * @param {Object} newOptions - an object with options. * @param {Locale} [newOptions.locale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale} * @param {0|1|2|3|4|5|6} [newOptions.weekStartsOn] - the index of the first day of the week (0 - Sunday) * @param {1|2|3|4|5|6|7} [newOptions.firstWeekContainsDate] - the day of January, which is always in the first week of the year * @throws {TypeError} 1 argument required * * @example * // Set global locale: * import { es } from 'date-fns/locale' * setDefaultOptions({ locale: es }) * const result = format(new Date(2014, 8, 2), 'PPPP') * //=> 'martes, 2 de septiembre de 2014' * * @example * // Start of the week for 2 September 2014: * const result = startOfWeek(new Date(2014, 8, 2)) * //=> Sun Aug 31 2014 00:00:00 * * @example * // Start of the week for 2 September 2014, * // when we set that week starts on Monday by default: * setDefaultOptions({ weekStartsOn: 1 }) * const result = startOfWeek(new Date(2014, 8, 2)) * //=> Mon Sep 01 2014 00:00:00 * * @example * // Manually set options take priority over default options: * setDefaultOptions({ weekStartsOn: 1 }) * const result = startOfWeek(new Date(2014, 8, 2), { weekStartsOn: 0 }) * //=> Sun Aug 31 2014 00:00:00 * * @example * // Remove the option by setting it to `undefined`: * setDefaultOptions({ weekStartsOn: 1 }) * setDefaultOptions({ weekStartsOn: undefined }) * const result = startOfWeek(new Date(2014, 8, 2)) * //=> Sun Aug 31 2014 00:00:00 */ export default function setDefaultOptions(newOptions) { requiredArgs(1, arguments); var result = {}; var defaultOptions = getDefaultOptions(); for (var property in defaultOptions) { if (Object.prototype.hasOwnProperty.call(defaultOptions, property)) { ; result[property] = defaultOptions[property]; } } for (var _property in newOptions) { if (Object.prototype.hasOwnProperty.call(newOptions, _property)) { if (newOptions[_property] === undefined) { delete result[_property]; } else { ; result[_property] = newOptions[_property]; } } } setInternalDefaultOptions(result); }