i18nizeelement 0.5.2 → 0.6.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.
@@ -11,12 +11,15 @@
11
11
 
12
12
  // Private vars - star
13
13
  const _regexEscape = /([\.\*\+\^\$\[\]\\\(\)\|\{\}\,\-\:\?])/g; // eslint-disable-line no-useless-escape
14
- const _regexParseLocale = /^([a-zA-Z]+)([-a-zA-Z]*)$/;
14
+ const _regexParseLocale = /^([a-zA-Z]{2,3}|[a-zA-Z]{5,8})(-[a-zA-Z]{4})?(-(?:[a-zA-Z]{2}|\d{3}))?(-(?:[a-zA-Z\d]{5,8}|\d[a-zA-Z\d]{3}))?$/;
15
15
  // Private vars - end
16
16
 
17
17
  class Locale {
18
18
  // eslint-disable-line consistent-this
19
19
 
20
+ /**
21
+ * @param {string} locale
22
+ */
20
23
  constructor(locale) {
21
24
  if (typeof locale !== 'string') {
22
25
  throw new TypeError('A string argument is expected');
@@ -28,27 +31,53 @@
28
31
  }
29
32
 
30
33
  // Private functions - star
34
+
35
+ /**
36
+ * @param {null|undefined|string} [str]
37
+ * @returns {null|undefined|string}
38
+ */
31
39
  static _escapeRegExpPattern(str) {
32
40
  if (typeof str !== 'string') {
33
41
  return str;
34
42
  }
35
43
  return str.replace(_regexEscape, '\\$1');
36
44
  }
45
+
46
+ /**
47
+ * @param {string|null} [str]
48
+ * @param {boolean} [reserveReturnValue]
49
+ */
37
50
  static _toLowerCase(str, reserveReturnValue) {
38
51
  if (typeof str !== 'string') {
39
52
  return reserveReturnValue && str;
40
53
  }
41
54
  return str.toLowerCase();
42
55
  }
56
+
57
+ /**
58
+ * @param {string|null} [str]
59
+ * @param {boolean} [reserveReturnValue]
60
+ */
43
61
  static _toUpperCase(str, reserveReturnValue) {
44
62
  if (typeof str !== 'string') {
45
63
  return reserveReturnValue && str;
46
64
  }
47
65
  return str.toUpperCase();
48
66
  }
67
+
68
+ /**
69
+ * @param {string|null} [str]
70
+ * @param {string|null|string[]|boolean} [delimiter]
71
+ * @param {boolean} [reserveReturnValue]
72
+ */
49
73
  static _trim(str, delimiter, reserveReturnValue) {
74
+ /** @type {string[]} */
50
75
  const patterns = [];
51
76
  let regexp;
77
+
78
+ /**
79
+ * @param {string|null|undefined} pattern
80
+ */
52
81
  const addPatterns = function (pattern) {
53
82
  // Build trim RegExp pattern and push it to patterns array
54
83
  patterns.push('^' + pattern + '+|' + pattern + '+$');
@@ -60,14 +89,14 @@
60
89
  delimiter = null;
61
90
  }
62
91
  if (typeof str !== 'string') {
63
- return reserveReturnValue && str;
92
+ return reserveReturnValue ? str : undefined;
64
93
  }
65
94
 
66
95
  // Trim based on delimiter array values
67
96
  if (Array.isArray(delimiter)) {
68
97
  // Loop through delimiter array
69
98
  delimiter.map(item => {
70
- // Escape delimiter to be valid RegExp Pattern
99
+ // Escape delimiter to be valid RegExp pattern
71
100
  const pattern = this._escapeRegExpPattern(item);
72
101
  // Push pattern to patterns array
73
102
  addPatterns(pattern);
@@ -76,13 +105,13 @@
76
105
 
77
106
  // Trim based on delimiter string value
78
107
  if (typeof delimiter === 'string') {
79
- // Escape delimiter to be valid RegExp Pattern
108
+ // Escape delimiter to be valid RegExp pattern
80
109
  const patternDelimiter = this._escapeRegExpPattern(delimiter);
81
110
  // push pattern to patterns array
82
111
  addPatterns(patternDelimiter);
83
112
  }
84
113
 
85
- // If delimiter is not defined, Trim white spaces
114
+ // If delimiter is not defined, trim white spaces
86
115
  if (!delimiter) {
87
116
  // Push white space pattern to patterns array
88
117
  addPatterns('\\s');
@@ -101,23 +130,44 @@
101
130
  // Return trim string
102
131
  return str;
103
132
  }
133
+
134
+ /**
135
+ * @typedef {{
136
+ * lang: string,
137
+ * script: string|undefined,
138
+ * countryCode: string|undefined
139
+ * }} LocaleInfo
140
+ */
141
+
142
+ /**
143
+ * @param {string|null} [strLocale]
144
+ * @returns {undefined|LocaleInfo}
145
+ */
104
146
  static _parseLocale(strLocale) {
105
- var matches = _regexParseLocale.exec(strLocale); // exec regex
106
- let parsedLocale;
147
+ if (typeof strLocale !== 'string') {
148
+ return undefined;
149
+ }
150
+ const matches = _regexParseLocale.exec(strLocale); // exec regex
107
151
  let lang;
152
+ let script;
108
153
  let countryCode;
109
154
  if (!strLocale || !matches) {
110
- return;
155
+ return undefined;
111
156
  }
112
157
 
158
+ // fix script string by trimming '-' and '_'
159
+ const matches2 = this._trim(matches[2], ['-', '_']);
160
+
113
161
  // fix countryCode string by trimming '-' and '_'
114
- matches[2] = this._trim(matches[2], ['-', '_']);
115
- lang = this._toLowerCase(matches[1]);
116
- countryCode = this._toUpperCase(matches[2]) || countryCode;
162
+ const matches3 = this._trim(matches[3], ['-', '_']);
163
+ lang = /** @type {string} */this._toLowerCase(matches[1]);
164
+ script = this._toLowerCase(matches2) || script;
165
+ countryCode = this._toUpperCase(matches3) || countryCode;
117
166
 
118
- // object with lang, countryCode properties
119
- parsedLocale = {
167
+ // object with lang, script properties
168
+ const parsedLocale = {
120
169
  lang,
170
+ script,
121
171
  countryCode
122
172
  };
123
173
 
@@ -127,10 +177,17 @@
127
177
  // Private functions - End
128
178
 
129
179
  _isRtlLang() {
130
- const objLocale = this.constructor._parseLocale(this._locale);
180
+ const {
181
+ lang,
182
+ script
183
+ } = /** @type {LocaleInfo} */
184
+ Locale._parseLocale(this._locale);
185
+ if (script) {
186
+ return Locale._RTL_SCRIPTS.indexOf(script) >= 0;
187
+ }
131
188
 
132
189
  // return true if the intel string lang exists in the BID RTL LANGS array else return false
133
- return this.constructor._BIDI_RTL_LANGS.indexOf(objLocale.lang) >= 0;
190
+ return Locale._BIDI_RTL_LANGS.indexOf(lang) >= 0;
134
191
  }
135
192
 
136
193
  // Public functions - star
@@ -144,39 +201,245 @@
144
201
 
145
202
  // Public functions - End
146
203
  }
204
+ Locale._RTL_SCRIPTS = ['adlm', 'arab', 'armi', 'avst', 'chrs', 'cprt', 'elym', 'hatr', 'hebr', 'hung', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb', 'nbat', 'nkoo', 'orkh', 'ougr', 'palm', 'phli', 'phlp', 'phnx', 'prti', 'rohg', 'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'thaa', 'yezi'];
147
205
 
148
206
  // Why not working as static property
149
207
  Locale._BIDI_RTL_LANGS = [
150
208
  // Const BIDI_RTL_LANGS Array
151
209
  // BIDI_RTL_LANGS ref: http://en.wikipedia.org/wiki/Right-to-left
152
210
  // Table of scripts in Unicode: https://en.wikipedia.org/wiki/Script_(Unicode)
153
- 'ae', /* Avestan */
154
- 'ar', /* 'العربية', Arabic */
155
- 'arc', /* Aramaic */
156
- 'bcc', /* 'بلوچی مکرانی', Southern Balochi */
157
- 'bqi', /* 'بختياري', Bakthiari */
158
- 'ckb', /* 'Soranî / کوردی', Sorani */
159
- 'dv', /* Dhivehi */
160
- 'fa', /* 'فارسی', Persian */
161
- 'glk', /* 'گیلکی', Gilaki */
162
- 'he', /* 'עברית', Hebrew */
163
- 'ku', /* 'Kurdî / كوردی', Kurdish */
164
- 'mzn', /* 'مازِرونی', Mazanderani */
165
- 'nqo', /* N'Ko */
166
- 'pnb', /* 'پنجابی', Western Punjabi */
167
- 'prs', /* 'دری', Darī */
168
- 'ps', /* 'پښتو', Pashto, */
169
- 'sd', /* 'سنڌي', Sindhi */
170
- 'ug', /* 'Uyghurche / ئۇيغۇرچە', Uyghur */
171
- 'ur', /* 'اردو', Urdu */
172
- 'yi' /* 'ייִדיש', Yiddish */];
211
+ 'ae',
212
+ // Avestan
213
+ 'aeb',
214
+ // Tunisian Arabic
215
+ 'ajt',
216
+ // Tunisian Arabic (old)
217
+ 'apc',
218
+ // Levantine Arabic
219
+ 'apd',
220
+ // Sudanese Arabic
221
+ 'ar',
222
+ // 'العربية', Arabic
223
+ 'ara',
224
+ // Arabic
225
+ 'arb',
226
+ // Standard Arabic
227
+ 'arc',
228
+ // Aramaic
229
+ 'arq',
230
+ // Algerian Arabic
231
+ 'ars',
232
+ // Najdi Arabic
233
+ 'ary',
234
+ // Moroccan Arabic
235
+ 'arz',
236
+ // Egyptian Arabic
237
+ 'ave',
238
+ // Avestan
239
+ 'avl',
240
+ // Eastern Egyptian Bedawi Arabic
241
+ 'bal',
242
+ // Baluchi
243
+ 'bcc',
244
+ // 'بلوچی مکرانی', Southern Balochi
245
+ 'bej',
246
+ // Beja; Bedawiyet
247
+ 'bft',
248
+ // Balti
249
+ 'bgn',
250
+ // Western Balochi
251
+ 'bqi',
252
+ // 'بختياري', Bakthiari
253
+ 'brh',
254
+ // Brahui
255
+ 'cja',
256
+ // Cham, Western
257
+ 'ckb',
258
+ // 'Soranî / کوردی', Sorani
259
+ 'cld',
260
+ // Chaldean Neo-Aramaic
261
+ 'dcc',
262
+ // Deccan
263
+ 'dgl',
264
+ // Andaandi
265
+ 'div',
266
+ // Divehi
267
+ 'drw',
268
+ // Darwazi (old)
269
+ 'dv',
270
+ // Dhivehi
271
+ 'fa',
272
+ // 'فارسی', Persian
273
+ 'fas',
274
+ // Persian
275
+ 'fia',
276
+ // Nobiin
277
+ 'fub',
278
+ // Fulfulde (Adamawa)
279
+ 'gbz',
280
+ // Dari, Zoroastrian
281
+ 'gjk',
282
+ // Koli, Kachi
283
+ 'gju',
284
+ // Gujari
285
+ 'glk',
286
+ // 'گیلکی', Gilaki
287
+ 'grc',
288
+ // Greek, Ancient (to 1453)
289
+ 'gwc',
290
+ // Kalami
291
+ 'gwt',
292
+ // Gawar-Bati
293
+ 'haz',
294
+ // Hazaragi
295
+ 'he',
296
+ // 'עברית', Hebrew
297
+ 'heb',
298
+ // Hebrew
299
+ 'hnd',
300
+ // Hindko, Southern
301
+ 'hno',
302
+ // Hindko, Northern
303
+ 'iw',
304
+ // Hebrew (old)
305
+ 'ji',
306
+ // Yiddish (old)
307
+ 'kas',
308
+ // Kashmiri
309
+ 'kby',
310
+ // Kanuri, Manga
311
+ 'khw',
312
+ // Khowar
313
+ 'ks',
314
+ // Kashmiri
315
+ 'kvx',
316
+ // Koli, Parkari
317
+ 'kxp',
318
+ // Koli, Wadiyara
319
+ 'kzh',
320
+ // Kenuzi-Dongola (old)
321
+ 'lad',
322
+ // Ladino
323
+ 'lah',
324
+ // Lahnda
325
+ 'lki',
326
+ // Laki
327
+ 'lrc',
328
+ // Luri, Northern
329
+ 'luz',
330
+ // Luri, Southern
331
+ 'mde',
332
+ // Maba (Chad)
333
+ 'mfa',
334
+ // Malay, Pattani
335
+ 'mki',
336
+ // Dhatki
337
+ 'mvy',
338
+ // Kohistani, Indus
339
+ 'myz',
340
+ // Mandaic, Classical
341
+ 'mzn',
342
+ // 'مازِرونی', Mazanderani
343
+ 'nqo',
344
+ // N'Ko
345
+ 'oru',
346
+ // Ormuri
347
+ 'ota',
348
+ // Turkish, Ottoman (1500–1928)
349
+ 'otk',
350
+ // Turkish, Old
351
+ 'oui',
352
+ // Uighur, Old
353
+ 'pal',
354
+ // Pahlavi
355
+ 'pbu',
356
+ // Pashto, Northern
357
+ 'per',
358
+ // Persian
359
+ 'pes',
360
+ // Western Farsi
361
+ 'phl',
362
+ // Phalura
363
+ 'phn',
364
+ // Phoenician
365
+ 'pnb',
366
+ // 'پنجابی', Western Punjabi
367
+ 'pra',
368
+ // Prakrit languages
369
+ 'prd',
370
+ // Dari (Persian)
371
+ 'prs',
372
+ // 'دری', Darī
373
+ 'ps',
374
+ // 'پښتو', Pashto,
375
+ 'pus',
376
+ // Pushto
377
+ 'rhg',
378
+ // Rohingya
379
+ 'rmt',
380
+ // Domari
381
+ 'scl',
382
+ // Shina
383
+ 'sd',
384
+ // 'سنڌي', Sindhi
385
+ 'sdh',
386
+ // Kurdish, Southern
387
+ 'shu',
388
+ // Arabic (Chadian)
389
+ 'skr',
390
+ // Saraiki
391
+ 'smp',
392
+ // Samaritan
393
+ 'snd',
394
+ // Sindhi
395
+ 'sog',
396
+ // Sogdian
397
+ 'swb',
398
+ // Comorian
399
+ 'syr',
400
+ // Syriac
401
+ 'tnf',
402
+ // Tangshewi (old)
403
+ 'trw',
404
+ // Torwali
405
+ 'ug',
406
+ // 'Uyghurche / ئۇيغۇرچە', Uyghur
407
+ 'uig',
408
+ // Uighur
409
+ 'ur',
410
+ // 'اردو', Urdu
411
+ 'urd',
412
+ // Urdu
413
+ 'wni',
414
+ // Comorian, Ndzwani
415
+ 'xco',
416
+ // Chorasmian
417
+ 'xld',
418
+ // Lydian
419
+ 'xmn',
420
+ // Manichaean Middle Persian
421
+ 'xmr',
422
+ // Meroitic
423
+ 'xna',
424
+ // North Arabian, Ancient
425
+ 'xpr',
426
+ // Parthian
427
+ 'xsa',
428
+ // Sabaean
429
+ 'ydd',
430
+ // Yiddish, Eastern
431
+ 'yi',
432
+ // 'ייִדיש', Yiddish
433
+ 'yid',
434
+ // Yiddish
435
+ 'zdj' // Comorian, Ngazidja
436
+ ];
173
437
 
174
438
  if (typeof Intl === 'undefined') {
439
+ // @ts-expect-error Not a complete polyfill
175
440
  globalThis.Intl = {};
176
441
  }
177
- if (typeof Intl.Locale === 'undefined') {
178
- Intl.Locale = Locale;
179
- }
442
+ Intl.Locale = Locale;
180
443
 
181
444
  // e.g., `i18nizeElement(document.title, {language: 'ar-AR'});`
182
445
 
@@ -1 +1 @@
1
- {"version":3,"file":"i18nizeelement.umd.js","sources":["../node_modules/.pnpm/intl-locale-textinfo-polyfill@1.0.1/node_modules/intl-locale-textinfo-polyfill/lib/Locale.js","../node_modules/.pnpm/intl-locale-textinfo-polyfill@1.0.1/node_modules/intl-locale-textinfo-polyfill/lib/polyfill.js","../src/index.js"],"sourcesContent":["/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n// Private vars - star\nconst _regexEscape = /([\\.\\*\\+\\^\\$\\[\\]\\\\\\(\\)\\|\\{\\}\\,\\-\\:\\?])/g; // eslint-disable-line no-useless-escape\nconst _regexParseLocale = /^([a-zA-Z]+)([-a-zA-Z]*)$/;\n// Private vars - end\n\nclass Locale { // eslint-disable-line consistent-this\n\n constructor (locale) {\n if (typeof locale !== 'string') {\n throw new TypeError('A string argument is expected');\n }\n if (!_regexParseLocale.test(locale)) {\n throw new RangeError('A proper locale must be provided');\n }\n this._locale = locale;\n }\n\n // Private functions - star\n static _escapeRegExpPattern (str) {\n if (typeof str !== 'string') {\n return str;\n }\n return str.replace(_regexEscape, '\\\\$1');\n }\n\n static _toLowerCase (str, reserveReturnValue) {\n if (typeof str !== 'string') {\n return reserveReturnValue && str;\n }\n return str.toLowerCase();\n }\n\n static _toUpperCase (str, reserveReturnValue) {\n if (typeof str !== 'string') {\n return reserveReturnValue && str;\n }\n return str.toUpperCase();\n }\n\n static _trim (str, delimiter, reserveReturnValue) {\n const patterns = [];\n let regexp;\n const addPatterns = function (pattern) {\n // Build trim RegExp pattern and push it to patterns array\n patterns.push('^' + pattern + '+|' + pattern + '+$');\n };\n\n // fix reserveReturnValue value\n if (typeof delimiter === 'boolean') {\n reserveReturnValue = delimiter;\n delimiter = null;\n }\n\n if (typeof str !== 'string') {\n return reserveReturnValue && str;\n }\n\n // Trim based on delimiter array values\n if (Array.isArray(delimiter)) {\n // Loop through delimiter array\n delimiter.map((item) => {\n // Escape delimiter to be valid RegExp Pattern\n const pattern = this._escapeRegExpPattern(item);\n // Push pattern to patterns array\n addPatterns(pattern);\n });\n }\n\n // Trim based on delimiter string value\n if (typeof delimiter === 'string') {\n // Escape delimiter to be valid RegExp Pattern\n const patternDelimiter = this._escapeRegExpPattern(delimiter);\n // push pattern to patterns array\n addPatterns(patternDelimiter);\n }\n\n // If delimiter is not defined, Trim white spaces\n if (!delimiter) {\n // Push white space pattern to patterns array\n addPatterns('\\\\s');\n }\n\n // Build RegExp pattern\n const pattern = '(' + patterns.join('|') + ')';\n // Build RegExp object\n regexp = new RegExp(pattern, 'g');\n\n // trim string for all patterns\n while (str.match(regexp)) {\n str = str.replace(regexp, '');\n }\n\n // Return trim string\n return str;\n }\n\n static _parseLocale (strLocale) {\n var matches = _regexParseLocale.exec(strLocale); // exec regex\n let parsedLocale;\n let lang;\n let countryCode;\n\n if (!strLocale || !matches) {\n return;\n }\n\n // fix countryCode string by trimming '-' and '_'\n matches[2] = this._trim(matches[2], ['-', '_']);\n\n lang = this._toLowerCase(matches[1]);\n countryCode = this._toUpperCase(matches[2]) || countryCode;\n\n // object with lang, countryCode properties\n parsedLocale = {\n lang,\n countryCode\n };\n\n // return parsed locale object\n return parsedLocale;\n }\n // Private functions - End\n\n _isRtlLang () {\n const objLocale = this.constructor._parseLocale(this._locale);\n\n // return true if the intel string lang exists in the BID RTL LANGS array else return false\n return (this.constructor._BIDI_RTL_LANGS.indexOf(objLocale.lang) >= 0);\n }\n\n // Public functions - star\n get textInfo () {\n // return 'rtl' if the intel string lang exists in the BID RTL LANGS array else return 'ltr'\n const direction = this._isRtlLang() ? 'rtl' : 'ltr';\n return { direction };\n }\n\n // Public functions - End\n}\n\n// Why not working as static property\nLocale._BIDI_RTL_LANGS = [\n // Const BIDI_RTL_LANGS Array\n // BIDI_RTL_LANGS ref: http://en.wikipedia.org/wiki/Right-to-left\n // Table of scripts in Unicode: https://en.wikipedia.org/wiki/Script_(Unicode)\n 'ae',\t/* Avestan */\n 'ar', /* 'العربية', Arabic */\n 'arc', /* Aramaic */\n 'bcc', /* 'بلوچی مکرانی', Southern Balochi */\n 'bqi', /* 'بختياري', Bakthiari */\n 'ckb', /* 'Soranî / کوردی', Sorani */\n 'dv', /* Dhivehi */\n 'fa', /* 'فارسی', Persian */\n 'glk', /* 'گیلکی', Gilaki */\n 'he', /* 'עברית', Hebrew */\n 'ku', /* 'Kurdî / كوردی', Kurdish */\n 'mzn', /* 'مازِرونی', Mazanderani */\n 'nqo', /* N'Ko */\n 'pnb', /* 'پنجابی', Western Punjabi */\n 'prs', /* 'دری', Darī */\n 'ps', /* 'پښتو', Pashto, */\n 'sd', /* 'سنڌي', Sindhi */\n 'ug', /* 'Uyghurche / ئۇيغۇرچە', Uyghur */\n 'ur', /* 'اردو', Urdu */\n 'yi' /* 'ייִדיש', Yiddish */\n];\n\nexport default Locale;\n","import Locale from './Locale.js';\n\nif (typeof Intl === 'undefined') {\n globalThis.Intl = {};\n}\n\nif (typeof Intl.Locale === 'undefined') {\n Intl.Locale = Locale;\n}\n","import 'intl-locale-textinfo-polyfill/lib/polyfill.js';\n\n// e.g., `i18nizeElement(document.title, {language: 'ar-AR'});`\n\n/**\n * @param {HTMLElement} element\n * @param {{\n * language?: string,\n * avoidLangIfSet?: boolean,\n * avoidDirIfSet?: boolean,\n * avoidLTRByDefault?: boolean\n * }} cfg\n */\nconst i18nizeElement = (element, {\n language,\n // These avoid setting if found to be already set with the same value\n // on the closest ancestor\n avoidLangIfSet = true, avoidDirIfSet = true,\n // This avoids setting LTR if there is no ancestor with `dir` (since\n // LTR is the default)\n avoidLTRByDefault = true\n} = {}) => {\n if (!element || !language) {\n throw new TypeError('You must supply an element and language');\n }\n let presetLangElement;\n\n // We set `lang` if:\n // 1. The user is not avoiding setting `lang` when the supplied language\n // is the same as the closest ancestor with `lang`\n // 2. There is no ancestor with `lang`\n // 3. The closest ancestor with `lang` has a different language from\n // the supplied\n if (avoidLangIfSet) {\n presetLangElement = /** @type {HTMLElement} */ (\n element.closest('[lang]')\n );\n }\n if (!presetLangElement || presetLangElement.lang !== language) {\n element.lang = language;\n }\n\n // See <https://github.com/tc39/ecma402/issues/205> for request for JavaScript to detect this\n // We set `dir` if:\n // 1. The user is not avoiding setting `dir` when the supplied\n // language's directionality is the same as the closest ancestor\n // with `dir`\n // 2. There is no ancestor with `dir` (and this is either not an LTR\n // direction or the user isn't avoiding (the default) LTR)\n // 3. The closest ancestor with `dir` has a different `dir` from the\n // direction of the supplied language\n const {direction: dir} =\n /**\n * @type {Intl.Locale & {\n * textInfo: {direction: \"ltr\"|\"rtl\"|\"ttb\"}\n * }}\n */ (\n new Intl.Locale(language)\n ).textInfo;\n\n /** @type {HTMLElement|undefined} */\n let presetDirElement;\n if (avoidDirIfSet ||\n // If avoiding the default LTR except when different (even if not\n // avoiding an (RTL) already-set dir), we need to know if different\n (avoidLTRByDefault && dir === 'ltr')\n ) {\n presetDirElement = /** @type {HTMLElement} */ (\n element.closest('[dir]')\n );\n }\n if (\n // If the closest ancestor with `dir` is different, we need to\n // set regardless\n (presetDirElement && presetDirElement.dir !== dir) ||\n // We set if the user is not avoiding (whether there is no ancestor\n // with `div` or even when there is and the language has the same\n // directionality as the closest ancestor with `dir`) OR\n (!avoidDirIfSet ||\n // ...if there is no ancestor with `dir` AND...\n (!presetDirElement &&\n // this is either not an LTR direction or the user isn't\n // avoiding (the default) LTR\n (!avoidLTRByDefault || dir !== 'ltr'))\n )\n ) {\n element.dir = dir;\n\n /* c8 ignore next 3 */\n if (dir === 'ttb') {\n element.style.writingMode = 'vertical-lr';\n }\n }\n};\nexport default i18nizeElement;\n"],"names":["_regexEscape","_regexParseLocale","Locale","constructor","locale","TypeError","test","RangeError","_locale","_escapeRegExpPattern","str","replace","_toLowerCase","reserveReturnValue","toLowerCase","_toUpperCase","toUpperCase","_trim","delimiter","patterns","regexp","addPatterns","pattern","push","Array","isArray","map","item","patternDelimiter","join","RegExp","match","_parseLocale","strLocale","matches","exec","parsedLocale","lang","countryCode","_isRtlLang","objLocale","_BIDI_RTL_LANGS","indexOf","textInfo","direction","Intl","globalThis","i18nizeElement","element","language","avoidLangIfSet","avoidDirIfSet","avoidLTRByDefault","presetLangElement","closest","dir","presetDirElement","style","writingMode"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"i18nizeelement.umd.js","sources":["../node_modules/.pnpm/intl-locale-textinfo-polyfill@2.1.1/node_modules/intl-locale-textinfo-polyfill/lib/Locale.js","../node_modules/.pnpm/intl-locale-textinfo-polyfill@2.1.1/node_modules/intl-locale-textinfo-polyfill/lib/polyfill.js","../src/index.js"],"sourcesContent":["/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n// Private vars - star\nconst _regexEscape = /([\\.\\*\\+\\^\\$\\[\\]\\\\\\(\\)\\|\\{\\}\\,\\-\\:\\?])/g; // eslint-disable-line no-useless-escape\nconst _regexParseLocale = /^([a-zA-Z]{2,3}|[a-zA-Z]{5,8})(-[a-zA-Z]{4})?(-(?:[a-zA-Z]{2}|\\d{3}))?(-(?:[a-zA-Z\\d]{5,8}|\\d[a-zA-Z\\d]{3}))?$/;\n// Private vars - end\n\nclass Locale { // eslint-disable-line consistent-this\n\n /**\n * @param {string} locale\n */\n constructor (locale) {\n if (typeof locale !== 'string') {\n throw new TypeError('A string argument is expected');\n }\n if (!_regexParseLocale.test(locale)) {\n throw new RangeError('A proper locale must be provided');\n }\n this._locale = locale;\n }\n\n // Private functions - star\n\n /**\n * @param {null|undefined|string} [str]\n * @returns {null|undefined|string}\n */\n static _escapeRegExpPattern (str) {\n if (typeof str !== 'string') {\n return str;\n }\n return str.replace(_regexEscape, '\\\\$1');\n }\n\n /**\n * @param {string|null} [str]\n * @param {boolean} [reserveReturnValue]\n */\n static _toLowerCase (str, reserveReturnValue) {\n if (typeof str !== 'string') {\n return reserveReturnValue && str;\n }\n return str.toLowerCase();\n }\n\n /**\n * @param {string|null} [str]\n * @param {boolean} [reserveReturnValue]\n */\n static _toUpperCase (str, reserveReturnValue) {\n if (typeof str !== 'string') {\n return reserveReturnValue && str;\n }\n return str.toUpperCase();\n }\n\n /**\n * @param {string|null} [str]\n * @param {string|null|string[]|boolean} [delimiter]\n * @param {boolean} [reserveReturnValue]\n */\n static _trim (str, delimiter, reserveReturnValue) {\n /** @type {string[]} */\n const patterns = [];\n let regexp;\n\n /**\n * @param {string|null|undefined} pattern\n */\n const addPatterns = function (pattern) {\n // Build trim RegExp pattern and push it to patterns array\n patterns.push('^' + pattern + '+|' + pattern + '+$');\n };\n\n // fix reserveReturnValue value\n if (typeof delimiter === 'boolean') {\n reserveReturnValue = delimiter;\n delimiter = null;\n }\n\n if (typeof str !== 'string') {\n return reserveReturnValue ? str : undefined;\n }\n\n // Trim based on delimiter array values\n if (Array.isArray(delimiter)) {\n // Loop through delimiter array\n delimiter.map((item) => {\n // Escape delimiter to be valid RegExp pattern\n const pattern = this._escapeRegExpPattern(item);\n // Push pattern to patterns array\n addPatterns(pattern);\n });\n }\n\n // Trim based on delimiter string value\n if (typeof delimiter === 'string') {\n // Escape delimiter to be valid RegExp pattern\n const patternDelimiter = this._escapeRegExpPattern(delimiter);\n // push pattern to patterns array\n addPatterns(patternDelimiter);\n }\n\n // If delimiter is not defined, trim white spaces\n if (!delimiter) {\n // Push white space pattern to patterns array\n addPatterns('\\\\s');\n }\n\n // Build RegExp pattern\n const pattern = '(' + patterns.join('|') + ')';\n // Build RegExp object\n regexp = new RegExp(pattern, 'g');\n\n // trim string for all patterns\n while (str.match(regexp)) {\n str = str.replace(regexp, '');\n }\n\n // Return trim string\n return str;\n }\n\n /**\n * @typedef {{\n * lang: string,\n * script: string|undefined,\n * countryCode: string|undefined\n * }} LocaleInfo\n */\n\n /**\n * @param {string|null} [strLocale]\n * @returns {undefined|LocaleInfo}\n */\n static _parseLocale (strLocale) {\n if (typeof strLocale !== 'string') {\n return undefined;\n }\n\n const matches = _regexParseLocale.exec(strLocale); // exec regex\n let lang;\n let script;\n let countryCode;\n\n if (!strLocale || !matches) {\n return undefined;\n }\n\n // fix script string by trimming '-' and '_'\n const matches2 = this._trim(matches[2], ['-', '_']);\n\n // fix countryCode string by trimming '-' and '_'\n const matches3 = this._trim(matches[3], ['-', '_']);\n\n lang = /** @type {string} */ (this._toLowerCase(matches[1]));\n script = this._toLowerCase(matches2) || script;\n countryCode = this._toUpperCase(matches3) || countryCode;\n\n // object with lang, script properties\n const parsedLocale = {\n lang,\n script,\n countryCode\n };\n\n // return parsed locale object\n return parsedLocale;\n }\n // Private functions - End\n\n _isRtlLang () {\n const { lang, script } = /** @type {LocaleInfo} */ (\n Locale._parseLocale(this._locale)\n );\n\n if (script) {\n return Locale._RTL_SCRIPTS.indexOf(script) >= 0;\n }\n\n // return true if the intel string lang exists in the BID RTL LANGS array else return false\n return (Locale._BIDI_RTL_LANGS.indexOf(lang) >= 0);\n }\n\n // Public functions - star\n get textInfo () {\n // return 'rtl' if the intel string lang exists in the BID RTL LANGS array else return 'ltr'\n const direction = this._isRtlLang() ? 'rtl' : 'ltr';\n return { direction };\n }\n\n // Public functions - End\n}\n\nLocale._RTL_SCRIPTS = [\n 'adlm', 'arab', 'armi', 'avst', 'chrs', 'cprt',\n 'elym', 'hatr', 'hebr', 'hung', 'khar', 'lydi',\n 'mand', 'mani', 'mend', 'merc', 'mero', 'narb',\n 'nbat', 'nkoo', 'orkh', 'ougr', 'palm', 'phli',\n 'phlp', 'phnx', 'prti', 'rohg', 'samr', 'sarb',\n 'sogd', 'sogo', 'syrc', 'thaa', 'yezi'\n];\n\n// Why not working as static property\nLocale._BIDI_RTL_LANGS = [\n // Const BIDI_RTL_LANGS Array\n // BIDI_RTL_LANGS ref: http://en.wikipedia.org/wiki/Right-to-left\n // Table of scripts in Unicode: https://en.wikipedia.org/wiki/Script_(Unicode)\n 'ae',\t// Avestan\n 'aeb', // Tunisian Arabic\n 'ajt', // Tunisian Arabic (old)\n 'apc', // Levantine Arabic\n 'apd', // Sudanese Arabic\n 'ar', // 'العربية', Arabic\n 'ara', // Arabic\n 'arb', // Standard Arabic\n 'arc', // Aramaic\n 'arq', // Algerian Arabic\n 'ars', // Najdi Arabic\n 'ary', // Moroccan Arabic\n 'arz', // Egyptian Arabic\n 'ave', // Avestan\n 'avl', // Eastern Egyptian Bedawi Arabic\n 'bal', // Baluchi\n 'bcc', // 'بلوچی مکرانی', Southern Balochi\n 'bej', // Beja; Bedawiyet\n 'bft', // Balti\n 'bgn', // Western Balochi\n 'bqi', // 'بختياري', Bakthiari\n 'brh', // Brahui\n 'cja', // Cham, Western\n 'ckb', // 'Soranî / کوردی', Sorani\n 'cld', // Chaldean Neo-Aramaic\n 'dcc', // Deccan\n 'dgl', // Andaandi\n 'div', // Divehi\n 'drw', // Darwazi (old)\n 'dv', // Dhivehi\n 'fa', // 'فارسی', Persian\n 'fas', // Persian\n 'fia', // Nobiin\n 'fub', // Fulfulde (Adamawa)\n 'gbz', // Dari, Zoroastrian\n 'gjk', // Koli, Kachi\n 'gju', // Gujari\n 'glk', // 'گیلکی', Gilaki\n 'grc', // Greek, Ancient (to 1453)\n 'gwc', // Kalami\n 'gwt', // Gawar-Bati\n 'haz', // Hazaragi\n 'he', // 'עברית', Hebrew\n 'heb', // Hebrew\n 'hnd', // Hindko, Southern\n 'hno', // Hindko, Northern\n 'iw', // Hebrew (old)\n 'ji', // Yiddish (old)\n 'kas', // Kashmiri\n 'kby', // Kanuri, Manga\n 'khw', // Khowar\n 'ks', // Kashmiri\n 'kvx', // Koli, Parkari\n 'kxp', // Koli, Wadiyara\n 'kzh', // Kenuzi-Dongola (old)\n 'lad', // Ladino\n 'lah', // Lahnda\n 'lki', // Laki\n 'lrc', // Luri, Northern\n 'luz', // Luri, Southern\n 'mde', // Maba (Chad)\n 'mfa', // Malay, Pattani\n 'mki', // Dhatki\n 'mvy', // Kohistani, Indus\n 'myz', // Mandaic, Classical\n 'mzn', // 'مازِرونی', Mazanderani\n 'nqo', // N'Ko\n 'oru', // Ormuri\n 'ota', // Turkish, Ottoman (1500–1928)\n 'otk', // Turkish, Old\n 'oui', // Uighur, Old\n 'pal', // Pahlavi\n 'pbu', // Pashto, Northern\n 'per', // Persian\n 'pes', // Western Farsi\n 'phl', // Phalura\n 'phn', // Phoenician\n 'pnb', // 'پنجابی', Western Punjabi\n 'pra', // Prakrit languages\n 'prd', // Dari (Persian)\n 'prs', // 'دری', Darī\n 'ps', // 'پښتو', Pashto,\n 'pus', // Pushto\n 'rhg', // Rohingya\n 'rmt', // Domari\n 'scl', // Shina\n 'sd', // 'سنڌي', Sindhi\n 'sdh', // Kurdish, Southern\n 'shu', // Arabic (Chadian)\n 'skr', // Saraiki\n 'smp', // Samaritan\n 'snd', // Sindhi\n 'sog', // Sogdian\n 'swb', // Comorian\n 'syr', // Syriac\n 'tnf', // Tangshewi (old)\n 'trw', // Torwali\n 'ug', // 'Uyghurche / ئۇيغۇرچە', Uyghur\n 'uig', // Uighur\n 'ur', // 'اردو', Urdu\n 'urd', // Urdu\n 'wni', // Comorian, Ndzwani\n 'xco', // Chorasmian\n 'xld', // Lydian\n 'xmn', // Manichaean Middle Persian\n 'xmr', // Meroitic\n 'xna', // North Arabian, Ancient\n 'xpr', // Parthian\n 'xsa', // Sabaean\n 'ydd', // Yiddish, Eastern\n 'yi', // 'ייִדיש', Yiddish\n 'yid', // Yiddish\n 'zdj' // Comorian, Ngazidja\n];\n\nexport default Locale;\n","import Locale from './Locale.js';\n\nif (typeof Intl === 'undefined') {\n // @ts-expect-error Not a complete polyfill\n globalThis.Intl = {};\n}\n\nIntl.Locale = Locale;\n","import 'intl-locale-textinfo-polyfill/lib/polyfill.js';\n\n// e.g., `i18nizeElement(document.title, {language: 'ar-AR'});`\n\n/**\n * @param {HTMLElement} element\n * @param {{\n * language?: string,\n * avoidLangIfSet?: boolean,\n * avoidDirIfSet?: boolean,\n * avoidLTRByDefault?: boolean\n * }} cfg\n */\nconst i18nizeElement = (element, {\n language,\n // These avoid setting if found to be already set with the same value\n // on the closest ancestor\n avoidLangIfSet = true, avoidDirIfSet = true,\n // This avoids setting LTR if there is no ancestor with `dir` (since\n // LTR is the default)\n avoidLTRByDefault = true\n} = {}) => {\n if (!element || !language) {\n throw new TypeError('You must supply an element and language');\n }\n let presetLangElement;\n\n // We set `lang` if:\n // 1. The user is not avoiding setting `lang` when the supplied language\n // is the same as the closest ancestor with `lang`\n // 2. There is no ancestor with `lang`\n // 3. The closest ancestor with `lang` has a different language from\n // the supplied\n if (avoidLangIfSet) {\n presetLangElement = /** @type {HTMLElement} */ (\n element.closest('[lang]')\n );\n }\n if (!presetLangElement || presetLangElement.lang !== language) {\n element.lang = language;\n }\n\n // See <https://github.com/tc39/ecma402/issues/205> for request for JavaScript to detect this\n // We set `dir` if:\n // 1. The user is not avoiding setting `dir` when the supplied\n // language's directionality is the same as the closest ancestor\n // with `dir`\n // 2. There is no ancestor with `dir` (and this is either not an LTR\n // direction or the user isn't avoiding (the default) LTR)\n // 3. The closest ancestor with `dir` has a different `dir` from the\n // direction of the supplied language\n const {direction: dir} =\n /**\n * @type {Intl.Locale & {\n * textInfo: {direction: \"ltr\"|\"rtl\"|\"ttb\"}\n * }}\n */ (\n new Intl.Locale(language)\n ).textInfo;\n\n /** @type {HTMLElement|undefined} */\n let presetDirElement;\n if (avoidDirIfSet ||\n // If avoiding the default LTR except when different (even if not\n // avoiding an (RTL) already-set dir), we need to know if different\n (avoidLTRByDefault && dir === 'ltr')\n ) {\n presetDirElement = /** @type {HTMLElement} */ (\n element.closest('[dir]')\n );\n }\n if (\n // If the closest ancestor with `dir` is different, we need to\n // set regardless\n (presetDirElement && presetDirElement.dir !== dir) ||\n // We set if the user is not avoiding (whether there is no ancestor\n // with `div` or even when there is and the language has the same\n // directionality as the closest ancestor with `dir`) OR\n (!avoidDirIfSet ||\n // ...if there is no ancestor with `dir` AND...\n (!presetDirElement &&\n // this is either not an LTR direction or the user isn't\n // avoiding (the default) LTR\n (!avoidLTRByDefault || dir !== 'ltr'))\n )\n ) {\n element.dir = dir;\n\n /* c8 ignore next 3 */\n if (dir === 'ttb') {\n element.style.writingMode = 'vertical-lr';\n }\n }\n};\nexport default i18nizeElement;\n"],"names":["_regexEscape","_regexParseLocale","Locale","constructor","locale","TypeError","test","RangeError","_locale","_escapeRegExpPattern","str","replace","_toLowerCase","reserveReturnValue","toLowerCase","_toUpperCase","toUpperCase","_trim","delimiter","patterns","regexp","addPatterns","pattern","push","undefined","Array","isArray","map","item","patternDelimiter","join","RegExp","match","_parseLocale","strLocale","matches","exec","lang","script","countryCode","matches2","matches3","parsedLocale","_isRtlLang","_RTL_SCRIPTS","indexOf","_BIDI_RTL_LANGS","textInfo","direction","Intl","globalThis","i18nizeElement","element","language","avoidLangIfSet","avoidDirIfSet","avoidLTRByDefault","presetLangElement","closest","dir","presetDirElement","style","writingMode"],"mappings":"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AK;EAAE;EACP,KAAK;EAAE;EACP,IAAI;EAAE;EACN,IAAI;EAAE;EACN,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,IAAI;EAAE;EACN,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,IAAI;EAAE;EACN,IAAI;EAAE;EACN,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,IAAI;EAAE;EACN,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,IAAI;EAAE;EACN,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,IAAI;EAAE;EACN,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,IAAI;EAAE;EACN,KAAK;EAAE;EACP,IAAI;EAAE;EACN,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,KAAK;EAAE;EACP,IAAI;EAAE;EACN,KAAK;EAAE;EACP,KAAK;EAAC,CACP;;ECnUD,IAAI,OAAOG,IAAI,KAAK,WAAW,EAAE;EAC/B;EACAC,EAAAA,UAAU,CAACD,IAAI,GAAG,EAAE,CAAA;EACtB,CAAA;EAEAA,IAAI,CAAC/C,MAAM,GAAGA,MAAM;;ECLpB;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA,QAAMiD,cAAc,GAAGA,CAACC,OAAO,EAAE;IAC/BC,QAAQ;EACR;EACA;EACAC,EAAAA,cAAc,GAAG,IAAI;EAAEC,EAAAA,aAAa,GAAG,IAAI;EAC3C;EACA;EACAC,EAAAA,iBAAiB,GAAG,IAAA;EACtB,CAAC,GAAG,EAAE,KAAK;EACT,EAAA,IAAI,CAACJ,OAAO,IAAI,CAACC,QAAQ,EAAE;EACzB,IAAA,MAAM,IAAIhD,SAAS,CAAC,yCAAyC,CAAC,CAAA;EAChE,GAAA;EACA,EAAA,IAAIoD,iBAAiB,CAAA;;EAErB;EACA;EACA;EACA;EACA;EACA;EACA,EAAA,IAAIH,cAAc,EAAE;EAClBG,IAAAA,iBAAiB;EACfL,IAAAA,OAAO,CAACM,OAAO,CAAC,QAAQ,CACzB,CAAA;EACH,GAAA;IACA,IAAI,CAACD,iBAAiB,IAAIA,iBAAiB,CAACpB,IAAI,KAAKgB,QAAQ,EAAE;MAC7DD,OAAO,CAACf,IAAI,GAAGgB,QAAQ,CAAA;EACzB,GAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACA,MAAM;EAACL,IAAAA,SAAS,EAAEW,GAAAA;KAAI;EACpB;EACJ;EACA;EACA;EACA;EACM,EAAA,IAAIV,IAAI,CAAC/C,MAAM,CAACmD,QAAQ,CAAC,CACzBN,QAAQ,CAAA;;EAEZ;EACA,EAAA,IAAIa,gBAAgB,CAAA;EACpB,EAAA,IAAIL,aAAa;EACf;EACA;EACCC,EAAAA,iBAAiB,IAAIG,GAAG,KAAK,KAAM,EACpC;EACAC,IAAAA,gBAAgB;EACdR,IAAAA,OAAO,CAACM,OAAO,CAAC,OAAO,CACxB,CAAA;EACH,GAAA;EACA,EAAA;EACE;EACA;EACCE,EAAAA,gBAAgB,IAAIA,gBAAgB,CAACD,GAAG,KAAKA,GAAG;EAC/C;EACA;EACA;EACC,EAAA,CAACJ,aAAa;EACb;EACC,EAAA,CAACK,gBAAgB;EAChB;EACA;EACC,EAAA,CAACJ,iBAAiB,IAAIG,GAAG,KAAK,KAAK,CACvC,EACH;MACAP,OAAO,CAACO,GAAG,GAAGA,GAAG,CAAA;;EAEjB;MACA,IAAIA,GAAG,KAAK,KAAK,EAAE;EACjBP,MAAAA,OAAO,CAACS,KAAK,CAACC,WAAW,GAAG,aAAa,CAAA;EAC3C,KAAA;EACF,GAAA;EACF;;;;;;;;","x_google_ignoreList":[0,1]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";AAIA;;;;;;;;GAQG;AACH,yCARW,WAAW,mEACX;IACV,QAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAqB,CAAC,EAAE,OAAO,CAAA;CAC5B,QAkFH"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";AAIA;;;;;;;;GAQG;AACH,yCARW,WAAW,mEACX;IACN,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,QAkFH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "i18nizeelement",
3
- "version": "0.5.2",
3
+ "version": "0.6.0",
4
4
  "author": "Brett Zamir",
5
5
  "contributors": [],
6
6
  "license": "MIT",
@@ -30,61 +30,48 @@
30
30
  "html",
31
31
  "rtl"
32
32
  ],
33
+ "browserslist": [
34
+ "defaults, not op_mini all"
35
+ ],
36
+ "engines": {
37
+ "node": ">=16.0.0"
38
+ },
39
+ "dependencies": {
40
+ "intl-locale-textinfo-polyfill": "^2.1.1"
41
+ },
42
+ "devDependencies": {
43
+ "@babel/core": "^7.25.2",
44
+ "@rollup/plugin-babel": "^6.0.4",
45
+ "@rollup/plugin-node-resolve": "^15.3.0",
46
+ "@types/chai": "^5.0.0",
47
+ "@types/jsdom": "^21.1.7",
48
+ "@types/mocha": "^10.0.8",
49
+ "c8": "^10.1.2",
50
+ "chai": "^5.1.1",
51
+ "eslint": "^9.11.1",
52
+ "eslint-config-ash-nazg": "^36.19.0",
53
+ "jamilih": "^0.60.0",
54
+ "jsdom": "^25.0.1",
55
+ "mocha": "^10.7.3",
56
+ "node-static": "0.7.11",
57
+ "nodemon": "^3.1.7",
58
+ "open-cli": "^8.0.0",
59
+ "rollup": "^4.23.0",
60
+ "source-map-support": "^0.5.21",
61
+ "typescript": "^5.6.2"
62
+ },
33
63
  "scripts": {
34
64
  "copy": "cp i18nizeelement-jamilih-plugin.es6.d.ts dist/i18nizeelement-jamilih-plugin.es6.d.ts",
35
65
  "lint": "npm run eslint",
36
- "eslint": "eslint --ext=js,md,html .",
66
+ "eslint": "eslint .",
37
67
  "tsc": "tsc",
38
68
  "build": "npm run rollup && npm run copy && tsc -p tsconfig-prod.json",
39
69
  "rollup": "rollup -c rollup.config.umd.js && rollup -c rollup.config.es6.js",
40
70
  "start": "npm run test:watch",
41
71
  "mocha": "_mocha --require chai/register-expect.js --require test/bootstrap/node.js test/*.js --exit",
42
72
  "test:watch": "nodemon --watch src --watch test --exec 'npm test'",
43
- "c8": "echo 'Deleting esm cache for coverage' && rm -Rf node_modules/.cache && c8 npm run mocha",
73
+ "c8": "echo 'Deleting cache for coverage' && rm -Rf node_modules/.cache && c8 npm run mocha",
44
74
  "test": "npm run eslint && npm run build && npm run c8",
45
- "browser-test": "npm run build && open-cli http://127.0.0.1:8080/test/ && static -p 8080",
46
- "prepublishOnly": "npm run build && npm test"
47
- },
48
- "engines": {
49
- "node": ">=16.0.0"
50
- },
51
- "devDependencies": {
52
- "@babel/core": "^7.21.8",
53
- "@brettz9/eslint-plugin": "^1.0.4",
54
- "@rollup/plugin-babel": "^6.0.3",
55
- "@rollup/plugin-node-resolve": "^15.0.2",
56
- "@types/chai": "^4.3.5",
57
- "@types/jsdom": "^21.1.1",
58
- "@types/mocha": "^10.0.1",
59
- "c8": "^7.13.0",
60
- "chai": "^4.3.7",
61
- "eslint": "^8.40.0",
62
- "eslint-config-ash-nazg": "^34.12.0",
63
- "eslint-config-standard": "^17.0.0",
64
- "eslint-plugin-array-func": "^3.1.8",
65
- "eslint-plugin-compat": "^4.1.4",
66
- "eslint-plugin-eslint-comments": "^3.2.0",
67
- "eslint-plugin-html": "^7.1.0",
68
- "eslint-plugin-import": "^2.27.5",
69
- "eslint-plugin-jsdoc": "^44.2.1",
70
- "eslint-plugin-markdown": "^3.0.0",
71
- "eslint-plugin-no-unsanitized": "^4.0.2",
72
- "eslint-plugin-no-use-extend-native": "^0.5.0",
73
- "eslint-plugin-node": "^11.1.0",
74
- "eslint-plugin-promise": "^6.1.1",
75
- "eslint-plugin-sonarjs": "^0.19.0",
76
- "eslint-plugin-standard": "^4.1.0",
77
- "eslint-plugin-unicorn": "^47.0.0",
78
- "esm": "^3.2.25",
79
- "intl-locale-textinfo-polyfill": "^1.0.1",
80
- "jamilih": "^0.57.1",
81
- "jsdom": "^22.0.0",
82
- "mocha": "^10.2.0",
83
- "node-static": "0.7.11",
84
- "nodemon": "^2.0.22",
85
- "open-cli": "^7.2.0",
86
- "rollup": "^3.21.6",
87
- "source-map-support": "^0.5.21",
88
- "typescript": "^5.0.4"
75
+ "browser-test": "npm run build && open-cli http://127.0.0.1:8080/test/ && static -p 8080"
89
76
  }
90
- }
77
+ }