@alfadocs/ui-kit-debug 1.91.0 → 1.93.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.
Files changed (127) hide show
  1. package/README.md +24 -0
  2. package/dist/_chunks/map-view--c9bJDRw.js +726 -0
  3. package/dist/_chunks/map-view--c9bJDRw.js.map +1 -0
  4. package/dist/_chunks/{practice-results-CQ_KvEXK.js → practice-results-BWX9y6mS.js} +495 -471
  5. package/dist/_chunks/practice-results-BWX9y6mS.js.map +1 -0
  6. package/dist/_chunks/{booking-opt_h7Uc.js → reserved.agent-C1gLyK2R.js} +1031 -1011
  7. package/dist/_chunks/reserved.agent-C1gLyK2R.js.map +1 -0
  8. package/dist/ag-grid.css +2746 -0
  9. package/dist/agent-catalog.json +15 -1
  10. package/dist/apexcharts.css +40 -0
  11. package/dist/components/booking/index.d.ts +3 -0
  12. package/dist/components/booking/index.d.ts.map +1 -1
  13. package/dist/components/booking/index.js +6 -4
  14. package/dist/components/booking/reserved.agent.d.ts +4 -0
  15. package/dist/components/booking/reserved.agent.d.ts.map +1 -0
  16. package/dist/components/booking/reserved.d.ts +9 -6
  17. package/dist/components/booking/reserved.d.ts.map +1 -1
  18. package/dist/components/map-view/index.d.ts +1 -1
  19. package/dist/components/map-view/index.d.ts.map +1 -1
  20. package/dist/components/map-view/index.js +1 -1
  21. package/dist/components/map-view/map-view.d.ts +17 -0
  22. package/dist/components/map-view/map-view.d.ts.map +1 -1
  23. package/dist/components/practice-results/index.js +1 -1
  24. package/dist/components/practice-results/practice-results.d.ts +2 -2
  25. package/dist/components/practice-results/practice-results.d.ts.map +1 -1
  26. package/dist/core.css +2 -0
  27. package/dist/fullcalendar.css +56 -0
  28. package/dist/i18n/config.d.ts.map +1 -1
  29. package/dist/i18n/config.js +81 -81
  30. package/dist/i18n/config.js.map +1 -1
  31. package/dist/i18n/locales/ar.d.ts +1 -0
  32. package/dist/i18n/locales/ar.d.ts.map +1 -1
  33. package/dist/i18n/locales/ar.js +2 -1
  34. package/dist/i18n/locales/ar.js.map +1 -1
  35. package/dist/i18n/locales/de.d.ts +1 -0
  36. package/dist/i18n/locales/de.d.ts.map +1 -1
  37. package/dist/i18n/locales/de.js +2 -1
  38. package/dist/i18n/locales/de.js.map +1 -1
  39. package/dist/i18n/locales/el.d.ts +1 -0
  40. package/dist/i18n/locales/el.d.ts.map +1 -1
  41. package/dist/i18n/locales/el.js +2 -1
  42. package/dist/i18n/locales/el.js.map +1 -1
  43. package/dist/i18n/locales/en.d.ts +3 -2
  44. package/dist/i18n/locales/en.d.ts.map +1 -1
  45. package/dist/i18n/locales/en.js +2 -1
  46. package/dist/i18n/locales/en.js.map +1 -1
  47. package/dist/i18n/locales/es.d.ts +1 -0
  48. package/dist/i18n/locales/es.d.ts.map +1 -1
  49. package/dist/i18n/locales/es.js +2 -1
  50. package/dist/i18n/locales/es.js.map +1 -1
  51. package/dist/i18n/locales/fr.d.ts +1 -0
  52. package/dist/i18n/locales/fr.d.ts.map +1 -1
  53. package/dist/i18n/locales/fr.js +2 -1
  54. package/dist/i18n/locales/fr.js.map +1 -1
  55. package/dist/i18n/locales/hi.d.ts +1 -0
  56. package/dist/i18n/locales/hi.d.ts.map +1 -1
  57. package/dist/i18n/locales/hi.js +2 -1
  58. package/dist/i18n/locales/hi.js.map +1 -1
  59. package/dist/i18n/locales/it.d.ts +1 -0
  60. package/dist/i18n/locales/it.d.ts.map +1 -1
  61. package/dist/i18n/locales/it.js +2 -1
  62. package/dist/i18n/locales/it.js.map +1 -1
  63. package/dist/i18n/locales/ja.d.ts +1 -0
  64. package/dist/i18n/locales/ja.d.ts.map +1 -1
  65. package/dist/i18n/locales/ja.js +2 -1
  66. package/dist/i18n/locales/ja.js.map +1 -1
  67. package/dist/i18n/locales/nl.d.ts +1 -0
  68. package/dist/i18n/locales/nl.d.ts.map +1 -1
  69. package/dist/i18n/locales/nl.js +2 -1
  70. package/dist/i18n/locales/nl.js.map +1 -1
  71. package/dist/i18n/locales/pl.d.ts +1 -0
  72. package/dist/i18n/locales/pl.d.ts.map +1 -1
  73. package/dist/i18n/locales/pl.js +2 -1
  74. package/dist/i18n/locales/pl.js.map +1 -1
  75. package/dist/i18n/locales/pt.d.ts +1 -0
  76. package/dist/i18n/locales/pt.d.ts.map +1 -1
  77. package/dist/i18n/locales/pt.js +2 -1
  78. package/dist/i18n/locales/pt.js.map +1 -1
  79. package/dist/i18n/locales/ro.d.ts +1 -0
  80. package/dist/i18n/locales/ro.d.ts.map +1 -1
  81. package/dist/i18n/locales/ro.js +2 -1
  82. package/dist/i18n/locales/ro.js.map +1 -1
  83. package/dist/i18n/locales/ru.d.ts +1 -0
  84. package/dist/i18n/locales/ru.d.ts.map +1 -1
  85. package/dist/i18n/locales/ru.js +2 -1
  86. package/dist/i18n/locales/ru.js.map +1 -1
  87. package/dist/i18n/locales/sq.d.ts +1 -0
  88. package/dist/i18n/locales/sq.d.ts.map +1 -1
  89. package/dist/i18n/locales/sq.js +2 -1
  90. package/dist/i18n/locales/sq.js.map +1 -1
  91. package/dist/i18n/locales/sv.d.ts +1 -0
  92. package/dist/i18n/locales/sv.d.ts.map +1 -1
  93. package/dist/i18n/locales/sv.js +2 -1
  94. package/dist/i18n/locales/sv.js.map +1 -1
  95. package/dist/i18n/locales/tr.d.ts +1 -0
  96. package/dist/i18n/locales/tr.d.ts.map +1 -1
  97. package/dist/i18n/locales/tr.js +2 -1
  98. package/dist/i18n/locales/tr.js.map +1 -1
  99. package/dist/i18n/locales/zh.d.ts +1 -0
  100. package/dist/i18n/locales/zh.d.ts.map +1 -1
  101. package/dist/i18n/locales/zh.js +2 -1
  102. package/dist/i18n/locales/zh.js.map +1 -1
  103. package/dist/index.js +452 -450
  104. package/dist/locales/ar.json +2 -1
  105. package/dist/locales/de.json +2 -1
  106. package/dist/locales/el.json +2 -1
  107. package/dist/locales/en.json +2 -1
  108. package/dist/locales/es.json +2 -1
  109. package/dist/locales/fr.json +2 -1
  110. package/dist/locales/hi.json +2 -1
  111. package/dist/locales/it.json +2 -1
  112. package/dist/locales/ja.json +2 -1
  113. package/dist/locales/nl.json +2 -1
  114. package/dist/locales/pl.json +2 -1
  115. package/dist/locales/pt.json +2 -1
  116. package/dist/locales/ro.json +2 -1
  117. package/dist/locales/ru.json +2 -1
  118. package/dist/locales/sq.json +2 -1
  119. package/dist/locales/sv.json +2 -1
  120. package/dist/locales/tr.json +2 -1
  121. package/dist/locales/zh.json +2 -1
  122. package/dist/redactor.css +54 -0
  123. package/package.json +10 -3
  124. package/dist/_chunks/booking-opt_h7Uc.js.map +0 -1
  125. package/dist/_chunks/map-view-UrNgxBy3.js +0 -606
  126. package/dist/_chunks/map-view-UrNgxBy3.js.map +0 -1
  127. package/dist/_chunks/practice-results-CQ_KvEXK.js.map +0 -1
@@ -0,0 +1,56 @@
1
+ @layer utilities{.ds\:\[\&_\.fc-scrollgrid-section-header\.fc-scrollgrid-section-sticky\>\*\]\:\!top-\[var\(--inc1-header-offset\,0px\)\] .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:var(--inc1-header-offset,0px)!important}.ds\:\[\&_\.fc-view\]\:\!overflow-visible .fc-view,.ds\:\[\&_\.fc-view\>table\]\:\!overflow-visible .fc-view>table{overflow:visible!important}.ds\:\[\&_\:is\(\.fc-event\,\.fc-bg-event_button\,\.fc-daygrid-more-link\,a\[data-navlink\]\)\]\:\[scroll-margin-block-start\:var\(--inc1-pinned-block-size\,0px\)\] :is(.fc-event,.fc-bg-event button,.fc-daygrid-more-link,a[data-navlink]){scroll-margin-block-start:var(--inc1-pinned-block-size,0px)}}
2
+ @media(prefers-reduced-motion:reduce){
3
+ .fc-theme-alfadocs .fc-event,.fc-theme-alfadocs .fc-button{transition:none!important}
4
+ .fc-theme-alfadocs .calendar-event-focused{transition:none}
5
+ .fc-theme-alfadocs .calendar-col-loading{animation:none}}
6
+ @media(forced-colors:active){
7
+ .fc-theme-alfadocs .calendar-event-selected{outline-color:Highlight}
8
+ .fc-theme-alfadocs.calendar-availability-mode a.fc-event:not(.calendar-event-selected){opacity:1}
9
+ .fc-theme-alfadocs.calendar-composing-mode a.fc-event:not(.calendar-event-draft,.calendar-event-selected){opacity:1}
10
+ .fc-theme-alfadocs .calendar-col-loading{animation:none;outline:1px dashed CanvasText;outline-offset:-1px}}
11
+ .fc-theme-alfadocs{--fc-page-bg-color: var(--background);--fc-neutral-bg-color: var(--background);--fc-neutral-text-color: var(--foreground);--fc-border-color: var(--border);--fc-today-bg-color: color-mix(in srgb, var(--accent) 8%, transparent);--fc-event-bg-color: transparent;--fc-event-border-color: transparent;--fc-event-text-color: var(--foreground);--fc-event-selected-overlay-color: color-mix( in srgb, var(--foreground) 12%, transparent );--fc-now-indicator-color: var(--now-indicator);--fc-list-event-hover-bg-color: color-mix( in srgb, var(--muted) 50%, transparent );--fc-highlight-color: color-mix(in srgb, var(--primary) 12%, transparent);font-family:var(--font-sans);color:var(--foreground);background:var(--background)}
12
+ .fc-theme-alfadocs .fc-button{background-color:var(--secondary);border-color:var(--border);color:var(--secondary-foreground);font-family:var(--font-sans);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);transition:background-color var(--animation-duration) var(--ease-out);min-block-size:var(--min-target-size);padding-inline:var(--spacing-md)}
13
+ .fc-theme-alfadocs .fc-button:hover{background-color:var(--secondary-hover)}
14
+ .fc-theme-alfadocs .fc-button-primary:not(:disabled).fc-button-active,.fc-theme-alfadocs .fc-button-primary:not(:disabled):active{background-color:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}
15
+ .fc-theme-alfadocs .fc-button:focus-visible{outline:var(--focus-ring-width) solid var(--ring);outline-offset:var(--focus-ring-offset)}
16
+ .fc-theme-alfadocs a.fc-event:focus-visible{outline:var(--focus-ring-width) solid var(--ring);outline-offset:var(--focus-ring-offset)}
17
+ .fc-theme-alfadocs :is(.fc-timegrid-event-harness,.fc-daygrid-event-harness,.fc-timeline-event-harness):has(>:is(a.fc-event:focus-visible,.calendar-event-focused,.calendar-event-selected)){z-index:50!important}
18
+ .fc-theme-alfadocs .fc-button:disabled{opacity:var(--opacity-50);cursor:not-allowed}
19
+ .fc-theme-alfadocs .fc-resource{min-block-size:var(--min-target-size)}
20
+ .fc-theme-alfadocs .fc-timegrid-slot{block-size:var(--calendar-slot-size, var(--calendar-slot-size-compact))}
21
+ .fc-theme-alfadocs.calendar-density-comfortable{--calendar-slot-size: var(--calendar-slot-size-comfortable)}
22
+ .fc-theme-alfadocs .fc-event,.fc-theme-alfadocs .fc-event-main{border-radius:var(--radius-sm);font-size:var(--font-size-sm);padding-inline:0}
23
+ .fc-theme-alfadocs .fc-timegrid-event .fc-event-main{padding:0}
24
+ .fc-theme-alfadocs .fc-list-event-dot{border-color:var(--muted-foreground)}
25
+ .fc-theme-alfadocs .fc-daygrid-more-link{background-color:var(--background);color:var(--foreground);border:1px solid var(--border);border-radius:var(--radius-sm);padding-inline:var(--spacing-xs);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);text-decoration:none;min-block-size:var(--min-target-size);display:inline-flex;align-items:center}
26
+ .fc-theme-alfadocs .fc-daygrid-more-link:hover{background-color:var(--muted)}
27
+ .fc-theme-alfadocs .fc-daygrid-more-link:focus-visible{outline:var(--focus-ring-width) solid var(--ring);outline-offset:var(--focus-ring-offset)}
28
+ .fc-theme-alfadocs .calendar-event-focused{outline:none;box-shadow:var(--shadow-focus);transition:box-shadow var(--animation-duration) var(--ease-out)}
29
+ .fc-theme-alfadocs .resource-dot{display:inline-block;inline-size:12px;block-size:12px;border-radius:var(--radius-full);margin-inline-end:var(--spacing-xs);vertical-align:middle;flex-shrink:0;background-color:var(--border)}
30
+ .fc-theme-alfadocs:not(.calendar-vertical-resource-labels) .fc-resource.fc-col-header-cell .fc-col-header-cell-cushion{max-inline-size:100%;box-sizing:border-box}
31
+ .fc-theme-alfadocs .calendar-resource-label{min-inline-size:0;max-inline-size:100%}
32
+ .fc-theme-alfadocs .calendar-resource-label>span:last-child{min-inline-size:0}
33
+ .fc-theme-alfadocs .resource-initials{display:inline-flex;align-items:center;justify-content:center;inline-size:28px;block-size:28px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);margin-inline-end:var(--spacing-xs);background-color:var(--muted);color:var(--foreground)}
34
+ .fc-theme-alfadocs .fc-resource-timegrid-day-frame+.fc-resource-timegrid-day-frame,.fc-theme-alfadocs .fc-timeline-slot-frame[data-date]+.fc-timeline-slot-frame[data-date]{border-inline-start:2px solid var(--border)}
35
+ .fc-theme-alfadocs .fc-col-header-cell,.fc-theme-alfadocs .fc-col-header-cell.fc-day-today,.fc-theme-alfadocs .fc-timeline-header,.fc-theme-alfadocs .fc-timeline-header-row,.fc-theme-alfadocs .fc-timeline-slot-label,.fc-theme-alfadocs .fc-timeline-slot-label.fc-day-today,.fc-theme-alfadocs .fc-datagrid-header,.fc-theme-alfadocs .fc-datagrid-header .fc-datagrid-cell{background-color:var(--background)}
36
+ .fc-theme-alfadocs .calendar-col-hidden{display:none}
37
+ .fc-theme-alfadocs .calendar-event-selected{outline:var(--focus-ring-width) solid var(--ring);outline-offset:1px}
38
+ .fc-theme-alfadocs.calendar-availability-mode .fc-bg-event{background:color-mix(in srgb,var(--success) 8%,transparent);opacity:1;border:1px solid var(--success);border-radius:var(--radius-sm);margin:1px;cursor:pointer;transition:background-color var(--animation-duration) var(--ease-out),box-shadow var(--animation-duration) var(--ease-out);display:flex;align-items:center;justify-content:center}
39
+ .fc-theme-alfadocs.calendar-availability-mode .fc-bg-event>*{display:flex;align-items:center;justify-content:center;max-inline-size:100%}
40
+ .fc-theme-alfadocs.calendar-availability-mode .fc-bg-event:hover{background:color-mix(in srgb,var(--success) 16%,transparent);box-shadow:var(--shadow-sm)}
41
+ .fc-theme-alfadocs .calendar-bg-event-label{display:inline-flex;align-items:center;gap:var(--spacing-2xs);padding-inline:var(--spacing-xs);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--success-foreground);max-inline-size:100%;overflow:hidden;white-space:nowrap}
42
+ .fc-theme-alfadocs .fc-bg-event:has(button[data-event-id]){opacity:1}
43
+ .fc-theme-alfadocs.calendar-availability-mode a.fc-event:not(.calendar-event-selected,:has([data-kind=task])){opacity:.35}
44
+ .fc-theme-alfadocs.calendar-composing-mode a.fc-event:not(.calendar-event-draft,.calendar-event-selected,:has([data-kind=task])){opacity:.35}
45
+ .fc-theme-alfadocs.calendar-composing-mode a.fc-event.calendar-event-draft{cursor:grab}
46
+ .fc-theme-alfadocs.calendar-composing-mode a.fc-event.calendar-event-draft:active{cursor:grabbing}
47
+ .fc-theme-alfadocs .calendar-col-loading{background-image:repeating-linear-gradient(135deg,color-mix(in srgb,var(--muted-foreground) 14%,transparent) 0 6px,transparent 6px 12px);animation:calendar-col-loading-drift calc(var(--animation-duration) * 6) linear infinite}
48
+ @keyframes calendar-col-loading-drift{to{background-position:0 calc(12px * 1.4142)}}
49
+ .fc-theme-alfadocs .fc-resource.fc-col-header-cell .fc-col-header-cell-cushion{box-sizing:border-box;max-inline-size:100%}
50
+ .calendar-vertical-resource-labels .fc-resource.fc-col-header-cell .fc-col-header-cell-cushion:not(:has([data-component=resource-chip],[data-component=avatar])){writing-mode:vertical-rl;rotate:180deg;max-inline-size:7.5rem}
51
+ .calendar-vertical-resource-labels .fc-resource.fc-col-header-cell .fc-col-header-cell-cushion>span>span:last-child{min-inline-size:0}
52
+ .fc-theme-alfadocs .fc-timegrid-slot-label-cushion,.fc-theme-alfadocs .fc-timegrid-axis-cushion{font-size:var(--font-size-xs);color:var(--muted-foreground);font-variant-numeric:tabular-nums}
53
+ .fc-theme-alfadocs.calendar-zebra-rows .fc-timegrid-slots tr:nth-child(odd){background-color:color-mix(in srgb,var(--muted) 70%,transparent)}
54
+ .fc-theme-alfadocs .fc .fc-scrollgrid{border-width:0}
55
+ .fc-theme-alfadocs .fc .fc-scrollgrid-section>td{border-right-width:0}
56
+ .fc-theme-alfadocs .fc .fc-scrollgrid>tbody>tr:last-child>td{border-bottom-width:0}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/i18n/config.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,KAAK,IAAI,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC;AA8C7D,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIlE;AAqUD;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,YAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAEf;AAwJD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,GAAE,YAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,0DAA0D;AAC1D,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,YAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,+DAA+D;AAC/D,wBAAsB,cAAc,CAClC,QAAQ,GAAE,YAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAIf;AAsCD,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/i18n/config.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,KAAK,IAAI,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC;AAgD7D,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIlE;AAqUD;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,YAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAEf;AAwJD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,GAAE,YAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,0DAA0D;AAC1D,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,YAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,+DAA+D;AAC/D,wBAAsB,cAAc,CAClC,QAAQ,GAAE,YAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAIf;AA4CD,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,7 +1,7 @@
1
- import d from "i18next";
2
- import { default as J } from "i18next";
3
- import { initReactI18next as x } from "react-i18next";
4
- const W = [
1
+ import f from "i18next";
2
+ import { default as Q } from "i18next";
3
+ import { initReactI18next as N } from "react-i18next";
4
+ const F = [
5
5
  "en",
6
6
  "it",
7
7
  "de",
@@ -21,7 +21,7 @@ const W = [
21
21
  "zh",
22
22
  "hi"
23
23
  ];
24
- function F(e, r, t = d) {
24
+ function T(e, r, t = f) {
25
25
  t.addResourceBundle(
26
26
  e,
27
27
  "ui",
@@ -51,8 +51,8 @@ const A = !1, L = {
51
51
  ja: () => import("./locales/ja.js").then((e) => e.jaUi),
52
52
  zh: () => import("./locales/zh.js").then((e) => e.zhUi),
53
53
  hi: () => import("./locales/hi.js").then((e) => e.hiUi)
54
- }, q = /* @__PURE__ */ new WeakMap();
55
- function I(e) {
54
+ }, q = /* @__PURE__ */ new WeakMap(), S = /* @__PURE__ */ new WeakSet();
55
+ function B(e) {
56
56
  if (!e) return;
57
57
  const r = e.toLowerCase().replaceAll("_", "-").split("-")[0];
58
58
  return Object.hasOwn(L, r) ? r : void 0;
@@ -69,28 +69,28 @@ function p(e) {
69
69
  waiters: /* @__PURE__ */ new Set(),
70
70
  requested: /* @__PURE__ */ new Set()
71
71
  };
72
- q.set(e, t), N(e, t);
72
+ q.set(e, t), M(e, t);
73
73
  const i = e.changeLanguage.bind(e);
74
74
  return e.changeLanguage = (n, o) => {
75
75
  const u = ++t.languageRequest;
76
76
  if (!n) return i(n, o);
77
- const s = e.services.languageUtils, a = I(n), h = e.getDataByLanguage(n), l = a && a !== n && B(n, e).includes(a) && h && Object.keys(h).some(
78
- (f) => f !== "ui" || t.completed.get(n) !== e.getResourceBundle(n, "ui")
79
- ), g = e.options.supportedLngs && !l ? s.getBestMatchFromCodes([n]) : n;
77
+ const a = e.services.languageUtils, s = B(n), h = e.getDataByLanguage(n), l = s && s !== n && I(n, e).includes(s) && h && Object.keys(h).some(
78
+ (d) => d !== "ui" || t.completed.get(n) !== e.getResourceBundle(n, "ui")
79
+ ), g = e.options.supportedLngs && !l ? a.getBestMatchFromCodes([n]) : n;
80
80
  if (!g) {
81
- const f = e.t.bind(e);
82
- return o == null || o(null, f), Promise.resolve(f);
81
+ const d = e.t.bind(e);
82
+ return o == null || o(null, d), Promise.resolve(d);
83
83
  }
84
84
  return t.changing++, R(g, e).then(
85
85
  () => {
86
86
  if (u !== t.languageRequest) {
87
- const f = e.t.bind(e);
88
- return o == null || o(null, f), f;
87
+ const d = e.t.bind(e);
88
+ return o == null || o(null, d), d;
89
89
  }
90
90
  return i(g, o);
91
91
  },
92
- (f) => {
93
- throw o == null || o(f, e.t.bind(e)), f;
92
+ (d) => {
93
+ throw o == null || o(d, e.t.bind(e)), d;
94
94
  }
95
95
  ).finally(() => {
96
96
  t.changing--;
@@ -100,53 +100,53 @@ function p(e) {
100
100
  }), U(t);
101
101
  }), e.on("languageChanged", () => U(t)), t;
102
102
  }
103
- function N(e, r) {
103
+ function M(e, r) {
104
104
  const t = e.hasLoadedNamespace.bind(e);
105
- e.hasLoadedNamespace = (u, s) => {
106
- const a = t(u, s);
107
- return c(u) && e.isInitialized && b(
105
+ e.hasLoadedNamespace = (u, a) => {
106
+ const s = t(u, a);
107
+ return y(u) && e.isInitialized && b(
108
108
  e,
109
109
  r,
110
- typeof (s == null ? void 0 : s.lng) == "string" ? s.lng : e.language
111
- ), a;
110
+ typeof (a == null ? void 0 : a.lng) == "string" ? a.lng : e.language
111
+ ), s;
112
112
  };
113
113
  const i = e.t.bind(e);
114
114
  e.t = ((...u) => {
115
- const s = i(...u);
116
- return typeof s == "string" && M(e, r, u) ? "" : s;
115
+ const a = i(...u);
116
+ return typeof a == "string" && O(e, r, u) ? "" : a;
117
117
  });
118
118
  const n = e.loadNamespaces.bind(e);
119
- e.loadNamespaces = (u, s) => c(u) ? O(e, r).then(() => n(u, s)) : n(u, s);
119
+ e.loadNamespaces = (u, a) => y(u) ? P(e, r).then(() => n(u, a)) : n(u, a);
120
120
  const o = e.loadLanguages.bind(e);
121
- e.loadLanguages = (u, s) => {
122
- const a = (Array.isArray(u) ? u : [u]).map((l) => m(l, e)).filter((l) => !!l), h = [].concat(e.options.ns ?? []);
123
- return !e.isInitialized || a.length === 0 || !h.includes("ui") ? o(u, s) : Promise.all(
124
- a.map((l) => y(l, e).catch(() => !1))
125
- ).then(() => o(u, s));
121
+ e.loadLanguages = (u, a) => {
122
+ const s = (Array.isArray(u) ? u : [u]).map((l) => m(l, e)).filter((l) => !!l), h = [].concat(e.options.ns ?? []);
123
+ return !e.isInitialized || s.length === 0 || !h.includes("ui") ? o(u, a) : Promise.all(
124
+ s.map((l) => c(l, e).catch(() => !1))
125
+ ).then(() => o(u, a));
126
126
  };
127
127
  }
128
- function M(e, r, t) {
128
+ function O(e, r, t) {
129
129
  if (!e.isInitialized) return !1;
130
130
  const i = [t[1], t[2]].find(
131
- (a) => typeof a == "object" && a !== null
131
+ (s) => typeof s == "object" && s !== null
132
132
  ), n = Array.isArray(t[0]) ? t[0][0] : t[0], u = (typeof n == "string" && n.includes(":") ? n.split(":")[0] : "") || (i == null ? void 0 : i.ns) || e.options.defaultNS;
133
- if (!u || !c(u)) return !1;
134
- const s = typeof (i == null ? void 0 : i.lng) == "string" ? i.lng : e.language;
135
- return w(e, s) ? !1 : (b(e, r, s), !0);
133
+ if (!u || !y(u)) return !1;
134
+ const a = typeof (i == null ? void 0 : i.lng) == "string" ? i.lng : e.language;
135
+ return w(e, a) ? !1 : (b(e, r, a), !0);
136
136
  }
137
137
  function b(e, r, t) {
138
138
  if (!t || w(e, t)) return;
139
139
  const i = m(t, e);
140
- i && (t === e.language && r.changing > 0 || (r.requested.add(i), y(i, e).catch((n) => {
140
+ i && (t === e.language && r.changing > 0 || (r.requested.add(i), c(i, e).catch((n) => {
141
141
  })));
142
142
  }
143
- const c = (e) => typeof e == "string" ? e === "ui" : e.includes("ui");
143
+ const y = (e) => typeof e == "string" ? e === "ui" : e.includes("ui");
144
144
  function w(e, r) {
145
145
  if (!r) return !0;
146
146
  const t = m(r, e);
147
147
  if (!t) return !0;
148
148
  const i = p(e);
149
- return S(t, e).every(
149
+ return x(t, e).every(
150
150
  (n) => v(n, e, i) || i.failed.has(n) || j(n, e)
151
151
  );
152
152
  }
@@ -154,7 +154,7 @@ function j(e, r) {
154
154
  const t = r.getResourceBundle(e, "ui");
155
155
  return !!(t != null && t.common && t.errorPage);
156
156
  }
157
- function O(e, r) {
157
+ function P(e, r) {
158
158
  return e.isInitialized && w(e, e.language) ? Promise.resolve() : new Promise((t) => {
159
159
  const i = () => {
160
160
  e.isInitialized && w(e, e.language) && (r.waiters.delete(i), t());
@@ -166,19 +166,19 @@ function O(e, r) {
166
166
  function U(e) {
167
167
  for (const r of [...e.waiters]) r();
168
168
  }
169
- function B(e, r) {
169
+ function I(e, r) {
170
170
  return r.services.languageUtils.toResolveHierarchy(e);
171
171
  }
172
172
  async function R(e, r) {
173
173
  const t = m(e, r);
174
- return t ? y(t, r) : !1;
174
+ return t ? c(t, r) : !1;
175
175
  }
176
176
  function m(e, r) {
177
- return [.../* @__PURE__ */ new Set([e, ...B(e, r)])].filter(Boolean).find((t) => I(t));
177
+ return [.../* @__PURE__ */ new Set([e, ...I(e, r)])].filter(Boolean).find((t) => B(t));
178
178
  }
179
- function S(e, r) {
180
- const t = I(e);
181
- return e !== t && !B(e, r).includes(t) ? [t, e] : [t];
179
+ function x(e, r) {
180
+ const t = B(e);
181
+ return e !== t && !I(e, r).includes(t) ? [t, e] : [t];
182
182
  }
183
183
  function v(e, r, t) {
184
184
  const i = r.getResourceBundle(e, "ui");
@@ -187,22 +187,22 @@ function v(e, r, t) {
187
187
  async function z(e) {
188
188
  p(e).changing > 0 || await R(e.language, e);
189
189
  }
190
- async function P(e, r = d) {
191
- await y(e, r);
190
+ async function E(e, r = f) {
191
+ await c(e, r);
192
192
  }
193
- async function y(e, r) {
193
+ async function c(e, r) {
194
194
  if (!r.isInitialized)
195
195
  throw new Error(
196
196
  "Initialise the host i18next instance before loading UI locales."
197
197
  );
198
- const t = I(e);
198
+ const t = B(e);
199
199
  if (!t) return !1;
200
- const i = p(r), n = S(e, r);
201
- if (n.every((a) => v(a, r, i)))
200
+ const i = p(r), n = x(e, r);
201
+ if (n.every((s) => v(s, r, i)))
202
202
  return !1;
203
203
  const o = n.join(":"), u = i.pending.get(o);
204
204
  if (u) return u.then(() => !1);
205
- const s = (async () => {
205
+ const a = (async () => {
206
206
  try {
207
207
  const l = await L[t]();
208
208
  r.addResourceBundle(t, "ui", l, !0, !1);
@@ -215,29 +215,29 @@ async function y(e, r) {
215
215
  !1
216
216
  ), i.completed.set(g, r.getResourceBundle(g, "ui"));
217
217
  } catch (l) {
218
- throw await E(t, n, r, i), l;
218
+ throw await H(t, n, r, i), l;
219
219
  }
220
- const a = n.some((l) => i.failed.delete(l)), h = i.requested.delete(t);
221
- U(i), (a || h || m(r.language, r) === t) && r.emit("languageChanged", r.language);
220
+ const s = n.some((l) => i.failed.delete(l)), h = i.requested.delete(t);
221
+ U(i), (s || h || m(r.language, r) === t) && r.emit("languageChanged", r.language);
222
222
  })();
223
- i.pending.set(o, s);
223
+ i.pending.set(o, a);
224
224
  try {
225
- await s;
225
+ await a;
226
226
  } finally {
227
227
  i.pending.delete(o);
228
228
  }
229
229
  return !0;
230
230
  }
231
- async function E(e, r, t, i) {
231
+ async function H(e, r, t, i) {
232
232
  const n = i.waiters.size > 0 || i.requested.has(e) || m(t.language, t) === e;
233
233
  if (i.requested.delete(e), !n) {
234
234
  for (const o of r) i.failed.add(o);
235
235
  return;
236
236
  }
237
237
  try {
238
- e !== "en" && !C(t, i).includes("en") && await y("en", t).catch(() => !1);
238
+ e !== "en" && !C(t, i).includes("en") && await c("en", t).catch(() => !1);
239
239
  const o = C(t, i);
240
- o.length > 0 ? H(t, o[0]) : K(t);
240
+ o.length > 0 ? K(t, o[0]) : W(t);
241
241
  } finally {
242
242
  for (const o of r) i.failed.add(o);
243
243
  U(i), t.isInitialized && t.emit("languageChanged", t.language);
@@ -248,7 +248,7 @@ function C(e, r) {
248
248
  (t) => v(t, e, r) || j(t, e)
249
249
  );
250
250
  }
251
- function H(e, r) {
251
+ function K(e, r) {
252
252
  const t = e.options.fallbackLng, i = (n) => typeof n == "string" ? [n] : Array.isArray(n) ? n : [];
253
253
  if (!(typeof t == "function" || t === !1)) {
254
254
  if (t && typeof t == "object" && !Array.isArray(t)) {
@@ -259,30 +259,30 @@ function H(e, r) {
259
259
  i(t).includes(r) || (e.options.fallbackLng = [...i(t), r]);
260
260
  }
261
261
  }
262
- function K(e) {
262
+ function W(e) {
263
263
  e.options.parseMissingKeyHandler || (e.options.parseMissingKeyHandler = (r, t, i) => {
264
264
  if (t !== void 0) return t;
265
- if (!(i != null && i.ns) || !c(i.ns)) return r;
265
+ if (!(i != null && i.ns) || !y(i.ns)) return r;
266
266
  const o = (r.split(/[.:]/).at(-1) ?? r).replace(/([a-z0-9])([A-Z])/g, "$1 $2").replaceAll("_", " ").toLowerCase();
267
267
  return o.charAt(0).toUpperCase() + o.slice(1);
268
268
  });
269
269
  }
270
- async function T(e = d) {
270
+ async function $(e = f) {
271
271
  if (!e.isInitialized)
272
272
  throw new Error(
273
273
  "Initialise the host i18next instance before setting up UI translations."
274
274
  );
275
275
  p(e), await R(e.language, e);
276
276
  }
277
- async function $(e, r = d) {
277
+ async function V(e, r = f) {
278
278
  p(r), await r.changeLanguage(e);
279
279
  }
280
- async function V(e = d) {
280
+ async function Z(e = f) {
281
281
  await Promise.all(
282
- Object.keys(L).map((r) => P(r, e))
282
+ Object.keys(L).map((r) => E(r, e))
283
283
  );
284
284
  }
285
- d.isInitialized || d.use(x).init({
285
+ f.isInitialized || (S.add(f), f.use(N).init({
286
286
  lng: "en",
287
287
  fallbackLng: "en",
288
288
  ns: ["ui"],
@@ -294,20 +294,20 @@ d.isInitialized || d.use(x).init({
294
294
  interpolation: { escapeValue: !1 },
295
295
  // English arrives through the lazy loader below, like every other locale.
296
296
  resources: {}
297
- });
298
- p(d);
299
- Promise.resolve().then(
300
- () => d.isInitialized ? z(d) : void 0
297
+ }));
298
+ p(f);
299
+ S.has(f) || Promise.resolve().then(
300
+ () => f.isInitialized ? z(f) : void 0
301
301
  ).catch((e) => {
302
302
  });
303
303
  export {
304
- W as LOCALES_WITH_BUNDLES,
305
- J as default,
306
- T as initialiseUiI18n,
307
- V as loadAllLocales,
308
- P as loadLocale,
309
- F as registerUiBundle,
310
- I as resolveUiLanguage,
311
- $ as setLocale
304
+ F as LOCALES_WITH_BUNDLES,
305
+ Q as default,
306
+ $ as initialiseUiI18n,
307
+ Z as loadAllLocales,
308
+ E as loadLocale,
309
+ T as registerUiBundle,
310
+ B as resolveUiLanguage,
311
+ V as setLocale
312
312
  };
313
313
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sources":["../../src/i18n/supported-locales.ts","../../src/i18n/registerUiBundle.ts","../../src/i18n/config.ts"],"sourcesContent":["/**\n * Locales that ship a JSON bundle. Consumer apps register these via\n * `i18n.addResourceBundle(locale, 'ui', bundle)` — see docs/06-i18n.mdx.\n * Locales not listed here fall back to English through i18next's own\n * `fallbackLng` resolution.\n */\nexport const LOCALES_WITH_BUNDLES = [\n 'en',\n 'it',\n 'de',\n 'ar',\n 'fr',\n 'es',\n 'pt',\n 'nl',\n 'ro',\n 'sq',\n 'tr',\n 'pl',\n 'sv',\n 'ru',\n 'el',\n 'ja',\n 'zh',\n 'hi',\n] as const;\n","import i18next, { type i18n as I18nInstance } from 'i18next';\n\n/**\n * Register or extend the `ui` namespace bundle for a locale.\n *\n * Adds missing keys to the installed i18next singleton without overwriting\n * existing translations. All 18 kit locales ship already. Load a bundled\n * locale at any time: loading fills missing keys and preserves existing values.\n * Keep app copy in the host namespace. Request upstream language review for\n * corrections to existing kit strings; this helper does not overwrite them.\n */\nexport function registerUiBundle(\n locale: string,\n bundle: Record<string, unknown>,\n instance: I18nInstance = i18next,\n): void {\n instance.addResourceBundle(\n locale,\n 'ui',\n bundle,\n /* deep */ true,\n /* overwrite */ false,\n );\n}\n","import i18next, { type i18n as I18nInstance } from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\nconst IS_DEV = import.meta.env?.DEV === true;\n\n// English is a lazy chunk like every other locale: nothing in this module\n// graph imports `./locales/en.ts` statically, so a consumer that runs in\n// Italian never downloads it (HTP-7057).\nconst LOADERS: Record<string, () => Promise<Record<string, unknown>>> = {\n en: () => import('./locales/en.ts').then((m) => m.enUi),\n it: () => import('./locales/it.ts').then((m) => m.itUi),\n de: () => import('./locales/de.ts').then((m) => m.deUi),\n ar: () => import('./locales/ar.ts').then((m) => m.arUi),\n fr: () => import('./locales/fr.ts').then((m) => m.frUi),\n es: () => import('./locales/es.ts').then((m) => m.esUi),\n pt: () => import('./locales/pt.ts').then((m) => m.ptUi),\n nl: () => import('./locales/nl.ts').then((m) => m.nlUi),\n ro: () => import('./locales/ro.ts').then((m) => m.roUi),\n sq: () => import('./locales/sq.ts').then((m) => m.sqUi),\n tr: () => import('./locales/tr.ts').then((m) => m.trUi),\n pl: () => import('./locales/pl.ts').then((m) => m.plUi),\n sv: () => import('./locales/sv.ts').then((m) => m.svUi),\n ru: () => import('./locales/ru.ts').then((m) => m.ruUi),\n el: () => import('./locales/el.ts').then((m) => m.elUi),\n ja: () => import('./locales/ja.ts').then((m) => m.jaUi),\n zh: () => import('./locales/zh.ts').then((m) => m.zhUi),\n hi: () => import('./locales/hi.ts').then((m) => m.hiUi),\n};\n\n// Completion belongs to a resource bundle, not just a language code. A host\n// can register a partial bundle or replace its store with a later init().\ninterface InstanceState {\n languageRequest: number;\n /** changeLanguage() calls whose bundle is still on its way. */\n changing: number;\n completed: Map<string, unknown>;\n /** Kit languages whose last load failed and has not been retried to success. */\n failed: Set<string>;\n pending: Map<string, Promise<void>>;\n /** Callers waiting for the active language's bundle to be in the store. */\n waiters: Set<() => void>;\n /** Kit languages a reader asked for, so their arrival redraws them. */\n requested: Set<string>;\n}\nconst instances = new WeakMap<I18nInstance, InstanceState>();\n\n/** Resolve a translation language without changing the host's formatting tag. */\nexport function resolveUiLanguage(code: string): string | undefined {\n if (!code) return undefined;\n const base = code.toLowerCase().replaceAll('_', '-').split('-')[0];\n return Object.hasOwn(LOADERS, base) ? base : undefined;\n}\n\nfunction attachInstance(instance: I18nInstance): InstanceState {\n const existing = instances.get(instance);\n if (existing) return existing;\n const state: InstanceState = {\n languageRequest: 0,\n changing: 0,\n completed: new Map(),\n failed: new Set(),\n pending: new Map(),\n waiters: new Set(),\n requested: new Set(),\n };\n instances.set(instance, state);\n installReadiness(instance, state);\n const originalChangeLanguage = instance.changeLanguage.bind(instance);\n instance.changeLanguage = (lng, callback) => {\n const request = ++state.languageRequest;\n if (!lng) return originalChangeLanguage(lng, callback);\n // Kit bundles must not trigger i18next's existing-resource shortcut for\n // a language the host explicitly excludes through supportedLngs.\n const languageUtils = instance.services.languageUtils as {\n getBestMatchFromCodes: (codes: string[]) => string | undefined;\n };\n const base = resolveUiLanguage(lng);\n const regionalResources = instance.getDataByLanguage(lng);\n const hostOwnsRegion =\n base &&\n base !== lng &&\n resolutionChain(lng, instance).includes(base) &&\n regionalResources &&\n Object.keys(regionalResources).some(\n (namespace) =>\n namespace !== 'ui' ||\n state.completed.get(lng) !== instance.getResourceBundle(lng, 'ui'),\n );\n const selected =\n instance.options.supportedLngs && !hostOwnsRegion\n ? languageUtils.getBestMatchFromCodes([lng])\n : lng;\n if (!selected) {\n const translate = instance.t.bind(instance);\n callback?.(null, translate);\n return Promise.resolve(translate);\n }\n state.changing++;\n return loadResolutionChain(selected, instance)\n .then(\n () => {\n // A cold import must not overtake a newer, already loaded selection.\n if (request !== state.languageRequest) {\n const translate = instance.t.bind(instance);\n callback?.(null, translate);\n return translate;\n }\n return originalChangeLanguage(selected, callback);\n },\n (error: unknown) => {\n callback?.(error, instance.t.bind(instance));\n throw error;\n },\n )\n .finally(() => {\n state.changing--;\n });\n };\n instance.on('initialized', () => {\n // i18next events cannot be awaited. Hosts await initialiseUiI18n() before\n // rendering; this opportunistic load also restores ordinary re-init usage.\n void restoreActiveLanguage(instance).catch((error: unknown) => {\n if (IS_DEV)\n console.warn('[i18n] Could not restore the UI locale.', error);\n });\n settleWaiters(state);\n });\n instance.on('languageChanged', () => settleWaiters(state));\n return state;\n}\n\n/**\n * Never suspend, and never draw a raw key, while a kit bundle is on the way\n * (HTP-7057).\n *\n * Without a backend, i18next calls every namespace loaded, so react-i18next\n * never suspends for `ui`. That is deliberate: a suspend with no `<Suspense>`\n * above it throws during a synchronous React 18 render (legacy\n * `ReactDOM.render`, `flushSync`, a root or state update in a click handler)\n * and unmounts the root. Instead:\n *\n * - `t()` returns an empty string for the `ui` namespace while the active\n * language's bundle is not in the store (see `blankWhilePending`);\n * - the first reader of a missing bundle starts its load, and the arrival of\n * the bundle emits `languageChanged`, which react-i18next listens to, so\n * mounted components redraw with text.\n *\n * A language switch is not affected: the kit changes language only after the\n * new bundle is in the store, so the old text stays on screen.\n */\nfunction installReadiness(instance: I18nInstance, state: InstanceState): void {\n const hasLoadedNamespace = instance.hasLoadedNamespace.bind(instance);\n instance.hasLoadedNamespace = (ns, options) => {\n const answer = hasLoadedNamespace(ns, options);\n if (usesUi(ns) && instance.isInitialized)\n requestUi(\n instance,\n state,\n typeof options?.lng === 'string' ? options.lng : instance.language,\n );\n return answer;\n };\n const translate = instance.t.bind(instance) as unknown as (\n ...args: unknown[]\n ) => unknown;\n instance.t = ((...args: unknown[]) => {\n const result = translate(...args);\n return typeof result === 'string' &&\n blankWhilePending(instance, state, args)\n ? ''\n : result;\n }) as unknown as typeof instance.t;\n const loadNamespaces = instance.loadNamespaces.bind(instance);\n instance.loadNamespaces = (ns, callback) =>\n usesUi(ns)\n ? whenUiReady(instance, state).then(() => loadNamespaces(ns, callback))\n : loadNamespaces(ns, callback);\n // react-i18next asks for `useTranslation('ui', { lng })` through\n // loadLanguages(). Load that language's kit bundle first. A failed load\n // settles too: the request never rejects.\n const loadLanguages = instance.loadLanguages.bind(instance);\n instance.loadLanguages = (lngs, callback) => {\n const wanted = (Array.isArray(lngs) ? lngs : [lngs])\n .map((code) => firstKitLanguage(code, instance))\n .filter((code): code is string => Boolean(code));\n const ui = ([] as string[]).concat(instance.options.ns ?? []);\n if (!instance.isInitialized || wanted.length === 0 || !ui.includes('ui'))\n return loadLanguages(lngs, callback);\n return Promise.all(\n wanted.map((code) => ensureLocale(code, instance).catch(() => false)),\n ).then(() => loadLanguages(lngs, callback));\n };\n}\n\n/**\n * True when this `t()` call reads the `ui` namespace of a language whose kit\n * bundle has not landed. The one place that decides \"blank\".\n */\nfunction blankWhilePending(\n instance: I18nInstance,\n state: InstanceState,\n args: unknown[],\n): boolean {\n if (!instance.isInitialized) return false;\n const options = [args[1], args[2]].find(\n (arg): arg is { ns?: unknown; lng?: unknown } =>\n typeof arg === 'object' && arg !== null,\n );\n const key = Array.isArray(args[0]) ? args[0][0] : args[0];\n const prefix =\n typeof key === 'string' && key.includes(':') ? key.split(':')[0] : '';\n const ns = prefix || options?.ns || instance.options.defaultNS;\n if (!ns || !usesUi(ns as string | readonly string[])) return false;\n const lng =\n typeof options?.lng === 'string' ? options.lng : instance.language;\n if (isUiReady(instance, lng)) return false;\n // Whoever reads text first starts the load.\n requestUi(instance, state, lng);\n return true;\n}\n\n/**\n * Start loading the bundle a reader is waiting for, if nothing is. Safe to\n * call from render: loads are shared, and a failed one counts as settled.\n */\nfunction requestUi(\n instance: I18nInstance,\n state: InstanceState,\n code: string | undefined,\n): void {\n if (!code || isUiReady(instance, code)) return;\n const first = firstKitLanguage(code, instance);\n if (!first) return;\n // A language change in flight loads its own bundle (see restoreActiveLanguage).\n if (code === instance.language && state.changing > 0) return;\n state.requested.add(first);\n ensureLocale(first, instance).catch((error: unknown) => {\n if (IS_DEV) console.warn('[i18n] Could not load the UI locale.', error);\n });\n}\n\nconst usesUi = (ns: string | readonly string[]): boolean =>\n typeof ns === 'string' ? ns === 'ui' : ns.includes('ui');\n\n/**\n * True when `code` needs no kit bundle, or its load has settled: the bundle is\n * in the store, a host registered the kit's own bundle, or the load failed\n * and the store has been left to fall back (see `degrade`). False means kit\n * text for `code` is blank for now.\n */\nfunction isUiReady(instance: I18nInstance, code: string | undefined): boolean {\n if (!code) return true;\n const first = firstKitLanguage(code, instance);\n if (!first) return true;\n const state = attachInstance(instance);\n return bundleTargets(first, instance).every(\n (target) =>\n isBundleCurrent(target, instance, state) ||\n state.failed.has(target) ||\n isHostBundle(target, instance),\n );\n}\n\n/**\n * A `ui` bundle the host registered itself, for example the JSON from\n * `@alfadocs/ui-kit/locales/<lang>`. It counts as ready when it is a whole\n * bundle (it holds the `common` and `errorPage` groups); a partial one, such\n * as a few keys added with registerUiBundle(), does not.\n */\nfunction isHostBundle(target: string, instance: I18nInstance): boolean {\n const resource = instance.getResourceBundle(target, 'ui') as\n | Record<string, unknown>\n | undefined;\n return Boolean(resource?.common && resource.errorPage);\n}\n\n/**\n * Resolve when the active language's bundle is in the store. If nothing is\n * loading it, start the load. A failed load settles every waiter too (see\n * `degrade`): a component renders from what the store holds and never stays\n * blank. The host still sees the rejection from its own awaited call, and a\n * retry that succeeds redraws the components.\n */\nfunction whenUiReady(\n instance: I18nInstance,\n state: InstanceState,\n): Promise<void> {\n if (instance.isInitialized && isUiReady(instance, instance.language))\n return Promise.resolve();\n return new Promise((resolve) => {\n const waiter = () => {\n if (instance.isInitialized && isUiReady(instance, instance.language)) {\n state.waiters.delete(waiter);\n resolve();\n }\n };\n state.waiters.add(waiter);\n if (instance.isInitialized && state.changing === 0) {\n restoreActiveLanguage(instance).catch((error: unknown) => {\n if (IS_DEV) console.warn('[i18n] Could not load the UI locale.', error);\n });\n }\n });\n}\n\nfunction settleWaiters(state: InstanceState): void {\n for (const waiter of [...state.waiters]) waiter();\n}\n\n/** Delegate fallback and supported-language rules to i18next itself. */\nfunction resolutionChain(code: string, instance: I18nInstance): string[] {\n const languageUtils = instance.services.languageUtils as {\n toResolveHierarchy: (language: string) => string[];\n };\n return languageUtils.toResolveHierarchy(code);\n}\n\n/**\n * Load the first kit-covered language in the resolution chain. Every kit\n * bundle is complete (check:i18n-parity), so a later fallback such as English\n * can never supply a missing `ui` key and is not downloaded. English loads\n * only when it is the active language, or when nothing before it in the chain\n * has a kit bundle (for example Korean falling back to English).\n */\nasync function loadResolutionChain(\n code: string,\n instance: I18nInstance,\n): Promise<boolean> {\n const first = firstKitLanguage(code, instance);\n return first ? ensureLocale(first, instance) : false;\n}\n\nfunction firstKitLanguage(\n code: string,\n instance: I18nInstance,\n): string | undefined {\n return [...new Set([code, ...resolutionChain(code, instance)])]\n .filter(Boolean)\n .find((language) => resolveUiLanguage(language));\n}\n\n/**\n * The language tags a kit bundle is registered under. currentOnly and\n * region-only supportedLngs can exclude the base language, so the requested\n * tag is registered too in that case, without changing host policy.\n */\nfunction bundleTargets(code: string, instance: I18nInstance): string[] {\n const language = resolveUiLanguage(code) as string;\n return code !== language &&\n !resolutionChain(code, instance).includes(language)\n ? [language, code]\n : [language];\n}\n\nfunction isBundleCurrent(\n target: string,\n instance: I18nInstance,\n state: InstanceState,\n): boolean {\n const resource = instance.getResourceBundle(target, 'ui');\n return Boolean(resource) && state.completed.get(target) === resource;\n}\n\n/**\n * Load the active language's bundle. `ensureLocale` tells mounted components\n * when it arrives (react-i18next redraws on `languageChanged`, not on\n * resources being added).\n */\nasync function restoreActiveLanguage(instance: I18nInstance): Promise<void> {\n // A language change in flight loads its own bundle. Loading the language\n // that is about to be left would fetch a bundle nobody needs (English, on\n // a host that starts in English and then switches to Italian).\n if (attachInstance(instance).changing > 0) return;\n await loadResolutionChain(instance.language, instance);\n}\n\n/**\n * Merge a complete kit bundle, keeping host overrides. Regional tags share\n * their base translation bundle; the instance language remains untouched.\n * Lazy-import failures reject and can be retried.\n */\nexport async function loadLocale(\n code: string,\n instance: I18nInstance = i18next,\n): Promise<void> {\n await ensureLocale(code, instance);\n}\n\n/** Resolves true when this call loaded a bundle, false when it was a no-op. */\nasync function ensureLocale(\n code: string,\n instance: I18nInstance,\n): Promise<boolean> {\n if (!instance.isInitialized) {\n throw new Error(\n 'Initialise the host i18next instance before loading UI locales.',\n );\n }\n const language = resolveUiLanguage(code);\n if (!language) return false;\n const state = attachInstance(instance);\n const targets = bundleTargets(code, instance);\n if (targets.every((target) => isBundleCurrent(target, instance, state)))\n return false;\n const requestKey = targets.join(':');\n const pending = state.pending.get(requestKey);\n if (pending) return pending.then(() => false);\n const request = (async () => {\n try {\n const bundle = await LOADERS[language]();\n instance.addResourceBundle(language, 'ui', bundle, true, false);\n for (const target of targets) {\n if (target !== language)\n instance.addResourceBundle(\n target,\n 'ui',\n instance.getResourceBundle(language, 'ui'),\n true,\n false,\n );\n state.completed.set(target, instance.getResourceBundle(target, 'ui'));\n }\n } catch (error) {\n await degrade(language, targets, instance, state);\n throw error;\n }\n // Redraw the components that were blank, or showing a fallback, for it.\n const retried = targets.some((target) => state.failed.delete(target));\n const wasAsked = state.requested.delete(language);\n settleWaiters(state);\n if (\n retried ||\n wasAsked ||\n firstKitLanguage(instance.language, instance) === language\n )\n instance.emit('languageChanged', instance.language);\n })();\n state.pending.set(requestKey, request);\n try {\n await request;\n } finally {\n state.pending.delete(requestKey);\n }\n return true;\n}\n\n/**\n * A kit bundle failed to load (offline, a flaky CDN, a stale chunk hash).\n * Settle the waiters so no text stays blank, and leave the store\n * able to answer, in this order:\n *\n * 1. English, tried once, because it is the usual `fallbackLng`. Skipped when\n * English is the one that failed.\n * 2. Any kit language whose bundle is in the store, added to the end of the\n * instance's `fallbackLng` chain, so the text is readable though not in the\n * visitor's language.\n * 3. The kit's built-in minimum, when nothing is loaded at all: a missing\n * `ui` key reads as its last segment, written as words (\"common.saveAll\"\n * shows \"Save all\"), never as the raw key. The host's own\n * `parseMissingKeyHandler`, if it set one, is left alone.\n */\nasync function degrade(\n language: string,\n targets: string[],\n instance: I18nInstance,\n state: InstanceState,\n): Promise<void> {\n // A language nobody is showing or waiting for needs no fallback: the page\n // keeps what it has, and an Italian page never fetches English.\n const wanted =\n state.waiters.size > 0 ||\n state.requested.has(language) ||\n firstKitLanguage(instance.language, instance) === language;\n state.requested.delete(language);\n if (!wanted) {\n for (const target of targets) state.failed.add(target);\n return;\n }\n try {\n if (language !== 'en' && !usableLanguages(instance, state).includes('en'))\n await ensureLocale('en', instance).catch(() => false);\n const usable = usableLanguages(instance, state);\n if (usable.length > 0) addFallbackLanguage(instance, usable[0]);\n else installBuiltInMinimum(instance);\n } finally {\n // Only now is the failure \"settled\": until the fallback is in place the\n // components stay held back, so none draws a raw key in between.\n for (const target of targets) state.failed.add(target);\n settleWaiters(state);\n if (instance.isInitialized)\n instance.emit('languageChanged', instance.language);\n }\n}\n\n/** Kit languages with a bundle in the store, loaded or host-registered. */\nfunction usableLanguages(\n instance: I18nInstance,\n state: InstanceState,\n): string[] {\n return Object.keys(LOADERS).filter(\n (code) =>\n isBundleCurrent(code, instance, state) || isHostBundle(code, instance),\n );\n}\n\nfunction addFallbackLanguage(instance: I18nInstance, code: string): void {\n const current = instance.options.fallbackLng as unknown;\n const list = (value: unknown): string[] =>\n typeof value === 'string' ? [value] : Array.isArray(value) ? value : [];\n if (typeof current === 'function' || current === false) return;\n if (current && typeof current === 'object' && !Array.isArray(current)) {\n const map = current as Record<string, string[]>;\n if (!list(map.default).includes(code))\n map.default = [...list(map.default), code];\n return;\n }\n if (!list(current).includes(code))\n instance.options.fallbackLng = [...list(current), code];\n}\n\nfunction installBuiltInMinimum(instance: I18nInstance): void {\n if (instance.options.parseMissingKeyHandler) return;\n instance.options.parseMissingKeyHandler = (\n key: string,\n defaultValue?: string,\n options?: { ns?: string | readonly string[] },\n ): string => {\n if (defaultValue !== undefined) return defaultValue;\n if (!options?.ns || !usesUi(options.ns)) return key;\n const last = key.split(/[.:]/).at(-1) ?? key;\n const words = last\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replaceAll('_', ' ')\n .toLowerCase();\n return words.charAt(0).toUpperCase() + words.slice(1);\n };\n}\n\n/**\n * Await after host init(), before rendering. Also supports createInstance()\n * hosts: pass this same instance to I18nextProvider. Never reinitialises a host.\n */\nexport async function initialiseUiI18n(\n instance: I18nInstance = i18next,\n): Promise<void> {\n if (!instance.isInitialized) {\n throw new Error(\n 'Initialise the host i18next instance before setting up UI translations.',\n );\n }\n attachInstance(instance);\n await loadResolutionChain(instance.language, instance);\n}\n\n/** Load the requested bundle before changing language. */\nexport async function setLocale(\n code: string,\n instance: I18nInstance = i18next,\n): Promise<void> {\n attachInstance(instance);\n await instance.changeLanguage(code);\n}\n\n/** Load all 18 bundles on a singleton or provider instance. */\nexport async function loadAllLocales(\n instance: I18nInstance = i18next,\n): Promise<void> {\n await Promise.all(\n Object.keys(LOADERS).map((code) => loadLocale(code, instance)),\n );\n}\n\n// Bootstrap only a genuinely uninitialised singleton. A library must preserve\n// a consumer's default namespace, language, fallbacks and application resources.\nif (!i18next.isInitialized) {\n void i18next.use(initReactI18next).init({\n lng: 'en',\n fallbackLng: 'en',\n ns: ['ui'],\n defaultNS: 'ui',\n partialBundledLanguages: true,\n debug: IS_DEV,\n saveMissing: IS_DEV,\n missingKeyHandler: IS_DEV\n ? (lngs, ns, key) => {\n console.warn(\n `[i18n] Missing key \"${key}\" in namespace \"${ns}\" for locales [${lngs.join(', ')}].`,\n );\n }\n : undefined,\n interpolation: { escapeValue: false },\n // English arrives through the lazy loader below, like every other locale.\n resources: {},\n });\n}\nattachInstance(i18next);\n// One microtask later, so a host that calls setLocale() in the same script\n// (before it renders) has its language change in flight, and the default\n// English is not fetched for an Italian page.\nvoid Promise.resolve()\n .then(() =>\n i18next.isInitialized ? restoreActiveLanguage(i18next) : undefined,\n )\n .catch((error: unknown) => {\n if (IS_DEV)\n console.warn('[i18n] Could not load the initial UI locale.', error);\n });\n\nexport default i18next;\nexport { LOCALES_WITH_BUNDLES } from './supported-locales';\nexport { registerUiBundle } from './registerUiBundle';\n"],"names":["LOCALES_WITH_BUNDLES","registerUiBundle","locale","bundle","instance","i18next","IS_DEV","LOADERS","m","instances","resolveUiLanguage","code","base","attachInstance","existing","state","installReadiness","originalChangeLanguage","lng","callback","request","languageUtils","regionalResources","hostOwnsRegion","resolutionChain","namespace","selected","translate","loadResolutionChain","error","restoreActiveLanguage","settleWaiters","hasLoadedNamespace","ns","options","answer","usesUi","requestUi","args","result","blankWhilePending","loadNamespaces","whenUiReady","loadLanguages","lngs","wanted","firstKitLanguage","ui","ensureLocale","arg","key","isUiReady","first","bundleTargets","target","isBundleCurrent","isHostBundle","resource","resolve","waiter","language","loadLocale","targets","requestKey","pending","degrade","retried","wasAsked","usableLanguages","usable","addFallbackLanguage","current","list","value","map","installBuiltInMinimum","defaultValue","words","initialiseUiI18n","setLocale","loadAllLocales","initReactI18next"],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sources":["../../src/i18n/supported-locales.ts","../../src/i18n/registerUiBundle.ts","../../src/i18n/config.ts"],"sourcesContent":["/**\n * Locales that ship a JSON bundle. Consumer apps register these via\n * `i18n.addResourceBundle(locale, 'ui', bundle)` — see docs/06-i18n.mdx.\n * Locales not listed here fall back to English through i18next's own\n * `fallbackLng` resolution.\n */\nexport const LOCALES_WITH_BUNDLES = [\n 'en',\n 'it',\n 'de',\n 'ar',\n 'fr',\n 'es',\n 'pt',\n 'nl',\n 'ro',\n 'sq',\n 'tr',\n 'pl',\n 'sv',\n 'ru',\n 'el',\n 'ja',\n 'zh',\n 'hi',\n] as const;\n","import i18next, { type i18n as I18nInstance } from 'i18next';\n\n/**\n * Register or extend the `ui` namespace bundle for a locale.\n *\n * Adds missing keys to the installed i18next singleton without overwriting\n * existing translations. All 18 kit locales ship already. Load a bundled\n * locale at any time: loading fills missing keys and preserves existing values.\n * Keep app copy in the host namespace. Request upstream language review for\n * corrections to existing kit strings; this helper does not overwrite them.\n */\nexport function registerUiBundle(\n locale: string,\n bundle: Record<string, unknown>,\n instance: I18nInstance = i18next,\n): void {\n instance.addResourceBundle(\n locale,\n 'ui',\n bundle,\n /* deep */ true,\n /* overwrite */ false,\n );\n}\n","import i18next, { type i18n as I18nInstance } from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\nconst IS_DEV = import.meta.env?.DEV === true;\n\n// English is a lazy chunk like every other locale: nothing in this module\n// graph imports `./locales/en.ts` statically, so a consumer that runs in\n// Italian never downloads it (HTP-7057).\nconst LOADERS: Record<string, () => Promise<Record<string, unknown>>> = {\n en: () => import('./locales/en.ts').then((m) => m.enUi),\n it: () => import('./locales/it.ts').then((m) => m.itUi),\n de: () => import('./locales/de.ts').then((m) => m.deUi),\n ar: () => import('./locales/ar.ts').then((m) => m.arUi),\n fr: () => import('./locales/fr.ts').then((m) => m.frUi),\n es: () => import('./locales/es.ts').then((m) => m.esUi),\n pt: () => import('./locales/pt.ts').then((m) => m.ptUi),\n nl: () => import('./locales/nl.ts').then((m) => m.nlUi),\n ro: () => import('./locales/ro.ts').then((m) => m.roUi),\n sq: () => import('./locales/sq.ts').then((m) => m.sqUi),\n tr: () => import('./locales/tr.ts').then((m) => m.trUi),\n pl: () => import('./locales/pl.ts').then((m) => m.plUi),\n sv: () => import('./locales/sv.ts').then((m) => m.svUi),\n ru: () => import('./locales/ru.ts').then((m) => m.ruUi),\n el: () => import('./locales/el.ts').then((m) => m.elUi),\n ja: () => import('./locales/ja.ts').then((m) => m.jaUi),\n zh: () => import('./locales/zh.ts').then((m) => m.zhUi),\n hi: () => import('./locales/hi.ts').then((m) => m.hiUi),\n};\n\n// Completion belongs to a resource bundle, not just a language code. A host\n// can register a partial bundle or replace its store with a later init().\ninterface InstanceState {\n languageRequest: number;\n /** changeLanguage() calls whose bundle is still on its way. */\n changing: number;\n completed: Map<string, unknown>;\n /** Kit languages whose last load failed and has not been retried to success. */\n failed: Set<string>;\n pending: Map<string, Promise<void>>;\n /** Callers waiting for the active language's bundle to be in the store. */\n waiters: Set<() => void>;\n /** Kit languages a reader asked for, so their arrival redraws them. */\n requested: Set<string>;\n}\nconst instances = new WeakMap<I18nInstance, InstanceState>();\n/** Instances the kit itself initialised with its default `lng: 'en'`. */\nconst kitBootstrapped = new WeakSet<I18nInstance>();\n\n/** Resolve a translation language without changing the host's formatting tag. */\nexport function resolveUiLanguage(code: string): string | undefined {\n if (!code) return undefined;\n const base = code.toLowerCase().replaceAll('_', '-').split('-')[0];\n return Object.hasOwn(LOADERS, base) ? base : undefined;\n}\n\nfunction attachInstance(instance: I18nInstance): InstanceState {\n const existing = instances.get(instance);\n if (existing) return existing;\n const state: InstanceState = {\n languageRequest: 0,\n changing: 0,\n completed: new Map(),\n failed: new Set(),\n pending: new Map(),\n waiters: new Set(),\n requested: new Set(),\n };\n instances.set(instance, state);\n installReadiness(instance, state);\n const originalChangeLanguage = instance.changeLanguage.bind(instance);\n instance.changeLanguage = (lng, callback) => {\n const request = ++state.languageRequest;\n if (!lng) return originalChangeLanguage(lng, callback);\n // Kit bundles must not trigger i18next's existing-resource shortcut for\n // a language the host explicitly excludes through supportedLngs.\n const languageUtils = instance.services.languageUtils as {\n getBestMatchFromCodes: (codes: string[]) => string | undefined;\n };\n const base = resolveUiLanguage(lng);\n const regionalResources = instance.getDataByLanguage(lng);\n const hostOwnsRegion =\n base &&\n base !== lng &&\n resolutionChain(lng, instance).includes(base) &&\n regionalResources &&\n Object.keys(regionalResources).some(\n (namespace) =>\n namespace !== 'ui' ||\n state.completed.get(lng) !== instance.getResourceBundle(lng, 'ui'),\n );\n const selected =\n instance.options.supportedLngs && !hostOwnsRegion\n ? languageUtils.getBestMatchFromCodes([lng])\n : lng;\n if (!selected) {\n const translate = instance.t.bind(instance);\n callback?.(null, translate);\n return Promise.resolve(translate);\n }\n state.changing++;\n return loadResolutionChain(selected, instance)\n .then(\n () => {\n // A cold import must not overtake a newer, already loaded selection.\n if (request !== state.languageRequest) {\n const translate = instance.t.bind(instance);\n callback?.(null, translate);\n return translate;\n }\n return originalChangeLanguage(selected, callback);\n },\n (error: unknown) => {\n callback?.(error, instance.t.bind(instance));\n throw error;\n },\n )\n .finally(() => {\n state.changing--;\n });\n };\n instance.on('initialized', () => {\n // i18next events cannot be awaited. Hosts await initialiseUiI18n() before\n // rendering; this opportunistic load also restores ordinary re-init usage.\n void restoreActiveLanguage(instance).catch((error: unknown) => {\n if (IS_DEV)\n console.warn('[i18n] Could not restore the UI locale.', error);\n });\n settleWaiters(state);\n });\n instance.on('languageChanged', () => settleWaiters(state));\n return state;\n}\n\n/**\n * Never suspend, and never draw a raw key, while a kit bundle is on the way\n * (HTP-7057).\n *\n * Without a backend, i18next calls every namespace loaded, so react-i18next\n * never suspends for `ui`. That is deliberate: a suspend with no `<Suspense>`\n * above it throws during a synchronous React 18 render (legacy\n * `ReactDOM.render`, `flushSync`, a root or state update in a click handler)\n * and unmounts the root. Instead:\n *\n * - `t()` returns an empty string for the `ui` namespace while the active\n * language's bundle is not in the store (see `blankWhilePending`);\n * - the first reader of a missing bundle starts its load, and the arrival of\n * the bundle emits `languageChanged`, which react-i18next listens to, so\n * mounted components redraw with text.\n *\n * A language switch is not affected: the kit changes language only after the\n * new bundle is in the store, so the old text stays on screen.\n */\nfunction installReadiness(instance: I18nInstance, state: InstanceState): void {\n const hasLoadedNamespace = instance.hasLoadedNamespace.bind(instance);\n instance.hasLoadedNamespace = (ns, options) => {\n const answer = hasLoadedNamespace(ns, options);\n if (usesUi(ns) && instance.isInitialized)\n requestUi(\n instance,\n state,\n typeof options?.lng === 'string' ? options.lng : instance.language,\n );\n return answer;\n };\n const translate = instance.t.bind(instance) as unknown as (\n ...args: unknown[]\n ) => unknown;\n instance.t = ((...args: unknown[]) => {\n const result = translate(...args);\n return typeof result === 'string' &&\n blankWhilePending(instance, state, args)\n ? ''\n : result;\n }) as unknown as typeof instance.t;\n const loadNamespaces = instance.loadNamespaces.bind(instance);\n instance.loadNamespaces = (ns, callback) =>\n usesUi(ns)\n ? whenUiReady(instance, state).then(() => loadNamespaces(ns, callback))\n : loadNamespaces(ns, callback);\n // react-i18next asks for `useTranslation('ui', { lng })` through\n // loadLanguages(). Load that language's kit bundle first. A failed load\n // settles too: the request never rejects.\n const loadLanguages = instance.loadLanguages.bind(instance);\n instance.loadLanguages = (lngs, callback) => {\n const wanted = (Array.isArray(lngs) ? lngs : [lngs])\n .map((code) => firstKitLanguage(code, instance))\n .filter((code): code is string => Boolean(code));\n const ui = ([] as string[]).concat(instance.options.ns ?? []);\n if (!instance.isInitialized || wanted.length === 0 || !ui.includes('ui'))\n return loadLanguages(lngs, callback);\n return Promise.all(\n wanted.map((code) => ensureLocale(code, instance).catch(() => false)),\n ).then(() => loadLanguages(lngs, callback));\n };\n}\n\n/**\n * True when this `t()` call reads the `ui` namespace of a language whose kit\n * bundle has not landed. The one place that decides \"blank\".\n */\nfunction blankWhilePending(\n instance: I18nInstance,\n state: InstanceState,\n args: unknown[],\n): boolean {\n if (!instance.isInitialized) return false;\n const options = [args[1], args[2]].find(\n (arg): arg is { ns?: unknown; lng?: unknown } =>\n typeof arg === 'object' && arg !== null,\n );\n const key = Array.isArray(args[0]) ? args[0][0] : args[0];\n const prefix =\n typeof key === 'string' && key.includes(':') ? key.split(':')[0] : '';\n const ns = prefix || options?.ns || instance.options.defaultNS;\n if (!ns || !usesUi(ns as string | readonly string[])) return false;\n const lng =\n typeof options?.lng === 'string' ? options.lng : instance.language;\n if (isUiReady(instance, lng)) return false;\n // Whoever reads text first starts the load.\n requestUi(instance, state, lng);\n return true;\n}\n\n/**\n * Start loading the bundle a reader is waiting for, if nothing is. Safe to\n * call from render: loads are shared, and a failed one counts as settled.\n */\nfunction requestUi(\n instance: I18nInstance,\n state: InstanceState,\n code: string | undefined,\n): void {\n if (!code || isUiReady(instance, code)) return;\n const first = firstKitLanguage(code, instance);\n if (!first) return;\n // A language change in flight loads its own bundle (see restoreActiveLanguage).\n if (code === instance.language && state.changing > 0) return;\n state.requested.add(first);\n ensureLocale(first, instance).catch((error: unknown) => {\n if (IS_DEV) console.warn('[i18n] Could not load the UI locale.', error);\n });\n}\n\nconst usesUi = (ns: string | readonly string[]): boolean =>\n typeof ns === 'string' ? ns === 'ui' : ns.includes('ui');\n\n/**\n * True when `code` needs no kit bundle, or its load has settled: the bundle is\n * in the store, a host registered the kit's own bundle, or the load failed\n * and the store has been left to fall back (see `degrade`). False means kit\n * text for `code` is blank for now.\n */\nfunction isUiReady(instance: I18nInstance, code: string | undefined): boolean {\n if (!code) return true;\n const first = firstKitLanguage(code, instance);\n if (!first) return true;\n const state = attachInstance(instance);\n return bundleTargets(first, instance).every(\n (target) =>\n isBundleCurrent(target, instance, state) ||\n state.failed.has(target) ||\n isHostBundle(target, instance),\n );\n}\n\n/**\n * A `ui` bundle the host registered itself, for example the JSON from\n * `@alfadocs/ui-kit/locales/<lang>`. It counts as ready when it is a whole\n * bundle (it holds the `common` and `errorPage` groups); a partial one, such\n * as a few keys added with registerUiBundle(), does not.\n */\nfunction isHostBundle(target: string, instance: I18nInstance): boolean {\n const resource = instance.getResourceBundle(target, 'ui') as\n | Record<string, unknown>\n | undefined;\n return Boolean(resource?.common && resource.errorPage);\n}\n\n/**\n * Resolve when the active language's bundle is in the store. If nothing is\n * loading it, start the load. A failed load settles every waiter too (see\n * `degrade`): a component renders from what the store holds and never stays\n * blank. The host still sees the rejection from its own awaited call, and a\n * retry that succeeds redraws the components.\n */\nfunction whenUiReady(\n instance: I18nInstance,\n state: InstanceState,\n): Promise<void> {\n if (instance.isInitialized && isUiReady(instance, instance.language))\n return Promise.resolve();\n return new Promise((resolve) => {\n const waiter = () => {\n if (instance.isInitialized && isUiReady(instance, instance.language)) {\n state.waiters.delete(waiter);\n resolve();\n }\n };\n state.waiters.add(waiter);\n if (instance.isInitialized && state.changing === 0) {\n restoreActiveLanguage(instance).catch((error: unknown) => {\n if (IS_DEV) console.warn('[i18n] Could not load the UI locale.', error);\n });\n }\n });\n}\n\nfunction settleWaiters(state: InstanceState): void {\n for (const waiter of [...state.waiters]) waiter();\n}\n\n/** Delegate fallback and supported-language rules to i18next itself. */\nfunction resolutionChain(code: string, instance: I18nInstance): string[] {\n const languageUtils = instance.services.languageUtils as {\n toResolveHierarchy: (language: string) => string[];\n };\n return languageUtils.toResolveHierarchy(code);\n}\n\n/**\n * Load the first kit-covered language in the resolution chain. Every kit\n * bundle is complete (check:i18n-parity), so a later fallback such as English\n * can never supply a missing `ui` key and is not downloaded. English loads\n * only when it is the active language, or when nothing before it in the chain\n * has a kit bundle (for example Korean falling back to English).\n */\nasync function loadResolutionChain(\n code: string,\n instance: I18nInstance,\n): Promise<boolean> {\n const first = firstKitLanguage(code, instance);\n return first ? ensureLocale(first, instance) : false;\n}\n\nfunction firstKitLanguage(\n code: string,\n instance: I18nInstance,\n): string | undefined {\n return [...new Set([code, ...resolutionChain(code, instance)])]\n .filter(Boolean)\n .find((language) => resolveUiLanguage(language));\n}\n\n/**\n * The language tags a kit bundle is registered under. currentOnly and\n * region-only supportedLngs can exclude the base language, so the requested\n * tag is registered too in that case, without changing host policy.\n */\nfunction bundleTargets(code: string, instance: I18nInstance): string[] {\n const language = resolveUiLanguage(code) as string;\n return code !== language &&\n !resolutionChain(code, instance).includes(language)\n ? [language, code]\n : [language];\n}\n\nfunction isBundleCurrent(\n target: string,\n instance: I18nInstance,\n state: InstanceState,\n): boolean {\n const resource = instance.getResourceBundle(target, 'ui');\n return Boolean(resource) && state.completed.get(target) === resource;\n}\n\n/**\n * Load the active language's bundle. `ensureLocale` tells mounted components\n * when it arrives (react-i18next redraws on `languageChanged`, not on\n * resources being added).\n */\nasync function restoreActiveLanguage(instance: I18nInstance): Promise<void> {\n // A language change in flight loads its own bundle. Loading the language\n // that is about to be left would fetch a bundle nobody needs (English, on\n // a host that starts in English and then switches to Italian).\n if (attachInstance(instance).changing > 0) return;\n await loadResolutionChain(instance.language, instance);\n}\n\n/**\n * Merge a complete kit bundle, keeping host overrides. Regional tags share\n * their base translation bundle; the instance language remains untouched.\n * Lazy-import failures reject and can be retried.\n */\nexport async function loadLocale(\n code: string,\n instance: I18nInstance = i18next,\n): Promise<void> {\n await ensureLocale(code, instance);\n}\n\n/** Resolves true when this call loaded a bundle, false when it was a no-op. */\nasync function ensureLocale(\n code: string,\n instance: I18nInstance,\n): Promise<boolean> {\n if (!instance.isInitialized) {\n throw new Error(\n 'Initialise the host i18next instance before loading UI locales.',\n );\n }\n const language = resolveUiLanguage(code);\n if (!language) return false;\n const state = attachInstance(instance);\n const targets = bundleTargets(code, instance);\n if (targets.every((target) => isBundleCurrent(target, instance, state)))\n return false;\n const requestKey = targets.join(':');\n const pending = state.pending.get(requestKey);\n if (pending) return pending.then(() => false);\n const request = (async () => {\n try {\n const bundle = await LOADERS[language]();\n instance.addResourceBundle(language, 'ui', bundle, true, false);\n for (const target of targets) {\n if (target !== language)\n instance.addResourceBundle(\n target,\n 'ui',\n instance.getResourceBundle(language, 'ui'),\n true,\n false,\n );\n state.completed.set(target, instance.getResourceBundle(target, 'ui'));\n }\n } catch (error) {\n await degrade(language, targets, instance, state);\n throw error;\n }\n // Redraw the components that were blank, or showing a fallback, for it.\n const retried = targets.some((target) => state.failed.delete(target));\n const wasAsked = state.requested.delete(language);\n settleWaiters(state);\n if (\n retried ||\n wasAsked ||\n firstKitLanguage(instance.language, instance) === language\n )\n instance.emit('languageChanged', instance.language);\n })();\n state.pending.set(requestKey, request);\n try {\n await request;\n } finally {\n state.pending.delete(requestKey);\n }\n return true;\n}\n\n/**\n * A kit bundle failed to load (offline, a flaky CDN, a stale chunk hash).\n * Settle the waiters so no text stays blank, and leave the store\n * able to answer, in this order:\n *\n * 1. English, tried once, because it is the usual `fallbackLng`. Skipped when\n * English is the one that failed.\n * 2. Any kit language whose bundle is in the store, added to the end of the\n * instance's `fallbackLng` chain, so the text is readable though not in the\n * visitor's language.\n * 3. The kit's built-in minimum, when nothing is loaded at all: a missing\n * `ui` key reads as its last segment, written as words (\"common.saveAll\"\n * shows \"Save all\"), never as the raw key. The host's own\n * `parseMissingKeyHandler`, if it set one, is left alone.\n */\nasync function degrade(\n language: string,\n targets: string[],\n instance: I18nInstance,\n state: InstanceState,\n): Promise<void> {\n // A language nobody is showing or waiting for needs no fallback: the page\n // keeps what it has, and an Italian page never fetches English.\n const wanted =\n state.waiters.size > 0 ||\n state.requested.has(language) ||\n firstKitLanguage(instance.language, instance) === language;\n state.requested.delete(language);\n if (!wanted) {\n for (const target of targets) state.failed.add(target);\n return;\n }\n try {\n if (language !== 'en' && !usableLanguages(instance, state).includes('en'))\n await ensureLocale('en', instance).catch(() => false);\n const usable = usableLanguages(instance, state);\n if (usable.length > 0) addFallbackLanguage(instance, usable[0]);\n else installBuiltInMinimum(instance);\n } finally {\n // Only now is the failure \"settled\": until the fallback is in place the\n // components stay held back, so none draws a raw key in between.\n for (const target of targets) state.failed.add(target);\n settleWaiters(state);\n if (instance.isInitialized)\n instance.emit('languageChanged', instance.language);\n }\n}\n\n/** Kit languages with a bundle in the store, loaded or host-registered. */\nfunction usableLanguages(\n instance: I18nInstance,\n state: InstanceState,\n): string[] {\n return Object.keys(LOADERS).filter(\n (code) =>\n isBundleCurrent(code, instance, state) || isHostBundle(code, instance),\n );\n}\n\nfunction addFallbackLanguage(instance: I18nInstance, code: string): void {\n const current = instance.options.fallbackLng as unknown;\n const list = (value: unknown): string[] =>\n typeof value === 'string' ? [value] : Array.isArray(value) ? value : [];\n if (typeof current === 'function' || current === false) return;\n if (current && typeof current === 'object' && !Array.isArray(current)) {\n const map = current as Record<string, string[]>;\n if (!list(map.default).includes(code))\n map.default = [...list(map.default), code];\n return;\n }\n if (!list(current).includes(code))\n instance.options.fallbackLng = [...list(current), code];\n}\n\nfunction installBuiltInMinimum(instance: I18nInstance): void {\n if (instance.options.parseMissingKeyHandler) return;\n instance.options.parseMissingKeyHandler = (\n key: string,\n defaultValue?: string,\n options?: { ns?: string | readonly string[] },\n ): string => {\n if (defaultValue !== undefined) return defaultValue;\n if (!options?.ns || !usesUi(options.ns)) return key;\n const last = key.split(/[.:]/).at(-1) ?? key;\n const words = last\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replaceAll('_', ' ')\n .toLowerCase();\n return words.charAt(0).toUpperCase() + words.slice(1);\n };\n}\n\n/**\n * Await after host init(), before rendering. Also supports createInstance()\n * hosts: pass this same instance to I18nextProvider. Never reinitialises a host.\n */\nexport async function initialiseUiI18n(\n instance: I18nInstance = i18next,\n): Promise<void> {\n if (!instance.isInitialized) {\n throw new Error(\n 'Initialise the host i18next instance before setting up UI translations.',\n );\n }\n attachInstance(instance);\n await loadResolutionChain(instance.language, instance);\n}\n\n/** Load the requested bundle before changing language. */\nexport async function setLocale(\n code: string,\n instance: I18nInstance = i18next,\n): Promise<void> {\n attachInstance(instance);\n await instance.changeLanguage(code);\n}\n\n/** Load all 18 bundles on a singleton or provider instance. */\nexport async function loadAllLocales(\n instance: I18nInstance = i18next,\n): Promise<void> {\n await Promise.all(\n Object.keys(LOADERS).map((code) => loadLocale(code, instance)),\n );\n}\n\n// Bootstrap only a genuinely uninitialised singleton. A library must preserve\n// a consumer's default namespace, language, fallbacks and application resources.\nif (!i18next.isInitialized) {\n kitBootstrapped.add(i18next);\n void i18next.use(initReactI18next).init({\n lng: 'en',\n fallbackLng: 'en',\n ns: ['ui'],\n defaultNS: 'ui',\n partialBundledLanguages: true,\n debug: IS_DEV,\n saveMissing: IS_DEV,\n missingKeyHandler: IS_DEV\n ? (lngs, ns, key) => {\n console.warn(\n `[i18n] Missing key \"${key}\" in namespace \"${ns}\" for locales [${lngs.join(', ')}].`,\n );\n }\n : undefined,\n interpolation: { escapeValue: false },\n // English arrives through the lazy loader below, like every other locale.\n resources: {},\n });\n}\nattachInstance(i18next);\n// No eager load of the default English: a host that goes on to call\n// changeLanguage('it') must not fetch English first (HTP-7057). An English\n// host gets its text from the first t() / hasLoadedNamespace() read, which\n// starts the load (see requestUi).\n// A host that initialised i18next itself keeps the restore on the next\n// microtask, so its starting language is loaded without being asked.\nif (!kitBootstrapped.has(i18next)) {\n void Promise.resolve()\n .then(() =>\n i18next.isInitialized ? restoreActiveLanguage(i18next) : undefined,\n )\n .catch((error: unknown) => {\n if (IS_DEV)\n console.warn('[i18n] Could not load the initial UI locale.', error);\n });\n}\n\nexport default i18next;\nexport { LOCALES_WITH_BUNDLES } from './supported-locales';\nexport { registerUiBundle } from './registerUiBundle';\n"],"names":["LOCALES_WITH_BUNDLES","registerUiBundle","locale","bundle","instance","i18next","IS_DEV","LOADERS","m","instances","kitBootstrapped","resolveUiLanguage","code","base","attachInstance","existing","state","installReadiness","originalChangeLanguage","lng","callback","request","languageUtils","regionalResources","hostOwnsRegion","resolutionChain","namespace","selected","translate","loadResolutionChain","error","restoreActiveLanguage","settleWaiters","hasLoadedNamespace","ns","options","answer","usesUi","requestUi","args","result","blankWhilePending","loadNamespaces","whenUiReady","loadLanguages","lngs","wanted","firstKitLanguage","ui","ensureLocale","arg","key","isUiReady","first","bundleTargets","target","isBundleCurrent","isHostBundle","resource","resolve","waiter","language","loadLocale","targets","requestKey","pending","degrade","retried","wasAsked","usableLanguages","usable","addFallbackLanguage","current","list","value","map","installBuiltInMinimum","defaultValue","words","initialiseUiI18n","setLocale","loadAllLocales","initReactI18next"],"mappings":"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"}
@@ -2506,6 +2506,7 @@ export declare const arUi: {
2506
2506
  readonly rating: "التقييم";
2507
2507
  readonly nextAvailable: "أقرب موعد متاح";
2508
2508
  readonly relevance: "الأكثر صلة";
2509
+ readonly price: "تكلفة الزيارة الأولى";
2509
2510
  };
2510
2511
  readonly empty: {
2511
2512
  readonly title: "لا توجد نتائج";
@@ -1 +1 @@
1
- {"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/ar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAo8LP,CAAC"}
1
+ {"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/ar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAq8LP,CAAC"}