i18nizeelement 0.5.2 → 0.7.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.
@@ -1,4 +1,4 @@
1
1
  export default plugin;
2
2
  /** @type {import('jamilih').JamilihPlugin} */
3
- declare const plugin: import('jamilih').JamilihPlugin;
3
+ declare const plugin: import("jamilih").JamilihPlugin;
4
4
  //# sourceMappingURL=i18nizeelement-jamilih-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"i18nizeelement-jamilih-plugin.d.ts","sourceRoot":"","sources":["../src/i18nizeelement-jamilih-plugin.js"],"names":[],"mappings":";AAEA,8CAA8C;AAC9C,sBADW,OAAO,SAAS,EAAE,aAAa,CA+BxC"}
1
+ {"version":3,"file":"i18nizeelement-jamilih-plugin.d.ts","sourceRoot":"","sources":["../src/i18nizeelement-jamilih-plugin.js"],"names":[],"mappings":";AAEA,8CAA8C;AAC9C,sBADW,OAAO,SAAS,EAAE,aAAa,CA6BxC"}
@@ -5,12 +5,13 @@
5
5
 
6
6
  // Private vars - star
7
7
  const _regexEscape = /([\.\*\+\^\$\[\]\\\(\)\|\{\}\,\-\:\?])/g; // eslint-disable-line no-useless-escape
8
- const _regexParseLocale = /^([a-zA-Z]+)([-a-zA-Z]*)$/;
8
+ 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}))?$/;
9
9
  // Private vars - end
10
10
 
11
11
  class Locale {
12
- // eslint-disable-line consistent-this
13
-
12
+ /**
13
+ * @param {string} locale
14
+ */
14
15
  constructor(locale) {
15
16
  if (typeof locale !== 'string') {
16
17
  throw new TypeError('A string argument is expected');
@@ -22,27 +23,53 @@ class Locale {
22
23
  }
23
24
 
24
25
  // Private functions - star
26
+
27
+ /**
28
+ * @param {null|undefined|string} [str]
29
+ * @returns {null|undefined|string}
30
+ */
25
31
  static _escapeRegExpPattern(str) {
26
32
  if (typeof str !== 'string') {
27
33
  return str;
28
34
  }
29
35
  return str.replace(_regexEscape, '\\$1');
30
36
  }
37
+
38
+ /**
39
+ * @param {string|null} [str]
40
+ * @param {boolean} [reserveReturnValue]
41
+ */
31
42
  static _toLowerCase(str, reserveReturnValue) {
32
43
  if (typeof str !== 'string') {
33
44
  return reserveReturnValue && str;
34
45
  }
35
46
  return str.toLowerCase();
36
47
  }
48
+
49
+ /**
50
+ * @param {string|null} [str]
51
+ * @param {boolean} [reserveReturnValue]
52
+ */
37
53
  static _toUpperCase(str, reserveReturnValue) {
38
54
  if (typeof str !== 'string') {
39
55
  return reserveReturnValue && str;
40
56
  }
41
57
  return str.toUpperCase();
42
58
  }
59
+
60
+ /**
61
+ * @param {string|null} [str]
62
+ * @param {string|null|string[]|boolean} [delimiter]
63
+ * @param {boolean} [reserveReturnValue]
64
+ */
43
65
  static _trim(str, delimiter, reserveReturnValue) {
66
+ /** @type {string[]} */
44
67
  const patterns = [];
45
68
  let regexp;
69
+
70
+ /**
71
+ * @param {string|null|undefined} pattern
72
+ */
46
73
  const addPatterns = function (pattern) {
47
74
  // Build trim RegExp pattern and push it to patterns array
48
75
  patterns.push('^' + pattern + '+|' + pattern + '+$');
@@ -54,14 +81,14 @@ class Locale {
54
81
  delimiter = null;
55
82
  }
56
83
  if (typeof str !== 'string') {
57
- return reserveReturnValue && str;
84
+ return reserveReturnValue ? str : undefined;
58
85
  }
59
86
 
60
87
  // Trim based on delimiter array values
61
88
  if (Array.isArray(delimiter)) {
62
89
  // Loop through delimiter array
63
90
  delimiter.map(item => {
64
- // Escape delimiter to be valid RegExp Pattern
91
+ // Escape delimiter to be valid RegExp pattern
65
92
  const pattern = this._escapeRegExpPattern(item);
66
93
  // Push pattern to patterns array
67
94
  addPatterns(pattern);
@@ -70,13 +97,13 @@ class Locale {
70
97
 
71
98
  // Trim based on delimiter string value
72
99
  if (typeof delimiter === 'string') {
73
- // Escape delimiter to be valid RegExp Pattern
100
+ // Escape delimiter to be valid RegExp pattern
74
101
  const patternDelimiter = this._escapeRegExpPattern(delimiter);
75
102
  // push pattern to patterns array
76
103
  addPatterns(patternDelimiter);
77
104
  }
78
105
 
79
- // If delimiter is not defined, Trim white spaces
106
+ // If delimiter is not defined, trim white spaces
80
107
  if (!delimiter) {
81
108
  // Push white space pattern to patterns array
82
109
  addPatterns('\\s');
@@ -95,23 +122,44 @@ class Locale {
95
122
  // Return trim string
96
123
  return str;
97
124
  }
125
+
126
+ /**
127
+ * @typedef {{
128
+ * lang: string,
129
+ * script: string|undefined,
130
+ * countryCode: string|undefined
131
+ * }} LocaleInfo
132
+ */
133
+
134
+ /**
135
+ * @param {string|null} [strLocale]
136
+ * @returns {undefined|LocaleInfo}
137
+ */
98
138
  static _parseLocale(strLocale) {
99
- var matches = _regexParseLocale.exec(strLocale); // exec regex
100
- let parsedLocale;
139
+ if (typeof strLocale !== 'string') {
140
+ return undefined;
141
+ }
142
+ const matches = _regexParseLocale.exec(strLocale); // exec regex
101
143
  let lang;
144
+ let script;
102
145
  let countryCode;
103
146
  if (!strLocale || !matches) {
104
- return;
147
+ return undefined;
105
148
  }
106
149
 
150
+ // fix script string by trimming '-' and '_'
151
+ const matches2 = this._trim(matches[2], ['-', '_']);
152
+
107
153
  // fix countryCode string by trimming '-' and '_'
108
- matches[2] = this._trim(matches[2], ['-', '_']);
109
- lang = this._toLowerCase(matches[1]);
110
- countryCode = this._toUpperCase(matches[2]) || countryCode;
154
+ const matches3 = this._trim(matches[3], ['-', '_']);
155
+ lang = /** @type {string} */this._toLowerCase(matches[1]);
156
+ script = this._toLowerCase(matches2) || script;
157
+ countryCode = this._toUpperCase(matches3) || countryCode;
111
158
 
112
- // object with lang, countryCode properties
113
- parsedLocale = {
159
+ // object with lang, script properties
160
+ const parsedLocale = {
114
161
  lang,
162
+ script,
115
163
  countryCode
116
164
  };
117
165
 
@@ -121,14 +169,21 @@ class Locale {
121
169
  // Private functions - End
122
170
 
123
171
  _isRtlLang() {
124
- const objLocale = this.constructor._parseLocale(this._locale);
172
+ const {
173
+ lang,
174
+ script
175
+ } = /** @type {LocaleInfo} */
176
+ Locale._parseLocale(this._locale);
177
+ if (script) {
178
+ return Locale._RTL_SCRIPTS.indexOf(script) >= 0;
179
+ }
125
180
 
126
181
  // return true if the intel string lang exists in the BID RTL LANGS array else return false
127
- return this.constructor._BIDI_RTL_LANGS.indexOf(objLocale.lang) >= 0;
182
+ return Locale._BIDI_RTL_LANGS.indexOf(lang) >= 0;
128
183
  }
129
184
 
130
185
  // Public functions - star
131
- get textInfo() {
186
+ getTextInfo() {
132
187
  // return 'rtl' if the intel string lang exists in the BID RTL LANGS array else return 'ltr'
133
188
  const direction = this._isRtlLang() ? 'rtl' : 'ltr';
134
189
  return {
@@ -138,50 +193,260 @@ class Locale {
138
193
 
139
194
  // Public functions - End
140
195
  }
196
+ 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'];
141
197
 
142
198
  // Why not working as static property
143
199
  Locale._BIDI_RTL_LANGS = [
144
200
  // Const BIDI_RTL_LANGS Array
145
201
  // BIDI_RTL_LANGS ref: http://en.wikipedia.org/wiki/Right-to-left
146
202
  // Table of scripts in Unicode: https://en.wikipedia.org/wiki/Script_(Unicode)
147
- 'ae', /* Avestan */
148
- 'ar', /* 'العربية', Arabic */
149
- 'arc', /* Aramaic */
150
- 'bcc', /* 'بلوچی مکرانی', Southern Balochi */
151
- 'bqi', /* 'بختياري', Bakthiari */
152
- 'ckb', /* 'Soranî / کوردی', Sorani */
153
- 'dv', /* Dhivehi */
154
- 'fa', /* 'فارسی', Persian */
155
- 'glk', /* 'گیلکی', Gilaki */
156
- 'he', /* 'עברית', Hebrew */
157
- 'ku', /* 'Kurdî / كوردی', Kurdish */
158
- 'mzn', /* 'مازِرونی', Mazanderani */
159
- 'nqo', /* N'Ko */
160
- 'pnb', /* 'پنجابی', Western Punjabi */
161
- 'prs', /* 'دری', Darī */
162
- 'ps', /* 'پښتو', Pashto, */
163
- 'sd', /* 'سنڌي', Sindhi */
164
- 'ug', /* 'Uyghurche / ئۇيغۇرچە', Uyghur */
165
- 'ur', /* 'اردو', Urdu */
166
- 'yi' /* 'ייִדיש', Yiddish */];
203
+ 'ae',
204
+ // Avestan
205
+ 'aeb',
206
+ // Tunisian Arabic
207
+ 'ajt',
208
+ // Tunisian Arabic (old)
209
+ 'apc',
210
+ // Levantine Arabic
211
+ 'apd',
212
+ // Sudanese Arabic
213
+ 'ar',
214
+ // 'العربية', Arabic
215
+ 'ara',
216
+ // Arabic
217
+ 'arb',
218
+ // Standard Arabic
219
+ 'arc',
220
+ // Aramaic
221
+ 'arq',
222
+ // Algerian Arabic
223
+ 'ars',
224
+ // Najdi Arabic
225
+ 'ary',
226
+ // Moroccan Arabic
227
+ 'arz',
228
+ // Egyptian Arabic
229
+ 'ave',
230
+ // Avestan
231
+ 'avl',
232
+ // Eastern Egyptian Bedawi Arabic
233
+ 'bal',
234
+ // Baluchi
235
+ 'bcc',
236
+ // 'بلوچی مکرانی', Southern Balochi
237
+ 'bej',
238
+ // Beja; Bedawiyet
239
+ 'bft',
240
+ // Balti
241
+ 'bgn',
242
+ // Western Balochi
243
+ 'bqi',
244
+ // 'بختياري', Bakthiari
245
+ 'brh',
246
+ // Brahui
247
+ 'cja',
248
+ // Cham, Western
249
+ 'ckb',
250
+ // 'Soranî / کوردی', Sorani
251
+ 'cld',
252
+ // Chaldean Neo-Aramaic
253
+ 'dcc',
254
+ // Deccan
255
+ 'dgl',
256
+ // Andaandi
257
+ 'div',
258
+ // Divehi
259
+ 'drw',
260
+ // Darwazi (old)
261
+ 'dv',
262
+ // Dhivehi
263
+ 'fa',
264
+ // 'فارسی', Persian
265
+ 'fas',
266
+ // Persian
267
+ 'fia',
268
+ // Nobiin
269
+ 'fub',
270
+ // Fulfulde (Adamawa)
271
+ 'gbz',
272
+ // Dari, Zoroastrian
273
+ 'gjk',
274
+ // Koli, Kachi
275
+ 'gju',
276
+ // Gujari
277
+ 'glk',
278
+ // 'گیلکی', Gilaki
279
+ 'grc',
280
+ // Greek, Ancient (to 1453)
281
+ 'gwc',
282
+ // Kalami
283
+ 'gwt',
284
+ // Gawar-Bati
285
+ 'haz',
286
+ // Hazaragi
287
+ 'he',
288
+ // 'עברית', Hebrew
289
+ 'heb',
290
+ // Hebrew
291
+ 'hnd',
292
+ // Hindko, Southern
293
+ 'hno',
294
+ // Hindko, Northern
295
+ 'iw',
296
+ // Hebrew (old)
297
+ 'ji',
298
+ // Yiddish (old)
299
+ 'kas',
300
+ // Kashmiri
301
+ 'kby',
302
+ // Kanuri, Manga
303
+ 'khw',
304
+ // Khowar
305
+ 'ks',
306
+ // Kashmiri
307
+ 'kvx',
308
+ // Koli, Parkari
309
+ 'kxp',
310
+ // Koli, Wadiyara
311
+ 'kzh',
312
+ // Kenuzi-Dongola (old)
313
+ 'lad',
314
+ // Ladino
315
+ 'lah',
316
+ // Lahnda
317
+ 'lki',
318
+ // Laki
319
+ 'lrc',
320
+ // Luri, Northern
321
+ 'luz',
322
+ // Luri, Southern
323
+ 'mde',
324
+ // Maba (Chad)
325
+ 'mfa',
326
+ // Malay, Pattani
327
+ 'mki',
328
+ // Dhatki
329
+ 'mvy',
330
+ // Kohistani, Indus
331
+ 'myz',
332
+ // Mandaic, Classical
333
+ 'mzn',
334
+ // 'مازِرونی', Mazanderani
335
+ 'nqo',
336
+ // N'Ko
337
+ 'oru',
338
+ // Ormuri
339
+ 'ota',
340
+ // Turkish, Ottoman (1500–1928)
341
+ 'otk',
342
+ // Turkish, Old
343
+ 'oui',
344
+ // Uighur, Old
345
+ 'pal',
346
+ // Pahlavi
347
+ 'pbu',
348
+ // Pashto, Northern
349
+ 'per',
350
+ // Persian
351
+ 'pes',
352
+ // Western Farsi
353
+ 'phl',
354
+ // Phalura
355
+ 'phn',
356
+ // Phoenician
357
+ 'pnb',
358
+ // 'پنجابی', Western Punjabi
359
+ 'pra',
360
+ // Prakrit languages
361
+ 'prd',
362
+ // Dari (Persian)
363
+ 'prs',
364
+ // 'دری', Darī
365
+ 'ps',
366
+ // 'پښتو', Pashto,
367
+ 'pus',
368
+ // Pushto
369
+ 'rhg',
370
+ // Rohingya
371
+ 'rmt',
372
+ // Domari
373
+ 'scl',
374
+ // Shina
375
+ 'sd',
376
+ // 'سنڌي', Sindhi
377
+ 'sdh',
378
+ // Kurdish, Southern
379
+ 'shu',
380
+ // Arabic (Chadian)
381
+ 'skr',
382
+ // Saraiki
383
+ 'smp',
384
+ // Samaritan
385
+ 'snd',
386
+ // Sindhi
387
+ 'sog',
388
+ // Sogdian
389
+ 'swb',
390
+ // Comorian
391
+ 'syr',
392
+ // Syriac
393
+ 'tnf',
394
+ // Tangshewi (old)
395
+ 'trw',
396
+ // Torwali
397
+ 'ug',
398
+ // 'Uyghurche / ئۇيغۇرچە', Uyghur
399
+ 'uig',
400
+ // Uighur
401
+ 'ur',
402
+ // 'اردو', Urdu
403
+ 'urd',
404
+ // Urdu
405
+ 'wni',
406
+ // Comorian, Ndzwani
407
+ 'xco',
408
+ // Chorasmian
409
+ 'xld',
410
+ // Lydian
411
+ 'xmn',
412
+ // Manichaean Middle Persian
413
+ 'xmr',
414
+ // Meroitic
415
+ 'xna',
416
+ // North Arabian, Ancient
417
+ 'xpr',
418
+ // Parthian
419
+ 'xsa',
420
+ // Sabaean
421
+ 'ydd',
422
+ // Yiddish, Eastern
423
+ 'yi',
424
+ // 'ייִדיש', Yiddish
425
+ 'yid',
426
+ // Yiddish
427
+ 'zdj' // Comorian, Ngazidja
428
+ ];
167
429
 
168
430
  if (typeof Intl === 'undefined') {
431
+ // @ts-expect-error Not a complete polyfill
169
432
  globalThis.Intl = {};
170
433
  }
171
- if (typeof Intl.Locale === 'undefined') {
172
- Intl.Locale = Locale;
173
- }
174
-
175
- // e.g., `i18nizeElement(document.title, {language: 'ar-AR'});`
434
+ Intl.Locale = Locale;
176
435
 
177
436
  /**
178
- * @param {HTMLElement} element
179
- * @param {{
437
+ * @typedef {{
180
438
  * language?: string,
181
439
  * avoidLangIfSet?: boolean,
182
440
  * avoidDirIfSet?: boolean,
183
441
  * avoidLTRByDefault?: boolean
184
- * }} cfg
442
+ * }} I18nizeElementOptions
443
+ */
444
+
445
+ // e.g., `i18nizeElement(document.title, {language: 'ar-AR'});`
446
+
447
+ /**
448
+ * @param {HTMLElement} element
449
+ * @param {I18nizeElementOptions} cfg
185
450
  */
186
451
  const i18nizeElement = (element, {
187
452
  language,
@@ -226,10 +491,10 @@ const i18nizeElement = (element, {
226
491
  } =
227
492
  /**
228
493
  * @type {Intl.Locale & {
229
- * textInfo: {direction: "ltr"|"rtl"|"ttb"}
494
+ * getTextInfo: () => {direction: "ltr"|"rtl"|"ttb"}
230
495
  * }}
231
496
  */
232
- new Intl.Locale(language).textInfo;
497
+ new Intl.Locale(language).getTextInfo();
233
498
 
234
499
  /** @type {HTMLElement|undefined} */
235
500
  let presetDirElement;
@@ -288,14 +553,12 @@ const plugin = {
288
553
  // the child element into the ancestors
289
554
  // it is being built with
290
555
  await Promise.resolve();
291
- i18nizeElement( /** @type {HTMLElement} */element, {
292
- ...
556
+ i18nizeElement(/** @type {HTMLElement} */element, {
557
+ ...(
293
558
  /**
294
- * @type {{
295
- * [key: string]: any;
296
- * }}
559
+ * @type {import('./index.js').I18nizeElementOptions}
297
560
  */
298
- options
561
+ options)
299
562
  });
300
563
  }
301
564
  };
@@ -1 +1 @@
1
- {"version":3,"file":"i18nizeelement-jamilih-plugin.es6.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","../src/i18nizeelement-jamilih-plugin.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","import i18nizeElement from './index.js';\n\n/** @type {import('jamilih').JamilihPlugin} */\nconst plugin = {\n name: '$_language',\n async set ({element, attribute: {value}}) {\n let options = /** @type {import('jamilih').PluginValue} */ (\n value\n );\n if (typeof options === 'string') {\n options = {language: options};\n } else if (Array.isArray(options)) {\n options = {\n ...options[1],\n language: options[0]\n };\n }\n // We don't immediately internationalize\n // because Jamilih has not yet appended\n // the child element into the ancestors\n // it is being built with\n await Promise.resolve();\n i18nizeElement(/** @type {HTMLElement} */ (element), {\n ...(\n /**\n * @type {{\n * [key: string]: any;\n * }}\n */\n (options)\n )\n });\n }\n};\n\nexport default plugin;\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","plugin","name","set","attribute","value","options","Promise","resolve"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"i18nizeelement-jamilih-plugin.es6.js","sources":["../node_modules/.pnpm/intl-locale-textinfo-polyfill@3.0.0/node_modules/intl-locale-textinfo-polyfill/lib/Locale.js","../node_modules/.pnpm/intl-locale-textinfo-polyfill@3.0.0/node_modules/intl-locale-textinfo-polyfill/lib/polyfill.js","../src/index.js","../src/i18nizeelement-jamilih-plugin.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 {\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 getTextInfo () {\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/**\n * @typedef {{\n * language?: string,\n * avoidLangIfSet?: boolean,\n * avoidDirIfSet?: boolean,\n * avoidLTRByDefault?: boolean\n * }} I18nizeElementOptions\n */\n\n// e.g., `i18nizeElement(document.title, {language: 'ar-AR'});`\n\n/**\n * @param {HTMLElement} element\n * @param {I18nizeElementOptions} 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 * getTextInfo: () => {direction: \"ltr\"|\"rtl\"|\"ttb\"}\n * }}\n */ (\n new Intl.Locale(language)\n ).getTextInfo();\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","import i18nizeElement from './index.js';\n\n/** @type {import('jamilih').JamilihPlugin} */\nconst plugin = {\n name: '$_language',\n async set ({element, attribute: {value}}) {\n let options = /** @type {import('jamilih').PluginValue} */ (\n value\n );\n if (typeof options === 'string') {\n options = {language: options};\n } else if (Array.isArray(options)) {\n options = {\n ...options[1],\n language: options[0]\n };\n }\n // We don't immediately internationalize\n // because Jamilih has not yet appended\n // the child element into the ancestors\n // it is being built with\n await Promise.resolve();\n i18nizeElement(/** @type {HTMLElement} */ (element), {\n ...(\n /**\n * @type {import('./index.js').I18nizeElementOptions}\n */\n (options)\n )\n });\n }\n};\n\nexport default plugin;\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","getTextInfo","direction","Intl","globalThis","i18nizeElement","element","language","avoidLangIfSet","avoidDirIfSet","avoidLTRByDefault","presetLangElement","closest","dir","presetDirElement","style","writingMode","plugin","name","set","attribute","value","options","Promise","resolve"],"mappings":"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","x_google_ignoreList":[0,1]}