@ui5/webcomponents-localization 0.0.0-d849bec2c → 0.0.0-dc3ccac50

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.
Files changed (110) hide show
  1. package/.eslintignore +1 -0
  2. package/CHANGELOG.md +72 -0
  3. package/README.md +32 -1
  4. package/dist/Assets-static.js +2 -0
  5. package/dist/dates/CalendarDate.js +22 -2
  6. package/dist/dates/ExtremeDates.js +39 -0
  7. package/dist/dates/getRoundedTimestamp.js +14 -0
  8. package/dist/dates/getTodayUTCTimestamp.js +9 -0
  9. package/dist/dates/modifyDateBy.js +42 -0
  10. package/dist/generated/assets/cldr/ar.json +5 -3
  11. package/dist/generated/assets/cldr/ar_EG.json +5 -3
  12. package/dist/generated/assets/cldr/ar_SA.json +5 -3
  13. package/dist/generated/assets/cldr/bg.json +5 -3
  14. package/dist/generated/assets/cldr/ca.json +5 -3
  15. package/dist/generated/assets/cldr/cs.json +5 -3
  16. package/dist/generated/assets/cldr/cy.json +5886 -0
  17. package/dist/generated/assets/cldr/da.json +5 -3
  18. package/dist/generated/assets/cldr/de.json +5 -3
  19. package/dist/generated/assets/cldr/de_AT.json +5 -3
  20. package/dist/generated/assets/cldr/de_CH.json +5 -3
  21. package/dist/generated/assets/cldr/el.json +5 -3
  22. package/dist/generated/assets/cldr/el_CY.json +5 -3
  23. package/dist/generated/assets/cldr/en.json +6 -3
  24. package/dist/generated/assets/cldr/en_AU.json +5 -3
  25. package/dist/generated/assets/cldr/en_GB.json +5 -3
  26. package/dist/generated/assets/cldr/en_HK.json +5 -3
  27. package/dist/generated/assets/cldr/en_IE.json +5 -3
  28. package/dist/generated/assets/cldr/en_IN.json +5 -3
  29. package/dist/generated/assets/cldr/en_NZ.json +5 -3
  30. package/dist/generated/assets/cldr/en_PG.json +5 -3
  31. package/dist/generated/assets/cldr/en_SG.json +5 -3
  32. package/dist/generated/assets/cldr/en_ZA.json +5 -3
  33. package/dist/generated/assets/cldr/es.json +5 -3
  34. package/dist/generated/assets/cldr/es_AR.json +5 -3
  35. package/dist/generated/assets/cldr/es_BO.json +5 -3
  36. package/dist/generated/assets/cldr/es_CL.json +5 -3
  37. package/dist/generated/assets/cldr/es_CO.json +5 -3
  38. package/dist/generated/assets/cldr/es_MX.json +5 -3
  39. package/dist/generated/assets/cldr/es_PE.json +5 -3
  40. package/dist/generated/assets/cldr/es_UY.json +5 -3
  41. package/dist/generated/assets/cldr/es_VE.json +5 -3
  42. package/dist/generated/assets/cldr/et.json +5 -3
  43. package/dist/generated/assets/cldr/fa.json +5 -3
  44. package/dist/generated/assets/cldr/fi.json +5 -3
  45. package/dist/generated/assets/cldr/fr.json +5 -3
  46. package/dist/generated/assets/cldr/fr_BE.json +5 -3
  47. package/dist/generated/assets/cldr/fr_CA.json +5 -3
  48. package/dist/generated/assets/cldr/fr_CH.json +5 -3
  49. package/dist/generated/assets/cldr/fr_LU.json +5 -3
  50. package/dist/generated/assets/cldr/he.json +5 -3
  51. package/dist/generated/assets/cldr/hi.json +5 -3
  52. package/dist/generated/assets/cldr/hr.json +5 -3
  53. package/dist/generated/assets/cldr/hu.json +5 -3
  54. package/dist/generated/assets/cldr/id.json +5 -3
  55. package/dist/generated/assets/cldr/it.json +5 -3
  56. package/dist/generated/assets/cldr/it_CH.json +5 -3
  57. package/dist/generated/assets/cldr/ja.json +5 -3
  58. package/dist/generated/assets/cldr/kk.json +5 -3
  59. package/dist/generated/assets/cldr/ko.json +5 -3
  60. package/dist/generated/assets/cldr/lt.json +5 -3
  61. package/dist/generated/assets/cldr/lv.json +5 -3
  62. package/dist/generated/assets/cldr/ms.json +5 -3
  63. package/dist/generated/assets/cldr/nb.json +5 -3
  64. package/dist/generated/assets/cldr/nl.json +5 -3
  65. package/dist/generated/assets/cldr/nl_BE.json +5 -3
  66. package/dist/generated/assets/cldr/pl.json +5 -3
  67. package/dist/generated/assets/cldr/pt.json +5 -3
  68. package/dist/generated/assets/cldr/pt_PT.json +5 -3
  69. package/dist/generated/assets/cldr/ro.json +5 -3
  70. package/dist/generated/assets/cldr/ru.json +5 -3
  71. package/dist/generated/assets/cldr/ru_UA.json +5 -3
  72. package/dist/generated/assets/cldr/sk.json +5 -3
  73. package/dist/generated/assets/cldr/sl.json +5 -3
  74. package/dist/generated/assets/cldr/sr.json +5 -3
  75. package/dist/generated/assets/cldr/sr_Latn.json +5129 -0
  76. package/dist/generated/assets/cldr/sv.json +5 -3
  77. package/dist/generated/assets/cldr/th.json +5 -3
  78. package/dist/generated/assets/cldr/tr.json +5 -3
  79. package/dist/generated/assets/cldr/uk.json +5 -3
  80. package/dist/generated/assets/cldr/vi.json +5 -3
  81. package/dist/generated/assets/cldr/zh_CN.json +5 -3
  82. package/dist/generated/assets/cldr/zh_HK.json +5 -3
  83. package/dist/generated/assets/cldr/zh_SG.json +5 -3
  84. package/dist/generated/assets/cldr/zh_TW.json +5 -3
  85. package/dist/generated/json-imports/LocaleData-static.js +89 -0
  86. package/dist/generated/json-imports/LocaleData.js +87 -91
  87. package/dist/getCachedLocaleDataInstance.js +13 -0
  88. package/dist/sap/base/Log.js +2 -10
  89. package/dist/sap/base/assert.js +1 -5
  90. package/dist/sap/base/util/LoaderExtensions.js +12 -2
  91. package/dist/sap/base/util/array/uniqueSort.js +7 -7
  92. package/dist/sap/base/util/deepEqual.js +1 -5
  93. package/dist/sap/ui/base/Interface.js +3 -5
  94. package/dist/sap/ui/base/Metadata.js +1 -3
  95. package/dist/sap/ui/base/Object.js +26 -2
  96. package/dist/sap/ui/core/Locale.js +57 -31
  97. package/dist/sap/ui/core/LocaleData.js +28 -1502
  98. package/dist/sap/ui/core/date/UniversalDate.js +7 -5
  99. package/dist/sap/ui/core/format/DateFormat.js +40 -27
  100. package/hash.txt +1 -0
  101. package/package-scripts.js +14 -5
  102. package/package.json +12 -14
  103. package/src/Assets-static.js +2 -0
  104. package/src/dates/CalendarDate.js +22 -2
  105. package/src/dates/ExtremeDates.js +39 -0
  106. package/src/dates/getRoundedTimestamp.js +14 -0
  107. package/src/dates/getTodayUTCTimestamp.js +9 -0
  108. package/src/dates/modifyDateBy.js +42 -0
  109. package/src/getCachedLocaleDataInstance.js +13 -0
  110. package/src/sap/base/util/LoaderExtensions.js +12 -2
@@ -1,7 +1,17 @@
1
- import { getModuleContent } from "@ui5/webcomponents-base/dist/asset-registries/LocaleData.js";
1
+ import { getLocaleData } from "@ui5/webcomponents-base/dist/asset-registries/LocaleData.js";
2
+
3
+ const loadResource = moduleName => {
4
+ const moduleFormat = moduleName.match(/sap\/ui\/core\/cldr\/(\w+)\.json/);
5
+ if (!moduleFormat) {
6
+ throw new Error(`Unknown module "${moduleName}"`);
7
+ }
8
+
9
+ const localeId = moduleFormat[1];
10
+ return getLocaleData(localeId);
11
+ };
2
12
 
3
13
  const LoaderExtensions = {
4
- loadResource: getModuleContent,
14
+ loadResource,
5
15
  };
6
16
 
7
17
  export default LoaderExtensions;
@@ -1,17 +1,17 @@
1
1
  import assert from '../../assert.js';
2
2
  var fnUniqueSort = function (aArray) {
3
- assert(aArray instanceof Array, 'uniqueSort: input parameter must be an Array');
4
- var l = aArray.length;
5
- if (l > 1) {
3
+ assert(Array.isArray(aArray), 'uniqueSort: input parameter must be an Array');
4
+ var iLength = aArray.length;
5
+ if (iLength > 1) {
6
6
  aArray.sort();
7
7
  var j = 0;
8
- for (var i = 1; i < l; i++) {
9
- if (aArray[i] !== aArray[j]) {
8
+ for (var i = 1; i < iLength; i++) {
9
+ if (aArray.indexOf(aArray[i]) === i) {
10
10
  aArray[++j] = aArray[i];
11
11
  }
12
12
  }
13
- if (++j < l) {
14
- aArray.splice(j, l - j);
13
+ if (++j < iLength) {
14
+ aArray.splice(j, iLength - j);
15
15
  }
16
16
  }
17
17
  return aArray;
@@ -14,11 +14,7 @@ var fnEqual = function (a, b, maxDepth, contains, depth) {
14
14
  Log.warning('deepEqual comparison exceeded maximum recursion depth of ' + maxDepth + '. Treating values as unequal');
15
15
  return false;
16
16
  }
17
- if (a === b) {
18
- return true;
19
- }
20
- var bIsReallyNaN = typeof a === 'number' && typeof b === 'number' && isNaN(a) && isNaN(b);
21
- if (bIsReallyNaN) {
17
+ if (a === b || Number.isNaN(a) && Number.isNaN(b)) {
22
18
  return true;
23
19
  }
24
20
  if (Array.isArray(a) && Array.isArray(b)) {
@@ -1,16 +1,14 @@
1
- var BaseObject;
2
- var Interface = function (oObject, aMethods, bFacade) {
1
+ var Interface = function (oObject, aMethods, _bReturnFacade) {
3
2
  if (!oObject) {
4
3
  return oObject;
5
4
  }
6
- BaseObject = BaseObject || sap.ui.requireSync("sap/ui/base/Object");
7
5
  function fCreateDelegator(oObject, sMethodName) {
8
6
  return function () {
9
7
  var tmp = oObject[sMethodName].apply(oObject, arguments);
10
- if (bFacade) {
8
+ if (_bReturnFacade) {
11
9
  return this;
12
10
  } else {
13
- return tmp instanceof BaseObject ? tmp.getInterface() : tmp;
11
+ return typeof tmp.getInterface === "function" ? tmp.getInterface() : tmp;
14
12
  }
15
13
  };
16
14
  }
@@ -1,5 +1,4 @@
1
1
  import ObjectPath from '../../base/util/ObjectPath.js';
2
- import Device from '../Device.js';
3
2
  import assert from '../../base/assert.js';
4
3
  import Log from '../../base/Log.js';
5
4
  import uniqueSort from '../../base/util/array/uniqueSort.js';
@@ -112,7 +111,6 @@ Metadata.prototype.isInstanceOf = function (sInterface) {
112
111
  }
113
112
  return false;
114
113
  };
115
- var WRITABLE_IFF_PHANTOM = !!Device.browser.phantomJS;
116
114
  Object.defineProperty(Metadata.prototype, '_mImplementedTypes', {
117
115
  get: function () {
118
116
  if (this === Metadata.prototype) {
@@ -128,7 +126,7 @@ Object.defineProperty(Metadata.prototype, '_mImplementedTypes', {
128
126
  }
129
127
  Object.defineProperty(this, '_mImplementedTypes', {
130
128
  value: Object.freeze(result),
131
- writable: WRITABLE_IFF_PHANTOM,
129
+ writable: false,
132
130
  configurable: false
133
131
  });
134
132
  return result;
@@ -1,4 +1,3 @@
1
- import Interface from './Interface.js';
2
1
  import Metadata from './Metadata.js';
3
2
  import Log from '../../base/Log.js';
4
3
  var BaseObject = Metadata.createClass('sap.ui.base.Object', {
@@ -11,7 +10,7 @@ var BaseObject = Metadata.createClass('sap.ui.base.Object', {
11
10
  BaseObject.prototype.destroy = function () {
12
11
  };
13
12
  BaseObject.prototype.getInterface = function () {
14
- var oInterface = new Interface(this, this.getMetadata().getAllPublicMethods());
13
+ var oInterface = new BaseObject._Interface(this, this.getMetadata().getAllPublicMethods());
15
14
  this.getInterface = function () {
16
15
  return oInterface;
17
16
  };
@@ -37,4 +36,29 @@ BaseObject.prototype.isA = function (vTypeName) {
37
36
  BaseObject.isA = function (oObject, vTypeName) {
38
37
  return oObject instanceof BaseObject && oObject.isA(vTypeName);
39
38
  };
39
+ BaseObject._Interface = function (oObject, aMethods, _bReturnFacade) {
40
+ if (!oObject) {
41
+ return oObject;
42
+ }
43
+ function fCreateDelegator(oObject, sMethodName) {
44
+ return function () {
45
+ var tmp = oObject[sMethodName].apply(oObject, arguments);
46
+ if (_bReturnFacade) {
47
+ return this;
48
+ } else {
49
+ return tmp instanceof BaseObject ? tmp.getInterface() : tmp;
50
+ }
51
+ };
52
+ }
53
+ if (!aMethods) {
54
+ return {};
55
+ }
56
+ var sMethodName;
57
+ for (var i = 0, ml = aMethods.length; i < ml; i++) {
58
+ sMethodName = aMethods[i];
59
+ if (!oObject[sMethodName] || typeof oObject[sMethodName] === 'function') {
60
+ this[sMethodName] = fCreateDelegator(oObject, sMethodName);
61
+ }
62
+ }
63
+ };
40
64
  export default BaseObject;
@@ -6,7 +6,7 @@ var Locale = BaseObject.extend('sap.ui.core.Locale', {
6
6
  BaseObject.apply(this);
7
7
  var aResult = rLocale.exec(sLocaleId.replace(/_/g, '-'));
8
8
  if (aResult === null) {
9
- throw 'The given language \'' + sLocaleId + '\' does not adhere to BCP-47.';
9
+ throw new TypeError('The given language \'' + sLocaleId + '\' does not adhere to BCP-47.');
10
10
  }
11
11
  this.sLocaleId = sLocaleId;
12
12
  this.sLanguage = aResult[1] || null;
@@ -59,54 +59,62 @@ var Locale = BaseObject.extend('sap.ui.core.Locale', {
59
59
  return this.getPrivateUseSubtags().indexOf(sSubtag) >= 0;
60
60
  },
61
61
  toString: function () {
62
- var r = [this.sLanguage];
63
- if (this.sScript) {
64
- r.push(this.sScript);
65
- }
66
- if (this.sRegion) {
67
- r.push(this.sRegion);
68
- }
69
- if (this.sVariant) {
70
- r.push(this.sVariant);
71
- }
72
- if (this.sExtension) {
73
- r.push(this.sExtension);
74
- }
75
- if (this.sPrivateUse) {
76
- r.push(this.sPrivateUse);
62
+ return join(this.sLanguage, this.sScript, this.sRegion, this.sVariant, this.sExtension, this.sPrivateUse);
63
+ },
64
+ toLanguageTag: function () {
65
+ var sLanguage = this.getModernLanguage();
66
+ var sScript = this.sScript;
67
+ if (sLanguage === 'sr' && sScript === 'Latn') {
68
+ sLanguage = 'sh';
69
+ sScript = null;
77
70
  }
78
- return r.join('-');
71
+ return join(sLanguage, sScript, this.sRegion, this.sVariant, this.sExtension, this.sPrivateUse);
72
+ },
73
+ getModernLanguage: function () {
74
+ return M_ISO639_OLD_TO_NEW[this.sLanguage] || this.sLanguage;
79
75
  },
80
76
  getSAPLogonLanguage: function () {
81
- var sLanguage = this.sLanguage || '', m;
77
+ var sLanguage = this.sLanguage || '';
82
78
  if (sLanguage.indexOf('-') >= 0) {
83
79
  sLanguage = sLanguage.slice(0, sLanguage.indexOf('-'));
84
80
  }
85
81
  sLanguage = M_ISO639_OLD_TO_NEW[sLanguage] || sLanguage;
86
- if (sLanguage === 'zh') {
87
- if (this.sScript === 'Hant' || !this.sScript && this.sRegion === 'TW') {
88
- sLanguage = 'zf';
89
- }
90
- }
91
- if (this.sPrivateUse && (m = /-(saptrc|sappsd)(?:-|$)/i.exec(this.sPrivateUse))) {
92
- sLanguage = m[1].toLowerCase() === 'saptrc' ? '1Q' : '2Q';
82
+ if (sLanguage === 'zh' && !this.sScript && this.sRegion === 'TW') {
83
+ return 'ZF';
93
84
  }
94
- return sLanguage.toUpperCase();
85
+ return M_LOCALE_TO_ABAP_LANGUAGE[join(sLanguage, this.sScript)] || M_LOCALE_TO_ABAP_LANGUAGE[join(sLanguage, this.sRegion)] || M_LOCALE_TO_ABAP_LANGUAGE[getPseudoLanguageTag(this.sPrivateUse)] || sLanguage.toUpperCase();
95
86
  }
96
87
  });
88
+ function getPseudoLanguageTag(sPrivateUse) {
89
+ if (sPrivateUse) {
90
+ var m = /-(saptrc|sappsd|saprigi)(?:-|$)/i.exec(sPrivateUse);
91
+ return m && 'en-US-x-' + m[1].toLowerCase();
92
+ }
93
+ }
97
94
  var M_ISO639_OLD_TO_NEW = {
98
95
  'iw': 'he',
99
- 'ji': 'yi',
100
- 'in': 'id',
101
- 'sh': 'sr'
96
+ 'ji': 'yi'
102
97
  };
98
+ var M_ABAP_LANGUAGE_TO_LOCALE = {
99
+ 'ZH': 'zh-Hans',
100
+ 'ZF': 'zh-Hant',
101
+ 'SH': 'sr-Latn',
102
+ '6N': 'en-GB',
103
+ '1P': 'pt-PT',
104
+ '1X': 'es-MX',
105
+ '3F': 'fr-CA',
106
+ '1Q': 'en-US-x-saptrc',
107
+ '2Q': 'en-US-x-sappsd',
108
+ '3Q': 'en-US-x-saprigi'
109
+ };
110
+ var M_LOCALE_TO_ABAP_LANGUAGE = inverse(M_ABAP_LANGUAGE_TO_LOCALE);
103
111
  function getDesigntimePropertyAsArray(sValue) {
104
112
  var m = /\$([-a-z0-9A-Z._]+)(?::([^$]*))?\$/.exec(sValue);
105
113
  return m && m[2] ? m[2].split(/,/) : null;
106
114
  }
107
115
  var A_RTL_LOCALES = getDesigntimePropertyAsArray('$cldr-rtl-locales:ar,fa,he$') || [];
108
- Locale._cldrLocales = getDesigntimePropertyAsArray('$cldr-locales:ar,ar_EG,ar_SA,bg,br,ca,cs,da,de,de_AT,de_CH,el,el_CY,en,en_AU,en_GB,en_HK,en_IE,en_IN,en_NZ,en_PG,en_SG,en_ZA,es,es_AR,es_BO,es_CL,es_CO,es_MX,es_PE,es_UY,es_VE,et,fa,fi,fr,fr_BE,fr_CA,fr_CH,fr_LU,he,hi,hr,hu,id,it,it_CH,ja,kk,ko,lt,lv,ms,nb,nl,nl_BE,nn,pl,pt,pt_PT,ro,ru,ru_UA,sk,sl,sr,sv,th,tr,uk,vi,zh_CN,zh_HK,zh_SG,zh_TW$');
109
- Locale._coreI18nLocales = getDesigntimePropertyAsArray('$core-i18n-locales:,ar,bg,ca,cs,da,de,el,en,es,et,fi,fr,hi,hr,hu,it,iw,ja,kk,ko,lt,lv,ms,nl,no,pl,pt,ro,ru,sh,sk,sl,sv,th,tr,uk,vi,zh_CN,zh_TW$');
116
+ Locale._cldrLocales = getDesigntimePropertyAsArray('$cldr-locales:ar,ar_EG,ar_SA,bg,ca,cy,cs,da,de,de_AT,de_CH,el,el_CY,en,en_AU,en_GB,en_HK,en_IE,en_IN,en_NZ,en_PG,en_SG,en_ZA,es,es_AR,es_BO,es_CL,es_CO,es_MX,es_PE,es_UY,es_VE,et,fa,fi,fr,fr_BE,fr_CA,fr_CH,fr_LU,he,hi,hr,hu,id,it,it_CH,ja,kk,ko,lt,lv,ms,nb,nl,nl_BE,pl,pt,pt_PT,ro,ru,ru_UA,sk,sl,sr,sr_Latn,sv,th,tr,uk,vi,zh_CN,zh_HK,zh_SG,zh_TW$');
117
+ Locale._coreI18nLocales = getDesigntimePropertyAsArray('$core-i18n-locales:,ar,bg,ca,cs,da,de,el,en,en_GB,es,es_MX,et,fi,fr,hi,hr,hu,it,iw,ja,kk,ko,lt,lv,ms,nl,no,pl,pt,ro,ru,sh,sk,sl,sv,th,tr,uk,vi,zh_CN,zh_TW$');
110
118
  Locale._impliesRTL = function (vLanguage) {
111
119
  var oLocale = vLanguage instanceof Locale ? vLanguage : new Locale(vLanguage);
112
120
  var sLanguage = oLocale.getLanguage() || '';
@@ -117,4 +125,22 @@ Locale._impliesRTL = function (vLanguage) {
117
125
  }
118
126
  return A_RTL_LOCALES.indexOf(sLanguage) >= 0;
119
127
  };
128
+ Locale.fromSAPLogonLanguage = function (sSAPLogonLanguage) {
129
+ if (sSAPLogonLanguage && typeof sSAPLogonLanguage === 'string') {
130
+ sSAPLogonLanguage = M_ABAP_LANGUAGE_TO_LOCALE[sSAPLogonLanguage.toUpperCase()] || sSAPLogonLanguage;
131
+ try {
132
+ return new Locale(sSAPLogonLanguage);
133
+ } catch (e) {
134
+ }
135
+ }
136
+ };
137
+ function join() {
138
+ return Array.prototype.filter.call(arguments, Boolean).join('-');
139
+ }
140
+ function inverse(obj) {
141
+ return Object.keys(obj).reduce(function (inv, key) {
142
+ inv[obj[key]] = key;
143
+ return inv;
144
+ }, {});
145
+ }
120
146
  export default Locale;