@wordpress/date 5.29.1-next.f34ab90e9.0 → 5.30.1-next.e256d081a.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +18 -18
- package/build/index.js +94 -120
- package/build/index.js.map +1 -1
- package/build/types.js +6 -0
- package/build/types.js.map +1 -0
- package/build-module/index.js +71 -121
- package/build-module/index.js.map +1 -1
- package/build-module/types.js +2 -0
- package/build-module/types.js.map +1 -0
- package/build-types/index.d.ts +62 -155
- package/build-types/index.d.ts.map +1 -1
- package/build-types/types.d.ts +116 -0
- package/build-types/types.d.ts.map +1 -0
- package/package.json +3 -3
- package/src/{index.js → index.ts} +115 -141
- package/src/types.ts +138 -0
- package/tsconfig.tsbuildinfo +1 -1
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_moment","_interopRequireDefault","require","_deprecated","WP_ZONE","VALID_UTC_OFFSET","settings","l10n","locale","months","monthsShort","weekdays","weekdaysShort","meridiem","am","pm","AM","PM","relative","future","past","s","ss","m","mm","h","hh","d","dd","M","MM","y","yy","startOfWeek","formats","time","date","datetime","datetimeAbbreviated","timezone","offset","offsetFormatted","string","abbr","setSettings","dateSettings","setupWPTimezone","momentLib","locales","includes","localeData","longDateFormat","defineLocale","currentLocale","parentLocale","hour","minute","isLowercase","LT","LTS","L","LL","LLL","LLLL","relativeTime","getSettings","__experimentalGetSettings","deprecated","since","alternative","currentTimezone","tz","zone","add","pack","name","abbrs","untils","offsets","MINUTE_IN_SECONDS","HOUR_IN_MINUTES","HOUR_IN_SECONDS","formatMap","D","j","l","N","S","momentDate","num","format","withOrdinal","replace","w","z","parseInt","toString","W","F","n","t","daysInMonth","isLeapYear","o","Y","a","A","B","timezoned","utcOffset","seconds","minutes","hours","g","G","H","i","u","v","e","I","isDST","O","P","T","Z","sign","parts","substring","split","map","c","r","U","dateFormat","dateValue","Date","char","newFormat","length","push","formatter","join","dateMoment","buildMoment","gmdate","utc","dateI18n","gmdateI18n","undefined","isInTheFuture","now","momentObject","isAfter","getDate","dateString","toDate","humanTimeDiff","from","to","fromMoment","toMoment","isUTCOffset","test"],"sources":["@wordpress/date/src/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport momentLib from 'moment';\nimport 'moment-timezone/moment-timezone';\nimport 'moment-timezone/moment-timezone-utils';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/** @typedef {import('moment').Moment} Moment */\n/** @typedef {import('moment').LocaleSpecification} MomentLocaleSpecification */\n\n/**\n * @typedef MeridiemConfig\n * @property {string} am Lowercase AM.\n * @property {string} AM Uppercase AM.\n * @property {string} pm Lowercase PM.\n * @property {string} PM Uppercase PM.\n */\n\n/**\n * @typedef FormatsConfig\n * @property {string} time Time format.\n * @property {string} date Date format.\n * @property {string} datetime Datetime format.\n * @property {string} datetimeAbbreviated Abbreviated datetime format.\n */\n\n/**\n * @typedef TimezoneConfig\n * @property {string} offset Offset setting.\n * @property {string} offsetFormatted Offset setting with decimals formatted to minutes.\n * @property {string} string The timezone as a string (e.g., `'America/Los_Angeles'`).\n * @property {string} abbr Abbreviation for the timezone.\n */\n\n/* eslint-disable jsdoc/valid-types */\n/**\n * @typedef L10nSettings\n * @property {string} locale Moment locale.\n * @property {MomentLocaleSpecification['months']} months Locale months.\n * @property {MomentLocaleSpecification['monthsShort']} monthsShort Locale months short.\n * @property {MomentLocaleSpecification['weekdays']} weekdays Locale weekdays.\n * @property {MomentLocaleSpecification['weekdaysShort']} weekdaysShort Locale weekdays short.\n * @property {MeridiemConfig} meridiem Meridiem config.\n * @property {MomentLocaleSpecification['relativeTime']} relative Relative time config.\n * @property {0|1|2|3|4|5|6} startOfWeek Day that the week starts on.\n */\n/* eslint-enable jsdoc/valid-types */\n\n/**\n * @typedef DateSettings\n * @property {L10nSettings} l10n Localization settings.\n * @property {FormatsConfig} formats Date/time formats config.\n * @property {TimezoneConfig} timezone Timezone settings.\n */\n\nconst WP_ZONE = 'WP';\n\n// This regular expression tests positive for UTC offsets as described in ISO 8601.\n// See: https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC\nconst VALID_UTC_OFFSET = /^[+-][0-1][0-9](:?[0-9][0-9])?$/;\n\n// Changes made here will likely need to be synced with Core in the file\n// src/wp-includes/script-loader.php in `wp_default_packages_inline_scripts()`.\n/** @type {DateSettings} */\nlet settings = {\n\tl10n: {\n\t\tlocale: 'en',\n\t\tmonths: [\n\t\t\t'January',\n\t\t\t'February',\n\t\t\t'March',\n\t\t\t'April',\n\t\t\t'May',\n\t\t\t'June',\n\t\t\t'July',\n\t\t\t'August',\n\t\t\t'September',\n\t\t\t'October',\n\t\t\t'November',\n\t\t\t'December',\n\t\t],\n\t\tmonthsShort: [\n\t\t\t'Jan',\n\t\t\t'Feb',\n\t\t\t'Mar',\n\t\t\t'Apr',\n\t\t\t'May',\n\t\t\t'Jun',\n\t\t\t'Jul',\n\t\t\t'Aug',\n\t\t\t'Sep',\n\t\t\t'Oct',\n\t\t\t'Nov',\n\t\t\t'Dec',\n\t\t],\n\t\tweekdays: [\n\t\t\t'Sunday',\n\t\t\t'Monday',\n\t\t\t'Tuesday',\n\t\t\t'Wednesday',\n\t\t\t'Thursday',\n\t\t\t'Friday',\n\t\t\t'Saturday',\n\t\t],\n\t\tweekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],\n\t\tmeridiem: { am: 'am', pm: 'pm', AM: 'AM', PM: 'PM' },\n\t\trelative: {\n\t\t\tfuture: '%s from now',\n\t\t\tpast: '%s ago',\n\t\t\ts: 'a few seconds',\n\t\t\tss: '%d seconds',\n\t\t\tm: 'a minute',\n\t\t\tmm: '%d minutes',\n\t\t\th: 'an hour',\n\t\t\thh: '%d hours',\n\t\t\td: 'a day',\n\t\t\tdd: '%d days',\n\t\t\tM: 'a month',\n\t\t\tMM: '%d months',\n\t\t\ty: 'a year',\n\t\t\tyy: '%d years',\n\t\t},\n\t\tstartOfWeek: 0,\n\t},\n\tformats: {\n\t\ttime: 'g: i a',\n\t\tdate: 'F j, Y',\n\t\tdatetime: 'F j, Y g: i a',\n\t\tdatetimeAbbreviated: 'M j, Y g: i a',\n\t},\n\ttimezone: { offset: '0', offsetFormatted: '0', string: '', abbr: '' },\n};\n\n/**\n * Adds a locale to moment, using the format supplied by `wp_localize_script()`.\n *\n * @param {DateSettings} dateSettings Settings, including locale data.\n */\nexport function setSettings( dateSettings ) {\n\tsettings = dateSettings;\n\n\tsetupWPTimezone();\n\n\t// Does moment already have a locale with the right name?\n\tif ( momentLib.locales().includes( dateSettings.l10n.locale ) ) {\n\t\t// Is that locale misconfigured, e.g. because we are on a site running\n\t\t// WordPress < 6.0?\n\t\tif (\n\t\t\tmomentLib\n\t\t\t\t.localeData( dateSettings.l10n.locale )\n\t\t\t\t.longDateFormat( 'LTS' ) === null\n\t\t) {\n\t\t\t// Delete the misconfigured locale.\n\t\t\t// @ts-ignore Type definitions are incorrect - null is permitted.\n\t\t\tmomentLib.defineLocale( dateSettings.l10n.locale, null );\n\t\t} else {\n\t\t\t// We have a properly configured locale, so no need to create one.\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// defineLocale() will modify the current locale, so back it up.\n\tconst currentLocale = momentLib.locale();\n\n\t// Create locale.\n\tmomentLib.defineLocale( dateSettings.l10n.locale, {\n\t\t// Inherit anything missing from English. We don't load\n\t\t// moment-with-locales.js so English is all there is.\n\t\tparentLocale: 'en',\n\t\tmonths: dateSettings.l10n.months,\n\t\tmonthsShort: dateSettings.l10n.monthsShort,\n\t\tweekdays: dateSettings.l10n.weekdays,\n\t\tweekdaysShort: dateSettings.l10n.weekdaysShort,\n\t\tmeridiem( hour, minute, isLowercase ) {\n\t\t\tif ( hour < 12 ) {\n\t\t\t\treturn isLowercase\n\t\t\t\t\t? dateSettings.l10n.meridiem.am\n\t\t\t\t\t: dateSettings.l10n.meridiem.AM;\n\t\t\t}\n\t\t\treturn isLowercase\n\t\t\t\t? dateSettings.l10n.meridiem.pm\n\t\t\t\t: dateSettings.l10n.meridiem.PM;\n\t\t},\n\t\tlongDateFormat: {\n\t\t\tLT: dateSettings.formats.time,\n\t\t\tLTS: momentLib.localeData( 'en' ).longDateFormat( 'LTS' ),\n\t\t\tL: momentLib.localeData( 'en' ).longDateFormat( 'L' ),\n\t\t\tLL: dateSettings.formats.date,\n\t\t\tLLL: dateSettings.formats.datetime,\n\t\t\tLLLL: momentLib.localeData( 'en' ).longDateFormat( 'LLLL' ),\n\t\t},\n\t\t// From human_time_diff?\n\t\t// Set to `(number, withoutSuffix, key, isFuture) => {}` instead.\n\t\trelativeTime: dateSettings.l10n.relative,\n\t} );\n\n\t// Restore the locale to what it was.\n\tmomentLib.locale( currentLocale );\n}\n\n/**\n * Returns the currently defined date settings.\n *\n * @return {DateSettings} Settings, including locale data.\n */\nexport function getSettings() {\n\treturn settings;\n}\n\n/**\n * Returns the currently defined date settings.\n *\n * @deprecated\n * @return {DateSettings} Settings, including locale data.\n */\nexport function __experimentalGetSettings() {\n\tdeprecated( 'wp.date.__experimentalGetSettings', {\n\t\tsince: '6.1',\n\t\talternative: 'wp.date.getSettings',\n\t} );\n\treturn getSettings();\n}\n\nfunction setupWPTimezone() {\n\t// Get the current timezone settings from the WP timezone string.\n\tconst currentTimezone = momentLib.tz.zone( settings.timezone.string );\n\n\t// Check to see if we have a valid TZ data, if so, use it for the custom WP_ZONE timezone, otherwise just use the offset.\n\tif ( currentTimezone ) {\n\t\t// Create WP timezone based off settings.timezone.string. We need to include the additional data so that we\n\t\t// don't lose information about daylight savings time and other items.\n\t\t// See https://github.com/WordPress/gutenberg/pull/48083\n\t\tmomentLib.tz.add(\n\t\t\tmomentLib.tz.pack( {\n\t\t\t\tname: WP_ZONE,\n\t\t\t\tabbrs: currentTimezone.abbrs,\n\t\t\t\tuntils: currentTimezone.untils,\n\t\t\t\toffsets: currentTimezone.offsets,\n\t\t\t} )\n\t\t);\n\t} else {\n\t\t// Create WP timezone based off dateSettings.\n\t\tmomentLib.tz.add(\n\t\t\tmomentLib.tz.pack( {\n\t\t\t\tname: WP_ZONE,\n\t\t\t\tabbrs: [ WP_ZONE ],\n\t\t\t\tuntils: [ null ],\n\t\t\t\toffsets: [ -settings.timezone.offset * 60 || 0 ],\n\t\t\t} )\n\t\t);\n\t}\n}\n\n// Date constants.\n/**\n * Number of seconds in one minute.\n *\n * @type {number}\n */\nconst MINUTE_IN_SECONDS = 60;\n/**\n * Number of minutes in one hour.\n *\n * @type {number}\n */\nconst HOUR_IN_MINUTES = 60;\n/**\n * Number of seconds in one hour.\n *\n * @type {number}\n */\nconst HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS;\n\n/**\n * Map of PHP formats to Moment.js formats.\n *\n * These are used internally by {@link wp.date.format}, and are either\n * a string representing the corresponding Moment.js format code, or a\n * function which returns the formatted string.\n *\n * This should only be used through {@link wp.date.format}, not\n * directly.\n */\nconst formatMap = {\n\t// Day.\n\td: 'DD',\n\tD: 'ddd',\n\tj: 'D',\n\tl: 'dddd',\n\tN: 'E',\n\n\t/**\n\t * Gets the ordinal suffix.\n\t *\n\t * @param {Moment} momentDate Moment instance.\n\t *\n\t * @return {string} Formatted date.\n\t */\n\tS( momentDate ) {\n\t\t// Do - D.\n\t\tconst num = momentDate.format( 'D' );\n\t\tconst withOrdinal = momentDate.format( 'Do' );\n\t\treturn withOrdinal.replace( num, '' );\n\t},\n\n\tw: 'd',\n\t/**\n\t * Gets the day of the year (zero-indexed).\n\t *\n\t * @param {Moment} momentDate Moment instance.\n\t *\n\t * @return {string} Formatted date.\n\t */\n\tz( momentDate ) {\n\t\t// DDD - 1.\n\t\treturn ( parseInt( momentDate.format( 'DDD' ), 10 ) - 1 ).toString();\n\t},\n\n\t// Week.\n\tW: 'W',\n\n\t// Month.\n\tF: 'MMMM',\n\tm: 'MM',\n\tM: 'MMM',\n\tn: 'M',\n\t/**\n\t * Gets the days in the month.\n\t *\n\t * @param {Moment} momentDate Moment instance.\n\t *\n\t * @return {number} Formatted date.\n\t */\n\tt( momentDate ) {\n\t\treturn momentDate.daysInMonth();\n\t},\n\n\t// Year.\n\t/**\n\t * Gets whether the current year is a leap year.\n\t *\n\t * @param {Moment} momentDate Moment instance.\n\t *\n\t * @return {string} Formatted date.\n\t */\n\tL( momentDate ) {\n\t\treturn momentDate.isLeapYear() ? '1' : '0';\n\t},\n\to: 'GGGG',\n\tY: 'YYYY',\n\ty: 'YY',\n\n\t// Time.\n\ta: 'a',\n\tA: 'A',\n\t/**\n\t * Gets the current time in Swatch Internet Time (.beats).\n\t *\n\t * @param {Moment} momentDate Moment instance.\n\t *\n\t * @return {number} Formatted date.\n\t */\n\tB( momentDate ) {\n\t\tconst timezoned = momentLib( momentDate ).utcOffset( 60 );\n\t\tconst seconds = parseInt( timezoned.format( 's' ), 10 ),\n\t\t\tminutes = parseInt( timezoned.format( 'm' ), 10 ),\n\t\t\thours = parseInt( timezoned.format( 'H' ), 10 );\n\t\treturn parseInt(\n\t\t\t(\n\t\t\t\t( seconds +\n\t\t\t\t\tminutes * MINUTE_IN_SECONDS +\n\t\t\t\t\thours * HOUR_IN_SECONDS ) /\n\t\t\t\t86.4\n\t\t\t).toString(),\n\t\t\t10\n\t\t);\n\t},\n\tg: 'h',\n\tG: 'H',\n\th: 'hh',\n\tH: 'HH',\n\ti: 'mm',\n\ts: 'ss',\n\tu: 'SSSSSS',\n\tv: 'SSS',\n\t// Timezone.\n\te: 'zz',\n\t/**\n\t * Gets whether the timezone is in DST currently.\n\t *\n\t * @param {Moment} momentDate Moment instance.\n\t *\n\t * @return {string} Formatted date.\n\t */\n\tI( momentDate ) {\n\t\treturn momentDate.isDST() ? '1' : '0';\n\t},\n\tO: 'ZZ',\n\tP: 'Z',\n\tT: 'z',\n\t/**\n\t * Gets the timezone offset in seconds.\n\t *\n\t * @param {Moment} momentDate Moment instance.\n\t *\n\t * @return {number} Formatted date.\n\t */\n\tZ( momentDate ) {\n\t\t// Timezone offset in seconds.\n\t\tconst offset = momentDate.format( 'Z' );\n\t\tconst sign = offset[ 0 ] === '-' ? -1 : 1;\n\t\tconst parts = offset\n\t\t\t.substring( 1 )\n\t\t\t.split( ':' )\n\t\t\t.map( ( n ) => parseInt( n, 10 ) );\n\t\treturn (\n\t\t\tsign *\n\t\t\t( parts[ 0 ] * HOUR_IN_MINUTES + parts[ 1 ] ) *\n\t\t\tMINUTE_IN_SECONDS\n\t\t);\n\t},\n\t// Full date/time.\n\tc: 'YYYY-MM-DDTHH:mm:ssZ', // .toISOString.\n\t/**\n\t * Formats the date as RFC2822.\n\t *\n\t * @param {Moment} momentDate Moment instance.\n\t *\n\t * @return {string} Formatted date.\n\t */\n\tr( momentDate ) {\n\t\treturn momentDate\n\t\t\t.locale( 'en' )\n\t\t\t.format( 'ddd, DD MMM YYYY HH:mm:ss ZZ' );\n\t},\n\tU: 'X',\n};\n\n/**\n * Formats a date. Does not alter the date's timezone.\n *\n * @param {string} dateFormat PHP-style formatting string.\n * See [php.net/date](https://www.php.net/manual/en/function.date.php).\n * @param {Moment | Date | string | undefined} dateValue Date object or string,\n * parsable by moment.js.\n *\n * @return {string} Formatted date.\n */\nexport function format( dateFormat, dateValue = new Date() ) {\n\tlet i, char;\n\tconst newFormat = [];\n\tconst momentDate = momentLib( dateValue );\n\tfor ( i = 0; i < dateFormat.length; i++ ) {\n\t\tchar = dateFormat[ i ];\n\t\t// Is this an escape?\n\t\tif ( '\\\\' === char ) {\n\t\t\t// Add next character, then move on.\n\t\t\ti++;\n\t\t\tnewFormat.push( '[' + dateFormat[ i ] + ']' );\n\t\t\tcontinue;\n\t\t}\n\t\tif ( char in formatMap ) {\n\t\t\tconst formatter =\n\t\t\t\tformatMap[ /** @type {keyof formatMap} */ ( char ) ];\n\t\t\tif ( typeof formatter !== 'string' ) {\n\t\t\t\t// If the format is a function, call it.\n\t\t\t\tnewFormat.push( '[' + formatter( momentDate ) + ']' );\n\t\t\t} else {\n\t\t\t\t// Otherwise, add as a formatting string.\n\t\t\t\tnewFormat.push( formatter );\n\t\t\t}\n\t\t} else {\n\t\t\tnewFormat.push( '[' + char + ']' );\n\t\t}\n\t}\n\t// Join with [] between to separate characters, and replace\n\t// unneeded separators with static text.\n\treturn momentDate.format( newFormat.join( '[]' ) );\n}\n\n/**\n * Formats a date (like `date()` in PHP).\n *\n * @param {string} dateFormat PHP-style formatting string.\n * See [php.net/date](https://www.php.net/manual/en/function.date.php).\n * @param {Moment | Date | string | undefined} dateValue Date object or string, parsable\n * by moment.js.\n * @param {string | number | undefined} timezone Timezone to output result in or a\n * UTC offset. Defaults to timezone from\n * site.\n *\n * @see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC\n *\n * @return {string} Formatted date in English.\n */\nexport function date( dateFormat, dateValue = new Date(), timezone ) {\n\tconst dateMoment = buildMoment( dateValue, timezone );\n\treturn format( dateFormat, dateMoment );\n}\n\n/**\n * Formats a date (like `date()` in PHP), in the UTC timezone.\n *\n * @param {string} dateFormat PHP-style formatting string.\n * See [php.net/date](https://www.php.net/manual/en/function.date.php).\n * @param {Moment | Date | string | undefined} dateValue Date object or string,\n * parsable by moment.js.\n *\n * @return {string} Formatted date in English.\n */\nexport function gmdate( dateFormat, dateValue = new Date() ) {\n\tconst dateMoment = momentLib( dateValue ).utc();\n\treturn format( dateFormat, dateMoment );\n}\n\n/**\n * Formats a date (like `wp_date()` in PHP), translating it into site's locale.\n *\n * Backward Compatibility Notice: if `timezone` is set to `true`, the function\n * behaves like `gmdateI18n`.\n *\n * @param {string} dateFormat PHP-style formatting string.\n * See [php.net/date](https://www.php.net/manual/en/function.date.php).\n * @param {Moment | Date | string | undefined} dateValue Date object or string, parsable by\n * moment.js.\n * @param {string | number | boolean | undefined=} timezone Timezone to output result in or a\n * UTC offset. Defaults to timezone from\n * site. Notice: `boolean` is effectively\n * deprecated, but still supported for\n * backward compatibility reasons.\n *\n * @see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC\n *\n * @return {string} Formatted date.\n */\nexport function dateI18n( dateFormat, dateValue = new Date(), timezone ) {\n\tif ( true === timezone ) {\n\t\treturn gmdateI18n( dateFormat, dateValue );\n\t}\n\n\tif ( false === timezone ) {\n\t\ttimezone = undefined;\n\t}\n\n\tconst dateMoment = buildMoment( dateValue, timezone );\n\tdateMoment.locale( settings.l10n.locale );\n\treturn format( dateFormat, dateMoment );\n}\n\n/**\n * Formats a date (like `wp_date()` in PHP), translating it into site's locale\n * and using the UTC timezone.\n *\n * @param {string} dateFormat PHP-style formatting string.\n * See [php.net/date](https://www.php.net/manual/en/function.date.php).\n * @param {Moment | Date | string | undefined} dateValue Date object or string,\n * parsable by moment.js.\n *\n * @return {string} Formatted date.\n */\nexport function gmdateI18n( dateFormat, dateValue = new Date() ) {\n\tconst dateMoment = momentLib( dateValue ).utc();\n\tdateMoment.locale( settings.l10n.locale );\n\treturn format( dateFormat, dateMoment );\n}\n\n/**\n * Check whether a date is considered in the future according to the WordPress settings.\n *\n * @param {string} dateValue Date String or Date object in the Defined WP Timezone.\n *\n * @return {boolean} Is in the future.\n */\nexport function isInTheFuture( dateValue ) {\n\tconst now = momentLib.tz( WP_ZONE );\n\tconst momentObject = momentLib.tz( dateValue, WP_ZONE );\n\n\treturn momentObject.isAfter( now );\n}\n\n/**\n * Create and return a JavaScript Date Object from a date string in the WP timezone.\n *\n * @param {?string} dateString Date formatted in the WP timezone.\n *\n * @return {Date} Date\n */\nexport function getDate( dateString ) {\n\tif ( ! dateString ) {\n\t\treturn momentLib.tz( WP_ZONE ).toDate();\n\t}\n\n\treturn momentLib.tz( dateString, WP_ZONE ).toDate();\n}\n\n/**\n * Returns a human-readable time difference between two dates, like human_time_diff() in PHP.\n *\n * @param {Moment | Date | string} from From date, in the WP timezone.\n * @param {Moment | Date | string | undefined} to To date, formatted in the WP timezone.\n *\n * @return {string} Human-readable time difference.\n */\nexport function humanTimeDiff( from, to ) {\n\tconst fromMoment = momentLib.tz( from, WP_ZONE );\n\tconst toMoment = to ? momentLib.tz( to, WP_ZONE ) : momentLib.tz( WP_ZONE );\n\treturn fromMoment.from( toMoment );\n}\n\n/**\n * Creates a moment instance using the given timezone or, if none is provided, using global settings.\n *\n * @param {Moment | Date | string | undefined} dateValue Date object or string, parsable\n * by moment.js.\n * @param {string | number | undefined} timezone Timezone to output result in or a\n * UTC offset. Defaults to timezone from\n * site.\n *\n * @see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC\n *\n * @return {Moment} a moment instance.\n */\nfunction buildMoment( dateValue, timezone = '' ) {\n\tconst dateMoment = momentLib( dateValue );\n\n\tif ( timezone && ! isUTCOffset( timezone ) ) {\n\t\t// The ! isUTCOffset() check guarantees that timezone is a string.\n\t\treturn dateMoment.tz( /** @type {string} */ ( timezone ) );\n\t}\n\n\tif ( timezone && isUTCOffset( timezone ) ) {\n\t\treturn dateMoment.utcOffset( timezone );\n\t}\n\n\tif ( settings.timezone.string ) {\n\t\treturn dateMoment.tz( settings.timezone.string );\n\t}\n\n\treturn dateMoment.utcOffset( +settings.timezone.offset );\n}\n\n/**\n * Returns whether a certain UTC offset is valid or not.\n *\n * @param {number|string} offset a UTC offset.\n *\n * @return {boolean} whether a certain UTC offset is valid or not.\n */\nfunction isUTCOffset( offset ) {\n\tif ( 'number' === typeof offset ) {\n\t\treturn true;\n\t}\n\n\treturn VALID_UTC_OFFSET.test( offset );\n}\n\nsetupWPTimezone();\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_moment","_interopRequireDefault","require","_deprecated","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","WP_ZONE","VALID_UTC_OFFSET","settings","l10n","locale","months","monthsShort","weekdays","weekdaysShort","meridiem","am","pm","AM","PM","relative","future","past","s","ss","m","mm","h","hh","d","dd","M","MM","y","yy","startOfWeek","formats","time","date","datetime","datetimeAbbreviated","timezone","offset","offsetFormatted","string","abbr","setSettings","dateSettings","setupWPTimezone","momentLib","locales","includes","localeData","longDateFormat","defineLocale","currentLocale","parentLocale","hour","minute","isLowercase","LT","LTS","L","LL","LLL","LLLL","relativeTime","getSettings","__experimentalGetSettings","deprecated","since","alternative","currentTimezone","tz","zone","add","pack","name","abbrs","untils","offsets","MINUTE_IN_SECONDS","HOUR_IN_MINUTES","HOUR_IN_SECONDS","formatMap","D","j","l","N","S","momentDate","num","format","withOrdinal","replace","w","z","parseInt","toString","W","F","n","t","daysInMonth","isLeapYear","o","Y","a","A","B","timezoned","utcOffset","seconds","minutes","hours","g","G","H","i","u","v","e","I","isDST","O","P","T","Z","sign","parts","substring","split","map","c","r","U","dateFormat","dateValue","Date","char","newFormat","length","push","formatter","join","dateMoment","buildMoment","gmdate","utc","dateI18n","gmdateI18n","undefined","isInTheFuture","now","momentObject","isAfter","getDate","dateString","toDate","humanTimeDiff","from","to","fromMoment","toMoment","isUTCOffset","test"],"sources":["@wordpress/date/src/index.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { Moment } from 'moment';\nimport momentLib from 'moment';\nimport 'moment-timezone/moment-timezone';\nimport 'moment-timezone/moment-timezone-utils';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n/**\n * Internal dependencies\n */\nimport type { DateSettings } from './types';\n\nexport * from './types';\n\nconst WP_ZONE = 'WP';\n\n// This regular expression tests positive for UTC offsets as described in ISO 8601.\n// See: https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC\nconst VALID_UTC_OFFSET = /^[+-][0-1][0-9](:?[0-9][0-9])?$/;\n\n// Changes made here will likely need to be synced with Core in the file\n// src/wp-includes/script-loader.php in `wp_default_packages_inline_scripts()`.\nlet settings: DateSettings = {\n\tl10n: {\n\t\tlocale: 'en',\n\t\tmonths: [\n\t\t\t'January',\n\t\t\t'February',\n\t\t\t'March',\n\t\t\t'April',\n\t\t\t'May',\n\t\t\t'June',\n\t\t\t'July',\n\t\t\t'August',\n\t\t\t'September',\n\t\t\t'October',\n\t\t\t'November',\n\t\t\t'December',\n\t\t],\n\t\tmonthsShort: [\n\t\t\t'Jan',\n\t\t\t'Feb',\n\t\t\t'Mar',\n\t\t\t'Apr',\n\t\t\t'May',\n\t\t\t'Jun',\n\t\t\t'Jul',\n\t\t\t'Aug',\n\t\t\t'Sep',\n\t\t\t'Oct',\n\t\t\t'Nov',\n\t\t\t'Dec',\n\t\t],\n\t\tweekdays: [\n\t\t\t'Sunday',\n\t\t\t'Monday',\n\t\t\t'Tuesday',\n\t\t\t'Wednesday',\n\t\t\t'Thursday',\n\t\t\t'Friday',\n\t\t\t'Saturday',\n\t\t],\n\t\tweekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],\n\t\tmeridiem: { am: 'am', pm: 'pm', AM: 'AM', PM: 'PM' },\n\t\trelative: {\n\t\t\tfuture: '%s from now',\n\t\t\tpast: '%s ago',\n\t\t\ts: 'a few seconds',\n\t\t\tss: '%d seconds',\n\t\t\tm: 'a minute',\n\t\t\tmm: '%d minutes',\n\t\t\th: 'an hour',\n\t\t\thh: '%d hours',\n\t\t\td: 'a day',\n\t\t\tdd: '%d days',\n\t\t\tM: 'a month',\n\t\t\tMM: '%d months',\n\t\t\ty: 'a year',\n\t\t\tyy: '%d years',\n\t\t},\n\t\tstartOfWeek: 0,\n\t},\n\tformats: {\n\t\ttime: 'g: i a',\n\t\tdate: 'F j, Y',\n\t\tdatetime: 'F j, Y g: i a',\n\t\tdatetimeAbbreviated: 'M j, Y g: i a',\n\t},\n\ttimezone: { offset: '0', offsetFormatted: '0', string: '', abbr: '' },\n};\n\n/**\n * Adds a locale to moment, using the format supplied by `wp_localize_script()`.\n *\n * @param dateSettings Settings, including locale data.\n */\nexport function setSettings( dateSettings: DateSettings ) {\n\tsettings = dateSettings;\n\n\tsetupWPTimezone();\n\n\t// Does moment already have a locale with the right name?\n\tif ( momentLib.locales().includes( dateSettings.l10n.locale ) ) {\n\t\t// Is that locale misconfigured, e.g. because we are on a site running\n\t\t// WordPress < 6.0?\n\t\tif (\n\t\t\tmomentLib\n\t\t\t\t.localeData( dateSettings.l10n.locale )\n\t\t\t\t.longDateFormat( 'LTS' ) === null\n\t\t) {\n\t\t\t// Delete the misconfigured locale.\n\t\t\t// @ts-ignore Type definitions are incorrect - null is permitted.\n\t\t\tmomentLib.defineLocale( dateSettings.l10n.locale, null );\n\t\t} else {\n\t\t\t// We have a properly configured locale, so no need to create one.\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// defineLocale() will modify the current locale, so back it up.\n\tconst currentLocale = momentLib.locale();\n\n\t// Create locale.\n\tmomentLib.defineLocale( dateSettings.l10n.locale, {\n\t\t// Inherit anything missing from English. We don't load\n\t\t// moment-with-locales.js so English is all there is.\n\t\tparentLocale: 'en',\n\t\tmonths: dateSettings.l10n.months,\n\t\tmonthsShort: dateSettings.l10n.monthsShort,\n\t\tweekdays: dateSettings.l10n.weekdays,\n\t\tweekdaysShort: dateSettings.l10n.weekdaysShort,\n\t\tmeridiem( hour, minute, isLowercase ) {\n\t\t\tif ( hour < 12 ) {\n\t\t\t\treturn isLowercase\n\t\t\t\t\t? dateSettings.l10n.meridiem.am\n\t\t\t\t\t: dateSettings.l10n.meridiem.AM;\n\t\t\t}\n\t\t\treturn isLowercase\n\t\t\t\t? dateSettings.l10n.meridiem.pm\n\t\t\t\t: dateSettings.l10n.meridiem.PM;\n\t\t},\n\t\tlongDateFormat: {\n\t\t\tLT: dateSettings.formats.time,\n\t\t\tLTS: momentLib.localeData( 'en' ).longDateFormat( 'LTS' ),\n\t\t\tL: momentLib.localeData( 'en' ).longDateFormat( 'L' ),\n\t\t\tLL: dateSettings.formats.date,\n\t\t\tLLL: dateSettings.formats.datetime,\n\t\t\tLLLL: momentLib.localeData( 'en' ).longDateFormat( 'LLLL' ),\n\t\t},\n\t\t// From human_time_diff?\n\t\t// Set to `(number, withoutSuffix, key, isFuture) => {}` instead.\n\t\trelativeTime: dateSettings.l10n.relative,\n\t} );\n\n\t// Restore the locale to what it was.\n\tmomentLib.locale( currentLocale );\n}\n\n/**\n * Returns the currently defined date settings.\n *\n * @return {DateSettings} Settings, including locale data.\n */\nexport function getSettings() {\n\treturn settings;\n}\n\n/**\n * Returns the currently defined date settings.\n *\n * @deprecated\n * @return {DateSettings} Settings, including locale data.\n */\nexport function __experimentalGetSettings() {\n\tdeprecated( 'wp.date.__experimentalGetSettings', {\n\t\tsince: '6.1',\n\t\talternative: 'wp.date.getSettings',\n\t} );\n\treturn getSettings();\n}\n\nfunction setupWPTimezone() {\n\t// Get the current timezone settings from the WP timezone string.\n\tconst currentTimezone = momentLib.tz.zone( settings.timezone.string );\n\n\t// Check to see if we have a valid TZ data, if so, use it for the custom WP_ZONE timezone, otherwise just use the offset.\n\tif ( currentTimezone ) {\n\t\t// Create WP timezone based off settings.timezone.string. We need to include the additional data so that we\n\t\t// don't lose information about daylight savings time and other items.\n\t\t// See https://github.com/WordPress/gutenberg/pull/48083\n\t\tmomentLib.tz.add(\n\t\t\tmomentLib.tz.pack( {\n\t\t\t\tname: WP_ZONE,\n\t\t\t\tabbrs: currentTimezone.abbrs,\n\t\t\t\tuntils: currentTimezone.untils,\n\t\t\t\toffsets: currentTimezone.offsets,\n\t\t\t} )\n\t\t);\n\t} else {\n\t\t// Create WP timezone based off dateSettings.\n\t\tmomentLib.tz.add(\n\t\t\tmomentLib.tz.pack( {\n\t\t\t\tname: WP_ZONE,\n\t\t\t\tabbrs: [ WP_ZONE ],\n\t\t\t\tuntils: [ null ],\n\t\t\t\toffsets: [ -settings.timezone.offset * 60 || 0 ],\n\t\t\t} )\n\t\t);\n\t}\n}\n\n// Date constants.\n/**\n * Number of seconds in one minute.\n */\nconst MINUTE_IN_SECONDS = 60;\n/**\n * Number of minutes in one hour.\n */\nconst HOUR_IN_MINUTES = 60;\n/**\n * Number of seconds in one hour.\n */\nconst HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS;\n\n/**\n * Map of PHP formats to Moment.js formats.\n *\n * These are used internally by {@link format}, and are either\n * a string representing the corresponding Moment.js format code, or a\n * function which returns the formatted string.\n *\n * This should only be used through {@link format}, not\n * directly.\n */\nconst formatMap = {\n\t// Day.\n\td: 'DD',\n\tD: 'ddd',\n\tj: 'D',\n\tl: 'dddd',\n\tN: 'E',\n\n\t/**\n\t * Gets the ordinal suffix.\n\t *\n\t * @param momentDate Moment instance.\n\t *\n\t * @return Formatted date.\n\t */\n\tS( momentDate: Moment ) {\n\t\t// Do - D.\n\t\tconst num = momentDate.format( 'D' );\n\t\tconst withOrdinal = momentDate.format( 'Do' );\n\t\treturn withOrdinal.replace( num, '' );\n\t},\n\n\tw: 'd',\n\t/**\n\t * Gets the day of the year (zero-indexed).\n\t *\n\t * @param momentDate Moment instance.\n\t *\n\t * @return Formatted date.\n\t */\n\tz( momentDate: Moment ) {\n\t\t// DDD - 1.\n\t\treturn ( parseInt( momentDate.format( 'DDD' ), 10 ) - 1 ).toString();\n\t},\n\n\t// Week.\n\tW: 'W',\n\n\t// Month.\n\tF: 'MMMM',\n\tm: 'MM',\n\tM: 'MMM',\n\tn: 'M',\n\t/**\n\t * Gets the days in the month.\n\t *\n\t * @param momentDate Moment instance.\n\t *\n\t * @return Formatted date.\n\t */\n\tt( momentDate: Moment ) {\n\t\treturn momentDate.daysInMonth();\n\t},\n\n\t// Year.\n\t/**\n\t * Gets whether the current year is a leap year.\n\t *\n\t * @param momentDate Moment instance.\n\t *\n\t * @return Formatted date.\n\t */\n\tL( momentDate: Moment ) {\n\t\treturn momentDate.isLeapYear() ? '1' : '0';\n\t},\n\to: 'GGGG',\n\tY: 'YYYY',\n\ty: 'YY',\n\n\t// Time.\n\ta: 'a',\n\tA: 'A',\n\t/**\n\t * Gets the current time in Swatch Internet Time (.beats).\n\t *\n\t * @param momentDate Moment instance.\n\t *\n\t * @return Formatted date.\n\t */\n\tB( momentDate: Moment ) {\n\t\tconst timezoned = momentLib( momentDate ).utcOffset( 60 );\n\t\tconst seconds = parseInt( timezoned.format( 's' ), 10 ),\n\t\t\tminutes = parseInt( timezoned.format( 'm' ), 10 ),\n\t\t\thours = parseInt( timezoned.format( 'H' ), 10 );\n\t\treturn parseInt(\n\t\t\t(\n\t\t\t\t( seconds +\n\t\t\t\t\tminutes * MINUTE_IN_SECONDS +\n\t\t\t\t\thours * HOUR_IN_SECONDS ) /\n\t\t\t\t86.4\n\t\t\t).toString(),\n\t\t\t10\n\t\t);\n\t},\n\tg: 'h',\n\tG: 'H',\n\th: 'hh',\n\tH: 'HH',\n\ti: 'mm',\n\ts: 'ss',\n\tu: 'SSSSSS',\n\tv: 'SSS',\n\t// Timezone.\n\te: 'zz',\n\t/**\n\t * Gets whether the timezone is in DST currently.\n\t *\n\t * @param momentDate Moment instance.\n\t *\n\t * @return Formatted date.\n\t */\n\tI( momentDate: Moment ) {\n\t\treturn momentDate.isDST() ? '1' : '0';\n\t},\n\tO: 'ZZ',\n\tP: 'Z',\n\tT: 'z',\n\t/**\n\t * Gets the timezone offset in seconds.\n\t *\n\t * @param momentDate Moment instance.\n\t *\n\t * @return Formatted date.\n\t */\n\tZ( momentDate: Moment ) {\n\t\t// Timezone offset in seconds.\n\t\tconst offset = momentDate.format( 'Z' );\n\t\tconst sign = offset[ 0 ] === '-' ? -1 : 1;\n\t\tconst parts = offset\n\t\t\t.substring( 1 )\n\t\t\t.split( ':' )\n\t\t\t.map( ( n ) => parseInt( n, 10 ) );\n\t\treturn (\n\t\t\tsign *\n\t\t\t( parts[ 0 ] * HOUR_IN_MINUTES + parts[ 1 ] ) *\n\t\t\tMINUTE_IN_SECONDS\n\t\t);\n\t},\n\t// Full date/time.\n\tc: 'YYYY-MM-DDTHH:mm:ssZ', // .toISOString.\n\t/**\n\t * Formats the date as RFC2822.\n\t *\n\t * @param momentDate Moment instance.\n\t *\n\t * @return Formatted date.\n\t */\n\tr( momentDate: Moment ) {\n\t\treturn momentDate\n\t\t\t.locale( 'en' )\n\t\t\t.format( 'ddd, DD MMM YYYY HH:mm:ss ZZ' );\n\t},\n\tU: 'X',\n};\n\n/**\n * Formats a date. Does not alter the date's timezone.\n *\n * @param dateFormat PHP-style formatting string.\n * See [php.net/date](https://www.php.net/manual/en/function.date.php).\n * @param dateValue Date object or string,\n * parsable by moment.js.\n *\n * @return Formatted date.\n */\nexport function format(\n\tdateFormat: string,\n\tdateValue: Moment | Date | string | number = new Date()\n) {\n\tlet i, char;\n\tconst newFormat = [];\n\tconst momentDate = momentLib( dateValue );\n\tfor ( i = 0; i < dateFormat.length; i++ ) {\n\t\tchar = dateFormat[ i ];\n\t\t// Is this an escape?\n\t\tif ( '\\\\' === char ) {\n\t\t\t// Add next character, then move on.\n\t\t\ti++;\n\t\t\tnewFormat.push( '[' + dateFormat[ i ] + ']' );\n\t\t\tcontinue;\n\t\t}\n\t\tif ( char in formatMap ) {\n\t\t\tconst formatter = formatMap[ char as keyof typeof formatMap ];\n\t\t\tif ( typeof formatter !== 'string' ) {\n\t\t\t\t// If the format is a function, call it.\n\t\t\t\tnewFormat.push( '[' + formatter( momentDate ) + ']' );\n\t\t\t} else {\n\t\t\t\t// Otherwise, add as a formatting string.\n\t\t\t\tnewFormat.push( formatter );\n\t\t\t}\n\t\t} else {\n\t\t\tnewFormat.push( '[' + char + ']' );\n\t\t}\n\t}\n\t// Join with [] between to separate characters, and replace\n\t// unneeded separators with static text.\n\treturn momentDate.format( newFormat.join( '[]' ) );\n}\n\n/**\n * Formats a date (like `date()` in PHP).\n *\n * @param dateFormat PHP-style formatting string.\n * See [php.net/date](https://www.php.net/manual/en/function.date.php).\n * @param dateValue Date object or string, parsable\n * by moment.js.\n * @param timezone Timezone to output result in or a\n * UTC offset. Defaults to timezone from\n * site.\n *\n * @see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC\n *\n * @return {string} Formatted date in English.\n */\nexport function date(\n\tdateFormat: string,\n\tdateValue: Moment | Date | string | number = new Date(),\n\ttimezone?: string\n) {\n\tconst dateMoment = buildMoment( dateValue, timezone );\n\treturn format( dateFormat, dateMoment );\n}\n\n/**\n * Formats a date (like `date()` in PHP), in the UTC timezone.\n *\n * @param dateFormat PHP-style formatting string.\n * See [php.net/date](https://www.php.net/manual/en/function.date.php).\n * @param dateValue Date object or string,\n * parsable by moment.js.\n *\n * @return Formatted date in English.\n */\nexport function gmdate(\n\tdateFormat: string,\n\tdateValue: Moment | Date | string | number = new Date()\n) {\n\tconst dateMoment = momentLib( dateValue ).utc();\n\treturn format( dateFormat, dateMoment );\n}\n\n/**\n * Formats a date (like `wp_date()` in PHP), translating it into site's locale.\n *\n * Backward Compatibility Notice: if `timezone` is set to `true`, the function\n * behaves like `gmdateI18n`.\n *\n * @param dateFormat PHP-style formatting string.\n * See [php.net/date](https://www.php.net/manual/en/function.date.php).\n * @param dateValue Date object or string, parsable by\n * moment.js.\n * @param timezone Timezone to output result in or a\n * UTC offset. Defaults to timezone from\n * site. Notice: `boolean` is effectively\n * deprecated, but still supported for\n * backward compatibility reasons.\n *\n * @see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC\n *\n * @return Formatted date.\n */\nexport function dateI18n(\n\tdateFormat: string,\n\tdateValue: Moment | Date | string | number = new Date(),\n\ttimezone?: string | number | boolean\n) {\n\tif ( true === timezone ) {\n\t\treturn gmdateI18n( dateFormat, dateValue );\n\t}\n\n\tif ( false === timezone ) {\n\t\ttimezone = undefined;\n\t}\n\n\tconst dateMoment = buildMoment( dateValue, timezone );\n\tdateMoment.locale( settings.l10n.locale );\n\treturn format( dateFormat, dateMoment );\n}\n\n/**\n * Formats a date (like `wp_date()` in PHP), translating it into site's locale\n * and using the UTC timezone.\n *\n * @param dateFormat PHP-style formatting string.\n * See [php.net/date](https://www.php.net/manual/en/function.date.php).\n * @param dateValue Date object or string,\n * parsable by moment.js.\n *\n * @return Formatted date.\n */\nexport function gmdateI18n(\n\tdateFormat: string,\n\tdateValue: Moment | Date | string | number = new Date()\n) {\n\tconst dateMoment = momentLib( dateValue ).utc();\n\tdateMoment.locale( settings.l10n.locale );\n\treturn format( dateFormat, dateMoment );\n}\n\n/**\n * Check whether a date is considered in the future according to the WordPress settings.\n *\n * @param dateValue Date String or Date object in the Defined WP Timezone.\n *\n * @return Is in the future.\n */\nexport function isInTheFuture( dateValue: Date | string | number ) {\n\tconst now = momentLib.tz( WP_ZONE );\n\tconst momentObject = momentLib.tz( dateValue, WP_ZONE );\n\n\treturn momentObject.isAfter( now );\n}\n\n/**\n * Create and return a JavaScript Date Object from a date string in the WP timezone.\n *\n * @param dateString Date formatted in the WP timezone.\n *\n * @return Date\n */\nexport function getDate( dateString?: string | null ) {\n\tif ( ! dateString ) {\n\t\treturn momentLib.tz( WP_ZONE ).toDate();\n\t}\n\n\treturn momentLib.tz( dateString, WP_ZONE ).toDate();\n}\n\n/**\n * Returns a human-readable time difference between two dates, like human_time_diff() in PHP.\n *\n * @param from From date, in the WP timezone.\n * @param to To date, formatted in the WP timezone.\n *\n * @return Human-readable time difference.\n */\nexport function humanTimeDiff(\n\tfrom: Moment | Date | string | number,\n\tto?: Moment | Date | string | number\n) {\n\tconst fromMoment = momentLib.tz( from, WP_ZONE );\n\tconst toMoment = to ? momentLib.tz( to, WP_ZONE ) : momentLib.tz( WP_ZONE );\n\treturn fromMoment.from( toMoment );\n}\n\n/**\n * Creates a moment instance using the given timezone or, if none is provided, using global settings.\n *\n * @param dateValue Date object or string, parsable\n * by moment.js.\n * @param timezone Timezone to output result in or a\n * UTC offset. Defaults to timezone from\n * site.\n *\n * @see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC\n *\n * @return A moment instance.\n */\nfunction buildMoment(\n\tdateValue?: Moment | Date | string | number,\n\ttimezone: string | number = ''\n) {\n\tconst dateMoment = momentLib( dateValue );\n\n\tif ( timezone && ! isUTCOffset( timezone ) ) {\n\t\t// The ! isUTCOffset() check guarantees that timezone is a string.\n\t\treturn dateMoment.tz( timezone as string );\n\t}\n\n\tif ( timezone && isUTCOffset( timezone ) ) {\n\t\treturn dateMoment.utcOffset( timezone );\n\t}\n\n\tif ( settings.timezone.string ) {\n\t\treturn dateMoment.tz( settings.timezone.string );\n\t}\n\n\treturn dateMoment.utcOffset( +settings.timezone.offset );\n}\n\n/**\n * Returns whether a certain UTC offset is valid or not.\n *\n * @param offset a UTC offset.\n *\n * @return whether a certain UTC offset is valid or not.\n */\nfunction isUTCOffset( offset: number | string ) {\n\tif ( 'number' === typeof offset ) {\n\t\treturn true;\n\t}\n\n\treturn VALID_UTC_OFFSET.test( offset );\n}\n\nsetupWPTimezone();\n"],"mappings":"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","ignoreList":[]}
|
package/build/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["@wordpress/date/src/types.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { LocaleSpecification as MomentLocaleSpecification } from 'moment';\n\nexport type MeridiemConfig = {\n\t/**\n\t * Lowercase AM.\n\t */\n\tam: string;\n\n\t/**\n\t * Uppercase AM.\n\t */\n\tAM: string;\n\n\t/**\n\t * Lowercase PM.\n\t */\n\tpm: string;\n\n\t/**\n\t * Uppercase PM.\n\t */\n\tPM: string;\n};\n\nexport type FormatsConfig = {\n\t/**\n\t * Time format.\n\t */\n\ttime: string;\n\n\t/**\n\t * Date format.\n\t */\n\tdate: string;\n\n\t/**\n\t * Datetime format.\n\t */\n\tdatetime: string;\n\n\t/**\n\t * Abbreviated datetime format.\n\t */\n\tdatetimeAbbreviated: string;\n};\n\nexport type TimezoneConfig = {\n\t/**\n\t * Offset setting.\n\t */\n\toffset: string;\n\n\t/**\n\t * Offset setting with decimals formatted to minutes.\n\t */\n\toffsetFormatted: string;\n\n\t/**\n\t * The timezone as a string (e.g., `'America/Los_Angeles'`).\n\t */\n\tstring: string;\n\n\t/**\n\t * Abbreviation for the timezone.\n\t */\n\tabbr: string;\n};\n\nexport type L10nSettings = {\n\t/**\n\t * Moment locale.\n\t */\n\tlocale: string;\n\n\t/**\n\t * Locale months.\n\t *\n\t * @example\n\t * ['January', 'February', ... ]\n\t */\n\tmonths: MomentLocaleSpecification[ 'months' ];\n\n\t/**\n\t * Locale months short.\n\t *\n\t * @example\n\t * ['Jan', 'Feb', ... ]\n\t */\n\tmonthsShort: MomentLocaleSpecification[ 'monthsShort' ];\n\n\t/**\n\t * Locale weekdays.\n\t *\n\t * @example\n\t * ['Sunday', 'Monday', ... ]\n\t */\n\tweekdays: MomentLocaleSpecification[ 'weekdays' ];\n\n\t/**\n\t * Locale weekdays short.\n\t */\n\tweekdaysShort: MomentLocaleSpecification[ 'weekdaysShort' ];\n\n\t/**\n\t * Meridiem config.\n\t */\n\tmeridiem: MeridiemConfig;\n\n\t/**\n\t * Relative time config.\n\t */\n\trelative: MomentLocaleSpecification[ 'relativeTime' ];\n\n\t/**\n\t * Day that the week starts on.\n\t */\n\tstartOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n};\n\nexport type DateSettings = {\n\t/**\n\t * Localization settings.\n\t */\n\tl10n: L10nSettings;\n\n\t/**\n\t * Date/time formats config.\n\t */\n\tformats: FormatsConfig;\n\n\t/**\n\t * Timezone settings.\n\t */\n\ttimezone: TimezoneConfig;\n};\n"],"mappings":"","ignoreList":[]}
|
package/build-module/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
+
|
|
4
5
|
import momentLib from 'moment';
|
|
5
6
|
import 'moment-timezone/moment-timezone';
|
|
6
7
|
import 'moment-timezone/moment-timezone-utils';
|
|
@@ -9,55 +10,11 @@ import 'moment-timezone/moment-timezone-utils';
|
|
|
9
10
|
* WordPress dependencies
|
|
10
11
|
*/
|
|
11
12
|
import deprecated from '@wordpress/deprecated';
|
|
12
|
-
|
|
13
|
-
/** @typedef {import('moment').Moment} Moment */
|
|
14
|
-
/** @typedef {import('moment').LocaleSpecification} MomentLocaleSpecification */
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* @typedef MeridiemConfig
|
|
18
|
-
* @property {string} am Lowercase AM.
|
|
19
|
-
* @property {string} AM Uppercase AM.
|
|
20
|
-
* @property {string} pm Lowercase PM.
|
|
21
|
-
* @property {string} PM Uppercase PM.
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
13
|
/**
|
|
25
|
-
*
|
|
26
|
-
* @property {string} time Time format.
|
|
27
|
-
* @property {string} date Date format.
|
|
28
|
-
* @property {string} datetime Datetime format.
|
|
29
|
-
* @property {string} datetimeAbbreviated Abbreviated datetime format.
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @typedef TimezoneConfig
|
|
34
|
-
* @property {string} offset Offset setting.
|
|
35
|
-
* @property {string} offsetFormatted Offset setting with decimals formatted to minutes.
|
|
36
|
-
* @property {string} string The timezone as a string (e.g., `'America/Los_Angeles'`).
|
|
37
|
-
* @property {string} abbr Abbreviation for the timezone.
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
/* eslint-disable jsdoc/valid-types */
|
|
41
|
-
/**
|
|
42
|
-
* @typedef L10nSettings
|
|
43
|
-
* @property {string} locale Moment locale.
|
|
44
|
-
* @property {MomentLocaleSpecification['months']} months Locale months.
|
|
45
|
-
* @property {MomentLocaleSpecification['monthsShort']} monthsShort Locale months short.
|
|
46
|
-
* @property {MomentLocaleSpecification['weekdays']} weekdays Locale weekdays.
|
|
47
|
-
* @property {MomentLocaleSpecification['weekdaysShort']} weekdaysShort Locale weekdays short.
|
|
48
|
-
* @property {MeridiemConfig} meridiem Meridiem config.
|
|
49
|
-
* @property {MomentLocaleSpecification['relativeTime']} relative Relative time config.
|
|
50
|
-
* @property {0|1|2|3|4|5|6} startOfWeek Day that the week starts on.
|
|
51
|
-
*/
|
|
52
|
-
/* eslint-enable jsdoc/valid-types */
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* @typedef DateSettings
|
|
56
|
-
* @property {L10nSettings} l10n Localization settings.
|
|
57
|
-
* @property {FormatsConfig} formats Date/time formats config.
|
|
58
|
-
* @property {TimezoneConfig} timezone Timezone settings.
|
|
14
|
+
* Internal dependencies
|
|
59
15
|
*/
|
|
60
16
|
|
|
17
|
+
export * from './types';
|
|
61
18
|
const WP_ZONE = 'WP';
|
|
62
19
|
|
|
63
20
|
// This regular expression tests positive for UTC offsets as described in ISO 8601.
|
|
@@ -66,7 +23,6 @@ const VALID_UTC_OFFSET = /^[+-][0-1][0-9](:?[0-9][0-9])?$/;
|
|
|
66
23
|
|
|
67
24
|
// Changes made here will likely need to be synced with Core in the file
|
|
68
25
|
// src/wp-includes/script-loader.php in `wp_default_packages_inline_scripts()`.
|
|
69
|
-
/** @type {DateSettings} */
|
|
70
26
|
let settings = {
|
|
71
27
|
l10n: {
|
|
72
28
|
locale: 'en',
|
|
@@ -115,7 +71,7 @@ let settings = {
|
|
|
115
71
|
/**
|
|
116
72
|
* Adds a locale to moment, using the format supplied by `wp_localize_script()`.
|
|
117
73
|
*
|
|
118
|
-
* @param
|
|
74
|
+
* @param dateSettings Settings, including locale data.
|
|
119
75
|
*/
|
|
120
76
|
export function setSettings(dateSettings) {
|
|
121
77
|
settings = dateSettings;
|
|
@@ -221,31 +177,25 @@ function setupWPTimezone() {
|
|
|
221
177
|
// Date constants.
|
|
222
178
|
/**
|
|
223
179
|
* Number of seconds in one minute.
|
|
224
|
-
*
|
|
225
|
-
* @type {number}
|
|
226
180
|
*/
|
|
227
181
|
const MINUTE_IN_SECONDS = 60;
|
|
228
182
|
/**
|
|
229
183
|
* Number of minutes in one hour.
|
|
230
|
-
*
|
|
231
|
-
* @type {number}
|
|
232
184
|
*/
|
|
233
185
|
const HOUR_IN_MINUTES = 60;
|
|
234
186
|
/**
|
|
235
187
|
* Number of seconds in one hour.
|
|
236
|
-
*
|
|
237
|
-
* @type {number}
|
|
238
188
|
*/
|
|
239
189
|
const HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS;
|
|
240
190
|
|
|
241
191
|
/**
|
|
242
192
|
* Map of PHP formats to Moment.js formats.
|
|
243
193
|
*
|
|
244
|
-
* These are used internally by {@link
|
|
194
|
+
* These are used internally by {@link format}, and are either
|
|
245
195
|
* a string representing the corresponding Moment.js format code, or a
|
|
246
196
|
* function which returns the formatted string.
|
|
247
197
|
*
|
|
248
|
-
* This should only be used through {@link
|
|
198
|
+
* This should only be used through {@link format}, not
|
|
249
199
|
* directly.
|
|
250
200
|
*/
|
|
251
201
|
const formatMap = {
|
|
@@ -258,9 +208,9 @@ const formatMap = {
|
|
|
258
208
|
/**
|
|
259
209
|
* Gets the ordinal suffix.
|
|
260
210
|
*
|
|
261
|
-
* @param
|
|
211
|
+
* @param momentDate Moment instance.
|
|
262
212
|
*
|
|
263
|
-
* @return
|
|
213
|
+
* @return Formatted date.
|
|
264
214
|
*/
|
|
265
215
|
S(momentDate) {
|
|
266
216
|
// Do - D.
|
|
@@ -272,9 +222,9 @@ const formatMap = {
|
|
|
272
222
|
/**
|
|
273
223
|
* Gets the day of the year (zero-indexed).
|
|
274
224
|
*
|
|
275
|
-
* @param
|
|
225
|
+
* @param momentDate Moment instance.
|
|
276
226
|
*
|
|
277
|
-
* @return
|
|
227
|
+
* @return Formatted date.
|
|
278
228
|
*/
|
|
279
229
|
z(momentDate) {
|
|
280
230
|
// DDD - 1.
|
|
@@ -290,9 +240,9 @@ const formatMap = {
|
|
|
290
240
|
/**
|
|
291
241
|
* Gets the days in the month.
|
|
292
242
|
*
|
|
293
|
-
* @param
|
|
243
|
+
* @param momentDate Moment instance.
|
|
294
244
|
*
|
|
295
|
-
* @return
|
|
245
|
+
* @return Formatted date.
|
|
296
246
|
*/
|
|
297
247
|
t(momentDate) {
|
|
298
248
|
return momentDate.daysInMonth();
|
|
@@ -301,9 +251,9 @@ const formatMap = {
|
|
|
301
251
|
/**
|
|
302
252
|
* Gets whether the current year is a leap year.
|
|
303
253
|
*
|
|
304
|
-
* @param
|
|
254
|
+
* @param momentDate Moment instance.
|
|
305
255
|
*
|
|
306
|
-
* @return
|
|
256
|
+
* @return Formatted date.
|
|
307
257
|
*/
|
|
308
258
|
L(momentDate) {
|
|
309
259
|
return momentDate.isLeapYear() ? '1' : '0';
|
|
@@ -317,9 +267,9 @@ const formatMap = {
|
|
|
317
267
|
/**
|
|
318
268
|
* Gets the current time in Swatch Internet Time (.beats).
|
|
319
269
|
*
|
|
320
|
-
* @param
|
|
270
|
+
* @param momentDate Moment instance.
|
|
321
271
|
*
|
|
322
|
-
* @return
|
|
272
|
+
* @return Formatted date.
|
|
323
273
|
*/
|
|
324
274
|
B(momentDate) {
|
|
325
275
|
const timezoned = momentLib(momentDate).utcOffset(60);
|
|
@@ -341,9 +291,9 @@ const formatMap = {
|
|
|
341
291
|
/**
|
|
342
292
|
* Gets whether the timezone is in DST currently.
|
|
343
293
|
*
|
|
344
|
-
* @param
|
|
294
|
+
* @param momentDate Moment instance.
|
|
345
295
|
*
|
|
346
|
-
* @return
|
|
296
|
+
* @return Formatted date.
|
|
347
297
|
*/
|
|
348
298
|
I(momentDate) {
|
|
349
299
|
return momentDate.isDST() ? '1' : '0';
|
|
@@ -354,9 +304,9 @@ const formatMap = {
|
|
|
354
304
|
/**
|
|
355
305
|
* Gets the timezone offset in seconds.
|
|
356
306
|
*
|
|
357
|
-
* @param
|
|
307
|
+
* @param momentDate Moment instance.
|
|
358
308
|
*
|
|
359
|
-
* @return
|
|
309
|
+
* @return Formatted date.
|
|
360
310
|
*/
|
|
361
311
|
Z(momentDate) {
|
|
362
312
|
// Timezone offset in seconds.
|
|
@@ -371,9 +321,9 @@ const formatMap = {
|
|
|
371
321
|
/**
|
|
372
322
|
* Formats the date as RFC2822.
|
|
373
323
|
*
|
|
374
|
-
* @param
|
|
324
|
+
* @param momentDate Moment instance.
|
|
375
325
|
*
|
|
376
|
-
* @return
|
|
326
|
+
* @return Formatted date.
|
|
377
327
|
*/
|
|
378
328
|
r(momentDate) {
|
|
379
329
|
return momentDate.locale('en').format('ddd, DD MMM YYYY HH:mm:ss ZZ');
|
|
@@ -384,12 +334,12 @@ const formatMap = {
|
|
|
384
334
|
/**
|
|
385
335
|
* Formats a date. Does not alter the date's timezone.
|
|
386
336
|
*
|
|
387
|
-
* @param
|
|
388
|
-
*
|
|
389
|
-
* @param
|
|
390
|
-
*
|
|
337
|
+
* @param dateFormat PHP-style formatting string.
|
|
338
|
+
* See [php.net/date](https://www.php.net/manual/en/function.date.php).
|
|
339
|
+
* @param dateValue Date object or string,
|
|
340
|
+
* parsable by moment.js.
|
|
391
341
|
*
|
|
392
|
-
* @return
|
|
342
|
+
* @return Formatted date.
|
|
393
343
|
*/
|
|
394
344
|
export function format(dateFormat, dateValue = new Date()) {
|
|
395
345
|
let i, char;
|
|
@@ -405,7 +355,7 @@ export function format(dateFormat, dateValue = new Date()) {
|
|
|
405
355
|
continue;
|
|
406
356
|
}
|
|
407
357
|
if (char in formatMap) {
|
|
408
|
-
const formatter = formatMap[
|
|
358
|
+
const formatter = formatMap[char];
|
|
409
359
|
if (typeof formatter !== 'string') {
|
|
410
360
|
// If the format is a function, call it.
|
|
411
361
|
newFormat.push('[' + formatter(momentDate) + ']');
|
|
@@ -425,13 +375,13 @@ export function format(dateFormat, dateValue = new Date()) {
|
|
|
425
375
|
/**
|
|
426
376
|
* Formats a date (like `date()` in PHP).
|
|
427
377
|
*
|
|
428
|
-
* @param
|
|
429
|
-
*
|
|
430
|
-
* @param
|
|
431
|
-
*
|
|
432
|
-
* @param
|
|
433
|
-
*
|
|
434
|
-
*
|
|
378
|
+
* @param dateFormat PHP-style formatting string.
|
|
379
|
+
* See [php.net/date](https://www.php.net/manual/en/function.date.php).
|
|
380
|
+
* @param dateValue Date object or string, parsable
|
|
381
|
+
* by moment.js.
|
|
382
|
+
* @param timezone Timezone to output result in or a
|
|
383
|
+
* UTC offset. Defaults to timezone from
|
|
384
|
+
* site.
|
|
435
385
|
*
|
|
436
386
|
* @see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
|
437
387
|
* @see https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC
|
|
@@ -446,12 +396,12 @@ export function date(dateFormat, dateValue = new Date(), timezone) {
|
|
|
446
396
|
/**
|
|
447
397
|
* Formats a date (like `date()` in PHP), in the UTC timezone.
|
|
448
398
|
*
|
|
449
|
-
* @param
|
|
450
|
-
*
|
|
451
|
-
* @param
|
|
452
|
-
*
|
|
399
|
+
* @param dateFormat PHP-style formatting string.
|
|
400
|
+
* See [php.net/date](https://www.php.net/manual/en/function.date.php).
|
|
401
|
+
* @param dateValue Date object or string,
|
|
402
|
+
* parsable by moment.js.
|
|
453
403
|
*
|
|
454
|
-
* @return
|
|
404
|
+
* @return Formatted date in English.
|
|
455
405
|
*/
|
|
456
406
|
export function gmdate(dateFormat, dateValue = new Date()) {
|
|
457
407
|
const dateMoment = momentLib(dateValue).utc();
|
|
@@ -464,20 +414,20 @@ export function gmdate(dateFormat, dateValue = new Date()) {
|
|
|
464
414
|
* Backward Compatibility Notice: if `timezone` is set to `true`, the function
|
|
465
415
|
* behaves like `gmdateI18n`.
|
|
466
416
|
*
|
|
467
|
-
* @param
|
|
468
|
-
*
|
|
469
|
-
* @param
|
|
470
|
-
*
|
|
471
|
-
* @param
|
|
472
|
-
*
|
|
473
|
-
*
|
|
474
|
-
*
|
|
475
|
-
*
|
|
417
|
+
* @param dateFormat PHP-style formatting string.
|
|
418
|
+
* See [php.net/date](https://www.php.net/manual/en/function.date.php).
|
|
419
|
+
* @param dateValue Date object or string, parsable by
|
|
420
|
+
* moment.js.
|
|
421
|
+
* @param timezone Timezone to output result in or a
|
|
422
|
+
* UTC offset. Defaults to timezone from
|
|
423
|
+
* site. Notice: `boolean` is effectively
|
|
424
|
+
* deprecated, but still supported for
|
|
425
|
+
* backward compatibility reasons.
|
|
476
426
|
*
|
|
477
427
|
* @see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
|
478
428
|
* @see https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC
|
|
479
429
|
*
|
|
480
|
-
* @return
|
|
430
|
+
* @return Formatted date.
|
|
481
431
|
*/
|
|
482
432
|
export function dateI18n(dateFormat, dateValue = new Date(), timezone) {
|
|
483
433
|
if (true === timezone) {
|
|
@@ -495,12 +445,12 @@ export function dateI18n(dateFormat, dateValue = new Date(), timezone) {
|
|
|
495
445
|
* Formats a date (like `wp_date()` in PHP), translating it into site's locale
|
|
496
446
|
* and using the UTC timezone.
|
|
497
447
|
*
|
|
498
|
-
* @param
|
|
499
|
-
*
|
|
500
|
-
* @param
|
|
501
|
-
*
|
|
448
|
+
* @param dateFormat PHP-style formatting string.
|
|
449
|
+
* See [php.net/date](https://www.php.net/manual/en/function.date.php).
|
|
450
|
+
* @param dateValue Date object or string,
|
|
451
|
+
* parsable by moment.js.
|
|
502
452
|
*
|
|
503
|
-
* @return
|
|
453
|
+
* @return Formatted date.
|
|
504
454
|
*/
|
|
505
455
|
export function gmdateI18n(dateFormat, dateValue = new Date()) {
|
|
506
456
|
const dateMoment = momentLib(dateValue).utc();
|
|
@@ -511,9 +461,9 @@ export function gmdateI18n(dateFormat, dateValue = new Date()) {
|
|
|
511
461
|
/**
|
|
512
462
|
* Check whether a date is considered in the future according to the WordPress settings.
|
|
513
463
|
*
|
|
514
|
-
* @param
|
|
464
|
+
* @param dateValue Date String or Date object in the Defined WP Timezone.
|
|
515
465
|
*
|
|
516
|
-
* @return
|
|
466
|
+
* @return Is in the future.
|
|
517
467
|
*/
|
|
518
468
|
export function isInTheFuture(dateValue) {
|
|
519
469
|
const now = momentLib.tz(WP_ZONE);
|
|
@@ -524,9 +474,9 @@ export function isInTheFuture(dateValue) {
|
|
|
524
474
|
/**
|
|
525
475
|
* Create and return a JavaScript Date Object from a date string in the WP timezone.
|
|
526
476
|
*
|
|
527
|
-
* @param
|
|
477
|
+
* @param dateString Date formatted in the WP timezone.
|
|
528
478
|
*
|
|
529
|
-
* @return
|
|
479
|
+
* @return Date
|
|
530
480
|
*/
|
|
531
481
|
export function getDate(dateString) {
|
|
532
482
|
if (!dateString) {
|
|
@@ -538,10 +488,10 @@ export function getDate(dateString) {
|
|
|
538
488
|
/**
|
|
539
489
|
* Returns a human-readable time difference between two dates, like human_time_diff() in PHP.
|
|
540
490
|
*
|
|
541
|
-
* @param
|
|
542
|
-
* @param
|
|
491
|
+
* @param from From date, in the WP timezone.
|
|
492
|
+
* @param to To date, formatted in the WP timezone.
|
|
543
493
|
*
|
|
544
|
-
* @return
|
|
494
|
+
* @return Human-readable time difference.
|
|
545
495
|
*/
|
|
546
496
|
export function humanTimeDiff(from, to) {
|
|
547
497
|
const fromMoment = momentLib.tz(from, WP_ZONE);
|
|
@@ -552,22 +502,22 @@ export function humanTimeDiff(from, to) {
|
|
|
552
502
|
/**
|
|
553
503
|
* Creates a moment instance using the given timezone or, if none is provided, using global settings.
|
|
554
504
|
*
|
|
555
|
-
* @param
|
|
556
|
-
*
|
|
557
|
-
* @param
|
|
558
|
-
*
|
|
559
|
-
*
|
|
505
|
+
* @param dateValue Date object or string, parsable
|
|
506
|
+
* by moment.js.
|
|
507
|
+
* @param timezone Timezone to output result in or a
|
|
508
|
+
* UTC offset. Defaults to timezone from
|
|
509
|
+
* site.
|
|
560
510
|
*
|
|
561
511
|
* @see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
|
562
512
|
* @see https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC
|
|
563
513
|
*
|
|
564
|
-
* @return
|
|
514
|
+
* @return A moment instance.
|
|
565
515
|
*/
|
|
566
516
|
function buildMoment(dateValue, timezone = '') {
|
|
567
517
|
const dateMoment = momentLib(dateValue);
|
|
568
518
|
if (timezone && !isUTCOffset(timezone)) {
|
|
569
519
|
// The ! isUTCOffset() check guarantees that timezone is a string.
|
|
570
|
-
return dateMoment.tz(
|
|
520
|
+
return dateMoment.tz(timezone);
|
|
571
521
|
}
|
|
572
522
|
if (timezone && isUTCOffset(timezone)) {
|
|
573
523
|
return dateMoment.utcOffset(timezone);
|
|
@@ -581,9 +531,9 @@ function buildMoment(dateValue, timezone = '') {
|
|
|
581
531
|
/**
|
|
582
532
|
* Returns whether a certain UTC offset is valid or not.
|
|
583
533
|
*
|
|
584
|
-
* @param
|
|
534
|
+
* @param offset a UTC offset.
|
|
585
535
|
*
|
|
586
|
-
* @return
|
|
536
|
+
* @return whether a certain UTC offset is valid or not.
|
|
587
537
|
*/
|
|
588
538
|
function isUTCOffset(offset) {
|
|
589
539
|
if ('number' === typeof offset) {
|