Comparing version 1.0.0 to 1.1.0
# Changelog | ||
## 1.1.0 | ||
- Feat: Added support for handling time zones. | ||
## 1.0.0 | ||
@@ -4,0 +8,0 @@ |
@@ -9,2 +9,3 @@ /// <reference types="react" /> | ||
formats?: Partial<Formats>; | ||
timeZone?: string; | ||
onError(error: IntlError): void; | ||
@@ -11,0 +12,0 @@ getMessageFallback(info: { |
@@ -13,2 +13,4 @@ import { ReactNode } from 'react'; | ||
formats?: Partial<Formats>; | ||
/** A time zone as defined in [the tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) which will be applied when formatting dates and times. If this is absent, the user time zone will be used. You can override this by supplying an explicit time zone to `formatDateTime`. */ | ||
timeZone?: string; | ||
/** This callback will be invoked when an error is encountered during | ||
@@ -15,0 +17,0 @@ * resolving a message or formatting it. This defaults to `console.error` to |
@@ -410,3 +410,4 @@ 'use strict'; | ||
locale = _useIntlContext.locale, | ||
onError = _useIntlContext.onError; | ||
onError = _useIntlContext.onError, | ||
timeZone = _useIntlContext.timeZone; | ||
@@ -449,4 +450,17 @@ function resolveFormatOrOptions(typeFormats, formatOrOptions) { | ||
function formatDateTime(value, formatOrOptions) { | ||
return getFormattedValue(value, formatOrOptions, _extends({}, formats == null ? void 0 : formats.dateTime), function (options) { | ||
function formatDateTime( | ||
/** If a number is supplied, this is interpreted as a UTC timestamp. */ | ||
value, | ||
/** If a time zone is supplied, the `value` is converted to that time zone. | ||
* Otherwise the user time zone will be used. */ | ||
formatOrOptions) { | ||
return getFormattedValue(value, formatOrOptions, formats == null ? void 0 : formats.dateTime, function (options) { | ||
var _options; | ||
if (timeZone && !((_options = options) != null && _options.timeZone)) { | ||
options = _extends({}, options, { | ||
timeZone: timeZone | ||
}); | ||
} | ||
return new Intl.DateTimeFormat(locale, options).format(value); | ||
@@ -462,3 +476,7 @@ }); | ||
function formatRelativeTime(date, now) { | ||
function formatRelativeTime( | ||
/** The date time that needs to be formatted. */ | ||
date, | ||
/** The reference point in time to which `date` will be formatted in relation to. */ | ||
now) { | ||
var dateDate = date instanceof Date ? date : new Date(date); | ||
@@ -465,0 +483,0 @@ var nowDate = now instanceof Date ? now : new Date(now); |
@@ -1,2 +0,2 @@ | ||
"use strict";function r(r){return r&&"object"==typeof r&&"default"in r?r.default:r}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),e=r(t),n=r(require("intl-messageformat"));function o(){return(o=Object.assign||function(r){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n])}return r}).apply(this,arguments)}function u(r){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)})(r)}function a(r,t){return(a=Object.setPrototypeOf||function(r,t){return r.__proto__=t,r})(r,t)}function i(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(r){return!1}}function c(r,t,e){return(c=i()?Reflect.construct:function(r,t,e){var n=[null];n.push.apply(n,t);var o=new(Function.bind.apply(r,n));return e&&a(o,e.prototype),o}).apply(null,arguments)}function f(r){var t="function"==typeof Map?new Map:void 0;return(f=function(r){if(null===r||-1===Function.toString.call(r).indexOf("[native code]"))return r;if("function"!=typeof r)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(r))return t.get(r);t.set(r,e)}function e(){return c(r,arguments,u(this).constructor)}return e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),a(e,r)})(r)}var l,s=t.createContext(void 0);function p(r){return[r.namespace,r.key].filter((function(r){return null!=r})).join(".")}(l=exports.IntlErrorCode||(exports.IntlErrorCode={})).MISSING_MESSAGE="MISSING_MESSAGE",l.MISSING_FORMAT="MISSING_FORMAT",l.INSUFFICIENT_PATH="INSUFFICIENT_PATH",l.INVALID_MESSAGE="INVALID_MESSAGE",l.FORMATTING_ERROR="FORMATTING_ERROR";var v=function(r){var t,e;function n(t,e){var n,o=t;return e&&(o+=": "+e),(n=r.call(this,o)||this).code=t,e&&(n.originalMessage=e),n}return e=r,(t=n).prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e,n}(f(Error));function d(){var r=t.useContext(s);if(!r)throw new Error(void 0);return r}function I(r,t,e){var n=r;return t.split(".").forEach((function(r){var t=n[r];if(null==r||null==t)throw new Error(void 0);n=t})),n}exports.IntlError=v,exports.IntlProvider=function(r){var t=r.children,n=r.onError,u=void 0===n?console.error:n,a=r.getMessageFallback,i=void 0===a?p:a,c=function(r,t){if(null==r)return{};var e,n,o={},u=Object.keys(r);for(n=0;n<u.length;n++)t.indexOf(e=u[n])>=0||(o[e]=r[e]);return o}(r,["children","onError","getMessageFallback"]);return e.createElement(s.Provider,{value:o({},c,{onError:u,getMessageFallback:i})},t)},exports.useIntl=function(){var r=d(),t=r.formats,e=r.locale,n=r.onError;function u(r,t,e,o){var u;try{u=function(r,t){var e;if("string"==typeof t){if(!(e=null==r?void 0:r[t])){var o=new v(exports.IntlErrorCode.MISSING_FORMAT,void 0);throw n(o),o}}else e=t;return e}(e,t)}catch(t){return String(r)}try{return o(u)}catch(t){return n(new v(exports.IntlErrorCode.FORMATTING_ERROR,t.message)),String(r)}}return{formatDateTime:function(r,n){return u(r,n,o({},null==t?void 0:t.dateTime),(function(t){return new Intl.DateTimeFormat(e,t).format(r)}))},formatNumber:function(r,n){return u(r,n,null==t?void 0:t.number,(function(t){return new Intl.NumberFormat(e,t).format(r)}))},formatRelativeTime:function(r,t){var o=r instanceof Date?r:new Date(r),u=t instanceof Date?t:new Date(t),a=function(r){var t,e,n=Math.abs(r);return n<60?(e="second",t=Math.round(r)):n<3600?(e="minute",t=Math.round(r/60)):n<86400?(e="hour",t=Math.round(r/3600)):n<604800?(e="day",t=Math.round(r/86400)):n<2628e3?(e="week",t=Math.round(r/604800)):n<31536e3?(e="month",t=Math.round(r/2628e3)):(e="year",t=Math.round(r/31536e3)),{value:t,unit:e}}((o.getTime()-u.getTime())/1e3),i=a.unit,c=a.value;try{return new Intl.RelativeTimeFormat(e,{numeric:"auto"}).format(c,i)}catch(t){return n(new v(exports.IntlErrorCode.FORMATTING_ERROR,t.message)),String(r)}}}},exports.useTranslations=function(r){var e=d(),u=e.formats,a=e.getMessageFallback,i=e.locale,c=e.messages,f=e.onError,l=t.useRef({}),s=t.useMemo((function(){try{var t=r?I(c,r):c;if(!t)throw new Error(void 0);return t}catch(r){var e=new v(exports.IntlErrorCode.MISSING_MESSAGE,r.message);return f(e),e}}),[c,r,f]);return t.useCallback((function(e,c,p){var d,E=l.current;function m(t,n){var o=new v(t,n);return f(o),a({error:o,key:e,namespace:r})}if(s instanceof v)return a({error:s,key:e,namespace:r});var y,h=s;if(null!=(d=E[i])&&d[e])y=E[i][e];else{var M;try{M=I(h,e)}catch(r){return m(exports.IntlErrorCode.MISSING_MESSAGE,r.message)}if("object"==typeof M)return m(exports.IntlErrorCode.INSUFFICIENT_PATH,void 0);try{y=new n(M,i,function(r){return o({},r,{date:null==r?void 0:r.dateTime,time:null==r?void 0:r.dateTime})}(o({},u,p)))}catch(r){return m(exports.IntlErrorCode.INVALID_MESSAGE,r.message)}E[i]||(E[i]={}),E[i][e]=y}try{var S=y.format(function(r){if(!r)return r;var e={};return Object.keys(r).forEach((function(n){var o=r[n];e[n]="function"==typeof o?function(r){var e=o(r);return t.isValidElement(e)?t.cloneElement(e,{key:e.key||n+String(r)}):e}:o})),e}(c));if(null==S)throw new Error(void 0);return S}catch(r){return m(exports.IntlErrorCode.FORMATTING_ERROR,r.message)}}),[a,u,i,s,r,f])}; | ||
"use strict";function r(r){return r&&"object"==typeof r&&"default"in r?r.default:r}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),e=r(t),n=r(require("intl-messageformat"));function o(){return(o=Object.assign||function(r){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n])}return r}).apply(this,arguments)}function u(r){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)})(r)}function a(r,t){return(a=Object.setPrototypeOf||function(r,t){return r.__proto__=t,r})(r,t)}function i(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(r){return!1}}function c(r,t,e){return(c=i()?Reflect.construct:function(r,t,e){var n=[null];n.push.apply(n,t);var o=new(Function.bind.apply(r,n));return e&&a(o,e.prototype),o}).apply(null,arguments)}function l(r){var t="function"==typeof Map?new Map:void 0;return(l=function(r){if(null===r||-1===Function.toString.call(r).indexOf("[native code]"))return r;if("function"!=typeof r)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(r))return t.get(r);t.set(r,e)}function e(){return c(r,arguments,u(this).constructor)}return e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),a(e,r)})(r)}var f,s=t.createContext(void 0);function p(r){return[r.namespace,r.key].filter((function(r){return null!=r})).join(".")}(f=exports.IntlErrorCode||(exports.IntlErrorCode={})).MISSING_MESSAGE="MISSING_MESSAGE",f.MISSING_FORMAT="MISSING_FORMAT",f.INSUFFICIENT_PATH="INSUFFICIENT_PATH",f.INVALID_MESSAGE="INVALID_MESSAGE",f.FORMATTING_ERROR="FORMATTING_ERROR";var v=function(r){var t,e;function n(t,e){var n,o=t;return e&&(o+=": "+e),(n=r.call(this,o)||this).code=t,e&&(n.originalMessage=e),n}return e=r,(t=n).prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e,n}(l(Error));function d(){var r=t.useContext(s);if(!r)throw new Error(void 0);return r}function m(r,t,e){var n=r;return t.split(".").forEach((function(r){var t=n[r];if(null==r||null==t)throw new Error(void 0);n=t})),n}exports.IntlError=v,exports.IntlProvider=function(r){var t=r.children,n=r.onError,u=void 0===n?console.error:n,a=r.getMessageFallback,i=void 0===a?p:a,c=function(r,t){if(null==r)return{};var e,n,o={},u=Object.keys(r);for(n=0;n<u.length;n++)t.indexOf(e=u[n])>=0||(o[e]=r[e]);return o}(r,["children","onError","getMessageFallback"]);return e.createElement(s.Provider,{value:o({},c,{onError:u,getMessageFallback:i})},t)},exports.useIntl=function(){var r=d(),t=r.formats,e=r.locale,n=r.onError,u=r.timeZone;function a(r,t,e,o){var u;try{u=function(r,t){var e;if("string"==typeof t){if(!(e=null==r?void 0:r[t])){var o=new v(exports.IntlErrorCode.MISSING_FORMAT,void 0);throw n(o),o}}else e=t;return e}(e,t)}catch(t){return String(r)}try{return o(u)}catch(t){return n(new v(exports.IntlErrorCode.FORMATTING_ERROR,t.message)),String(r)}}return{formatDateTime:function(r,n){return a(r,n,null==t?void 0:t.dateTime,(function(t){var n;return!u||null!=(n=t)&&n.timeZone||(t=o({},t,{timeZone:u})),new Intl.DateTimeFormat(e,t).format(r)}))},formatNumber:function(r,n){return a(r,n,null==t?void 0:t.number,(function(t){return new Intl.NumberFormat(e,t).format(r)}))},formatRelativeTime:function(r,t){var o=r instanceof Date?r:new Date(r),u=t instanceof Date?t:new Date(t),a=function(r){var t,e,n=Math.abs(r);return n<60?(e="second",t=Math.round(r)):n<3600?(e="minute",t=Math.round(r/60)):n<86400?(e="hour",t=Math.round(r/3600)):n<604800?(e="day",t=Math.round(r/86400)):n<2628e3?(e="week",t=Math.round(r/604800)):n<31536e3?(e="month",t=Math.round(r/2628e3)):(e="year",t=Math.round(r/31536e3)),{value:t,unit:e}}((o.getTime()-u.getTime())/1e3),i=a.unit,c=a.value;try{return new Intl.RelativeTimeFormat(e,{numeric:"auto"}).format(c,i)}catch(t){return n(new v(exports.IntlErrorCode.FORMATTING_ERROR,t.message)),String(r)}}}},exports.useTranslations=function(r){var e=d(),u=e.formats,a=e.getMessageFallback,i=e.locale,c=e.messages,l=e.onError,f=t.useRef({}),s=t.useMemo((function(){try{var t=r?m(c,r):c;if(!t)throw new Error(void 0);return t}catch(r){var e=new v(exports.IntlErrorCode.MISSING_MESSAGE,r.message);return l(e),e}}),[c,r,l]);return t.useCallback((function(e,c,p){var d,I=f.current;function E(t,n){var o=new v(t,n);return l(o),a({error:o,key:e,namespace:r})}if(s instanceof v)return a({error:s,key:e,namespace:r});var y,h=s;if(null!=(d=I[i])&&d[e])y=I[i][e];else{var M;try{M=m(h,e)}catch(r){return E(exports.IntlErrorCode.MISSING_MESSAGE,r.message)}if("object"==typeof M)return E(exports.IntlErrorCode.INSUFFICIENT_PATH,void 0);try{y=new n(M,i,function(r){return o({},r,{date:null==r?void 0:r.dateTime,time:null==r?void 0:r.dateTime})}(o({},u,p)))}catch(r){return E(exports.IntlErrorCode.INVALID_MESSAGE,r.message)}I[i]||(I[i]={}),I[i][e]=y}try{var S=y.format(function(r){if(!r)return r;var e={};return Object.keys(r).forEach((function(n){var o=r[n];e[n]="function"==typeof o?function(r){var e=o(r);return t.isValidElement(e)?t.cloneElement(e,{key:e.key||n+String(r)}):e}:o})),e}(c));if(null==S)throw new Error(void 0);return S}catch(r){return E(exports.IntlErrorCode.FORMATTING_ERROR,r.message)}}),[a,u,i,s,r,l])}; | ||
//# sourceMappingURL=use-intl.cjs.production.min.js.map |
@@ -405,3 +405,4 @@ import React, { createContext, useContext, useRef, useMemo, useCallback, isValidElement, cloneElement } from 'react'; | ||
locale = _useIntlContext.locale, | ||
onError = _useIntlContext.onError; | ||
onError = _useIntlContext.onError, | ||
timeZone = _useIntlContext.timeZone; | ||
@@ -444,4 +445,17 @@ function resolveFormatOrOptions(typeFormats, formatOrOptions) { | ||
function formatDateTime(value, formatOrOptions) { | ||
return getFormattedValue(value, formatOrOptions, _extends({}, formats == null ? void 0 : formats.dateTime), function (options) { | ||
function formatDateTime( | ||
/** If a number is supplied, this is interpreted as a UTC timestamp. */ | ||
value, | ||
/** If a time zone is supplied, the `value` is converted to that time zone. | ||
* Otherwise the user time zone will be used. */ | ||
formatOrOptions) { | ||
return getFormattedValue(value, formatOrOptions, formats == null ? void 0 : formats.dateTime, function (options) { | ||
var _options; | ||
if (timeZone && !((_options = options) != null && _options.timeZone)) { | ||
options = _extends({}, options, { | ||
timeZone: timeZone | ||
}); | ||
} | ||
return new Intl.DateTimeFormat(locale, options).format(value); | ||
@@ -457,3 +471,7 @@ }); | ||
function formatRelativeTime(date, now) { | ||
function formatRelativeTime( | ||
/** The date time that needs to be formatted. */ | ||
date, | ||
/** The reference point in time to which `date` will be formatted in relation to. */ | ||
now) { | ||
var dateDate = date instanceof Date ? date : new Date(date); | ||
@@ -460,0 +478,0 @@ var nowDate = now instanceof Date ? now : new Date(now); |
export default function useIntl(): { | ||
formatDateTime: (value: number | Date, formatOrOptions?: string | Intl.DateTimeFormatOptions | undefined) => string; | ||
formatDateTime: (value: Date | number, formatOrOptions?: string | Intl.DateTimeFormatOptions | undefined) => string; | ||
formatNumber: (value: number, formatOrOptions?: string | Intl.NumberFormatOptions | undefined) => string; | ||
formatRelativeTime: (date: number | Date, now: number | Date) => string; | ||
}; |
{ | ||
"name": "use-intl", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"sideEffects": false, | ||
@@ -5,0 +5,0 @@ "author": "Jan Amann <jan@amann.me>", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
130738
1440