@generaltranslation/react-core 11.0.0-odysseus.4 → 11.0.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 (441) hide show
  1. package/CHANGELOG.md +301 -0
  2. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  3. package/dist/components/branches/Branch.cjs +2 -0
  4. package/dist/components/branches/Branch.cjs.map +1 -0
  5. package/dist/components/branches/Branch.d.ts +30 -0
  6. package/dist/components/branches/Branch.d.ts.map +1 -0
  7. package/dist/components/branches/Branch.mjs +2 -0
  8. package/dist/components/branches/Branch.mjs.map +1 -0
  9. package/dist/components/branches/Plural.cjs +2 -0
  10. package/dist/components/branches/Plural.cjs.map +1 -0
  11. package/dist/components/branches/Plural.d.ts +19 -0
  12. package/dist/components/branches/Plural.d.ts.map +1 -0
  13. package/dist/components/branches/Plural.mjs +2 -0
  14. package/dist/components/branches/Plural.mjs.map +1 -0
  15. package/dist/components/branches/Plural.rsc.cjs +2 -0
  16. package/dist/components/branches/Plural.rsc.cjs.map +1 -0
  17. package/dist/components/branches/Plural.rsc.d.ts +15 -0
  18. package/dist/components/branches/Plural.rsc.d.ts.map +1 -0
  19. package/dist/components/branches/Plural.rsc.mjs +2 -0
  20. package/dist/components/branches/Plural.rsc.mjs.map +1 -0
  21. package/dist/components/branches/Plural.shared.cjs +2 -0
  22. package/dist/components/branches/Plural.shared.cjs.map +1 -0
  23. package/dist/components/branches/Plural.shared.d.ts +18 -0
  24. package/dist/components/branches/Plural.shared.d.ts.map +1 -0
  25. package/dist/components/branches/Plural.shared.mjs +2 -0
  26. package/dist/components/branches/Plural.shared.mjs.map +1 -0
  27. package/dist/components/derivation/Derive.cjs +2 -0
  28. package/dist/components/derivation/Derive.cjs.map +1 -0
  29. package/dist/components/derivation/Derive.d.ts +19 -0
  30. package/dist/components/derivation/Derive.d.ts.map +1 -0
  31. package/dist/components/derivation/Derive.mjs +2 -0
  32. package/dist/components/derivation/Derive.mjs.map +1 -0
  33. package/dist/components/helpers/InternalLocaleSelector.cjs +2 -0
  34. package/dist/components/helpers/InternalLocaleSelector.cjs.map +1 -0
  35. package/dist/components/helpers/InternalLocaleSelector.d.ts +38 -0
  36. package/dist/components/helpers/InternalLocaleSelector.d.ts.map +1 -0
  37. package/dist/components/helpers/InternalLocaleSelector.mjs +2 -0
  38. package/dist/components/helpers/InternalLocaleSelector.mjs.map +1 -0
  39. package/dist/components/helpers/InternalRegionSelector.cjs +2 -0
  40. package/dist/components/helpers/InternalRegionSelector.cjs.map +1 -0
  41. package/dist/components/helpers/InternalRegionSelector.d.ts +33 -0
  42. package/dist/components/helpers/InternalRegionSelector.d.ts.map +1 -0
  43. package/dist/components/helpers/InternalRegionSelector.mjs +2 -0
  44. package/dist/components/helpers/InternalRegionSelector.mjs.map +1 -0
  45. package/dist/components/translation/T.cjs +2 -0
  46. package/dist/components/translation/T.cjs.map +1 -0
  47. package/dist/components/translation/T.d.ts +18 -0
  48. package/dist/components/translation/T.d.ts.map +1 -0
  49. package/dist/components/translation/T.mjs +2 -0
  50. package/dist/components/translation/T.mjs.map +1 -0
  51. package/dist/components/translation/T.rsc.cjs +2 -0
  52. package/dist/components/translation/T.rsc.cjs.map +1 -0
  53. package/dist/components/translation/T.rsc.d.ts +17 -0
  54. package/dist/components/translation/T.rsc.d.ts.map +1 -0
  55. package/dist/components/translation/T.rsc.mjs +2 -0
  56. package/dist/components/translation/T.rsc.mjs.map +1 -0
  57. package/dist/components/translation/Tx.rsc.cjs +2 -0
  58. package/dist/components/translation/Tx.rsc.cjs.map +1 -0
  59. package/dist/components/translation/Tx.rsc.d.ts +17 -0
  60. package/dist/components/translation/Tx.rsc.d.ts.map +1 -0
  61. package/dist/components/translation/Tx.rsc.mjs +2 -0
  62. package/dist/components/translation/Tx.rsc.mjs.map +1 -0
  63. package/dist/components/variables/Currency.cjs +2 -0
  64. package/dist/components/variables/Currency.cjs.map +1 -0
  65. package/dist/components/variables/Currency.d.ts +18 -0
  66. package/dist/components/variables/Currency.d.ts.map +1 -0
  67. package/dist/components/variables/Currency.mjs +2 -0
  68. package/dist/components/variables/Currency.mjs.map +1 -0
  69. package/dist/components/variables/Currency.rsc.cjs +2 -0
  70. package/dist/components/variables/Currency.rsc.cjs.map +1 -0
  71. package/dist/components/variables/Currency.rsc.d.ts +14 -0
  72. package/dist/components/variables/Currency.rsc.d.ts.map +1 -0
  73. package/dist/components/variables/Currency.rsc.mjs +2 -0
  74. package/dist/components/variables/Currency.rsc.mjs.map +1 -0
  75. package/dist/components/variables/Currency.shared.cjs +2 -0
  76. package/dist/components/variables/Currency.shared.cjs.map +1 -0
  77. package/dist/components/variables/Currency.shared.d.ts +17 -0
  78. package/dist/components/variables/Currency.shared.d.ts.map +1 -0
  79. package/dist/components/variables/Currency.shared.mjs +2 -0
  80. package/dist/components/variables/Currency.shared.mjs.map +1 -0
  81. package/dist/components/variables/DateTime.cjs +2 -0
  82. package/dist/components/variables/DateTime.cjs.map +1 -0
  83. package/dist/components/variables/DateTime.d.ts +18 -0
  84. package/dist/components/variables/DateTime.d.ts.map +1 -0
  85. package/dist/components/variables/DateTime.mjs +2 -0
  86. package/dist/components/variables/DateTime.mjs.map +1 -0
  87. package/dist/components/variables/DateTime.rsc.cjs +2 -0
  88. package/dist/components/variables/DateTime.rsc.cjs.map +1 -0
  89. package/dist/components/variables/DateTime.rsc.d.ts +14 -0
  90. package/dist/components/variables/DateTime.rsc.d.ts.map +1 -0
  91. package/dist/components/variables/DateTime.rsc.mjs +2 -0
  92. package/dist/components/variables/DateTime.rsc.mjs.map +1 -0
  93. package/dist/components/variables/DateTime.shared.cjs +2 -0
  94. package/dist/components/variables/DateTime.shared.cjs.map +1 -0
  95. package/dist/components/variables/DateTime.shared.d.ts +16 -0
  96. package/dist/components/variables/DateTime.shared.d.ts.map +1 -0
  97. package/dist/components/variables/DateTime.shared.mjs +2 -0
  98. package/dist/components/variables/DateTime.shared.mjs.map +1 -0
  99. package/dist/components/variables/Num.cjs +2 -0
  100. package/dist/components/variables/Num.cjs.map +1 -0
  101. package/dist/components/variables/Num.d.ts +18 -0
  102. package/dist/components/variables/Num.d.ts.map +1 -0
  103. package/dist/components/variables/Num.mjs +2 -0
  104. package/dist/components/variables/Num.mjs.map +1 -0
  105. package/dist/components/variables/Num.rsc.cjs +2 -0
  106. package/dist/components/variables/Num.rsc.cjs.map +1 -0
  107. package/dist/components/variables/Num.rsc.d.ts +14 -0
  108. package/dist/components/variables/Num.rsc.d.ts.map +1 -0
  109. package/dist/components/variables/Num.rsc.mjs +2 -0
  110. package/dist/components/variables/Num.rsc.mjs.map +1 -0
  111. package/dist/components/variables/Num.shared.cjs +2 -0
  112. package/dist/components/variables/Num.shared.cjs.map +1 -0
  113. package/dist/components/variables/Num.shared.d.ts +16 -0
  114. package/dist/components/variables/Num.shared.d.ts.map +1 -0
  115. package/dist/components/variables/Num.shared.mjs +2 -0
  116. package/dist/components/variables/Num.shared.mjs.map +1 -0
  117. package/dist/components/variables/RelativeTime.cjs +2 -0
  118. package/dist/components/variables/RelativeTime.cjs.map +1 -0
  119. package/dist/components/variables/RelativeTime.d.ts +18 -0
  120. package/dist/components/variables/RelativeTime.d.ts.map +1 -0
  121. package/dist/components/variables/RelativeTime.mjs +2 -0
  122. package/dist/components/variables/RelativeTime.mjs.map +1 -0
  123. package/dist/components/variables/RelativeTime.rsc.cjs +2 -0
  124. package/dist/components/variables/RelativeTime.rsc.cjs.map +1 -0
  125. package/dist/components/variables/RelativeTime.rsc.d.ts +14 -0
  126. package/dist/components/variables/RelativeTime.rsc.d.ts.map +1 -0
  127. package/dist/components/variables/RelativeTime.rsc.mjs +2 -0
  128. package/dist/components/variables/RelativeTime.rsc.mjs.map +1 -0
  129. package/dist/components/variables/RelativeTime.shared.cjs +2 -0
  130. package/dist/components/variables/RelativeTime.shared.cjs.map +1 -0
  131. package/dist/components/variables/RelativeTime.shared.d.ts +20 -0
  132. package/dist/components/variables/RelativeTime.shared.d.ts.map +1 -0
  133. package/dist/components/variables/RelativeTime.shared.mjs +2 -0
  134. package/dist/components/variables/RelativeTime.shared.mjs.map +1 -0
  135. package/dist/components/variables/Var.cjs +2 -0
  136. package/dist/components/variables/Var.cjs.map +1 -0
  137. package/dist/components/variables/Var.d.ts +27 -0
  138. package/dist/components/variables/Var.d.ts.map +1 -0
  139. package/dist/components/variables/Var.mjs +2 -0
  140. package/dist/components/variables/Var.mjs.map +1 -0
  141. package/dist/components-rsc.cjs +1 -0
  142. package/dist/components-rsc.d.ts +32 -531
  143. package/dist/components-rsc.mjs +1 -0
  144. package/dist/components.cjs +1 -0
  145. package/dist/components.d.ts +14 -495
  146. package/dist/components.mjs +1 -0
  147. package/dist/condition-store/singleton-operations.cjs +2 -0
  148. package/dist/condition-store/singleton-operations.cjs.map +1 -0
  149. package/dist/condition-store/singleton-operations.d.ts +7 -0
  150. package/dist/condition-store/singleton-operations.d.ts.map +1 -0
  151. package/dist/condition-store/singleton-operations.mjs +2 -0
  152. package/dist/condition-store/singleton-operations.mjs.map +1 -0
  153. package/dist/context/InternalGTProvider.cjs +2 -0
  154. package/dist/context/InternalGTProvider.cjs.map +1 -0
  155. package/dist/context/InternalGTProvider.d.ts +39 -0
  156. package/dist/context/InternalGTProvider.d.ts.map +1 -0
  157. package/dist/context/InternalGTProvider.mjs +2 -0
  158. package/dist/context/InternalGTProvider.mjs.map +1 -0
  159. package/dist/context/context.cjs +2 -0
  160. package/dist/context/context.cjs.map +1 -0
  161. package/dist/context/context.mjs +2 -0
  162. package/dist/context/context.mjs.map +1 -0
  163. package/dist/functions/helpers/getTranslationsSnapshot.cjs +2 -0
  164. package/dist/functions/helpers/getTranslationsSnapshot.cjs.map +1 -0
  165. package/dist/functions/helpers/getTranslationsSnapshot.d.ts +14 -0
  166. package/dist/functions/helpers/getTranslationsSnapshot.d.ts.map +1 -0
  167. package/dist/functions/helpers/getTranslationsSnapshot.mjs +2 -0
  168. package/dist/functions/helpers/getTranslationsSnapshot.mjs.map +1 -0
  169. package/dist/functions/translation/t.cjs +2 -0
  170. package/dist/functions/translation/t.cjs.map +1 -0
  171. package/dist/functions/translation/t.d.ts +34 -0
  172. package/dist/functions/translation/t.d.ts.map +1 -0
  173. package/dist/functions/translation/t.mjs +2 -0
  174. package/dist/functions/translation/t.mjs.map +1 -0
  175. package/dist/hooks/condition-store.cjs +2 -0
  176. package/dist/hooks/condition-store.cjs.map +1 -0
  177. package/dist/hooks/condition-store.d.ts +23 -0
  178. package/dist/hooks/condition-store.d.ts.map +1 -0
  179. package/dist/hooks/condition-store.mjs +2 -0
  180. package/dist/hooks/condition-store.mjs.map +1 -0
  181. package/dist/hooks/external-store/useSubscribeToTrackedLookups.cjs +2 -0
  182. package/dist/hooks/external-store/useSubscribeToTrackedLookups.cjs.map +1 -0
  183. package/dist/hooks/external-store/useSubscribeToTrackedLookups.mjs +2 -0
  184. package/dist/hooks/external-store/useSubscribeToTrackedLookups.mjs.map +1 -0
  185. package/dist/hooks/external-store/useTrackedDictionaryObjResolver.cjs +2 -0
  186. package/dist/hooks/external-store/useTrackedDictionaryObjResolver.cjs.map +1 -0
  187. package/dist/hooks/external-store/useTrackedDictionaryObjResolver.mjs +2 -0
  188. package/dist/hooks/external-store/useTrackedDictionaryObjResolver.mjs.map +1 -0
  189. package/dist/hooks/external-store/useTrackedDictionaryResolver.cjs +2 -0
  190. package/dist/hooks/external-store/useTrackedDictionaryResolver.cjs.map +1 -0
  191. package/dist/hooks/external-store/useTrackedDictionaryResolver.mjs +2 -0
  192. package/dist/hooks/external-store/useTrackedDictionaryResolver.mjs.map +1 -0
  193. package/dist/hooks/external-store/useTrackedTranslationResolver.cjs +2 -0
  194. package/dist/hooks/external-store/useTrackedTranslationResolver.cjs.map +1 -0
  195. package/dist/hooks/external-store/useTrackedTranslationResolver.d.ts +10 -0
  196. package/dist/hooks/external-store/useTrackedTranslationResolver.d.ts.map +1 -0
  197. package/dist/hooks/external-store/useTrackedTranslationResolver.mjs +2 -0
  198. package/dist/hooks/external-store/useTrackedTranslationResolver.mjs.map +1 -0
  199. package/dist/hooks/external-store.cjs +2 -0
  200. package/dist/hooks/external-store.cjs.map +1 -0
  201. package/dist/hooks/external-store.mjs +2 -0
  202. package/dist/hooks/external-store.mjs.map +1 -0
  203. package/dist/hooks/i18n-config.cjs +2 -0
  204. package/dist/hooks/i18n-config.cjs.map +1 -0
  205. package/dist/hooks/i18n-config.d.ts +9 -0
  206. package/dist/hooks/i18n-config.d.ts.map +1 -0
  207. package/dist/hooks/i18n-config.mjs +2 -0
  208. package/dist/hooks/i18n-config.mjs.map +1 -0
  209. package/dist/hooks/useGT.cjs +2 -0
  210. package/dist/hooks/useGT.cjs.map +1 -0
  211. package/dist/hooks/useGT.d.ts +8 -0
  212. package/dist/hooks/useGT.d.ts.map +1 -0
  213. package/dist/hooks/useGT.mjs +2 -0
  214. package/dist/hooks/useGT.mjs.map +1 -0
  215. package/dist/hooks/useInternalLocaleSelector.cjs +2 -0
  216. package/dist/hooks/useInternalLocaleSelector.cjs.map +1 -0
  217. package/dist/hooks/useInternalLocaleSelector.d.ts +12 -0
  218. package/dist/hooks/useInternalLocaleSelector.d.ts.map +1 -0
  219. package/dist/hooks/useInternalLocaleSelector.mjs +2 -0
  220. package/dist/hooks/useInternalLocaleSelector.mjs.map +1 -0
  221. package/dist/hooks/useInternalRegionSelector.cjs +2 -0
  222. package/dist/hooks/useInternalRegionSelector.cjs.map +1 -0
  223. package/dist/hooks/useInternalRegionSelector.d.ts +42 -0
  224. package/dist/hooks/useInternalRegionSelector.d.ts.map +1 -0
  225. package/dist/hooks/useInternalRegionSelector.mjs +2 -0
  226. package/dist/hooks/useInternalRegionSelector.mjs.map +1 -0
  227. package/dist/hooks/useMessages.cjs +2 -0
  228. package/dist/hooks/useMessages.cjs.map +1 -0
  229. package/dist/hooks/useMessages.d.ts +8 -0
  230. package/dist/hooks/useMessages.d.ts.map +1 -0
  231. package/dist/hooks/useMessages.mjs +2 -0
  232. package/dist/hooks/useMessages.mjs.map +1 -0
  233. package/dist/hooks/useTranslations.cjs +2 -0
  234. package/dist/hooks/useTranslations.cjs.map +1 -0
  235. package/dist/hooks/useTranslations.d.ts +10 -0
  236. package/dist/hooks/useTranslations.d.ts.map +1 -0
  237. package/dist/hooks/useTranslations.mjs +2 -0
  238. package/dist/hooks/useTranslations.mjs.map +1 -0
  239. package/dist/hooks/utils/getFormatLocales.cjs +2 -0
  240. package/dist/hooks/utils/getFormatLocales.cjs.map +1 -0
  241. package/dist/hooks/utils/getFormatLocales.d.ts +13 -0
  242. package/dist/hooks/utils/getFormatLocales.d.ts.map +1 -0
  243. package/dist/hooks/utils/getFormatLocales.mjs +2 -0
  244. package/dist/hooks/utils/getFormatLocales.mjs.map +1 -0
  245. package/dist/hooks/utils/getShouldTranslate.cjs +2 -0
  246. package/dist/hooks/utils/getShouldTranslate.cjs.map +1 -0
  247. package/dist/hooks/utils/getShouldTranslate.d.ts +8 -0
  248. package/dist/hooks/utils/getShouldTranslate.d.ts.map +1 -0
  249. package/dist/hooks/utils/getShouldTranslate.mjs +2 -0
  250. package/dist/hooks/utils/getShouldTranslate.mjs.map +1 -0
  251. package/dist/hooks/utils/missing-translation.cjs +2 -0
  252. package/dist/hooks/utils/missing-translation.cjs.map +1 -0
  253. package/dist/hooks/utils/missing-translation.d.ts +10 -0
  254. package/dist/hooks/utils/missing-translation.d.ts.map +1 -0
  255. package/dist/hooks/utils/missing-translation.mjs +2 -0
  256. package/dist/hooks/utils/missing-translation.mjs.map +1 -0
  257. package/dist/hooks/utils.cjs +2 -0
  258. package/dist/hooks/utils.cjs.map +1 -0
  259. package/dist/hooks/utils.d.ts +10 -0
  260. package/dist/hooks/utils.d.ts.map +1 -0
  261. package/dist/hooks/utils.mjs +2 -0
  262. package/dist/hooks/utils.mjs.map +1 -0
  263. package/dist/hooks.cjs +1 -0
  264. package/dist/hooks.d.ts +9 -130
  265. package/dist/hooks.mjs +1 -0
  266. package/dist/i18n-cache/ReactI18nCache.cjs +2 -0
  267. package/dist/i18n-cache/ReactI18nCache.cjs.map +1 -0
  268. package/dist/i18n-cache/ReactI18nCache.d.ts +10 -0
  269. package/dist/i18n-cache/ReactI18nCache.d.ts.map +1 -0
  270. package/dist/i18n-cache/ReactI18nCache.mjs +2 -0
  271. package/dist/i18n-cache/ReactI18nCache.mjs.map +1 -0
  272. package/dist/i18n-cache/singleton-operations.cjs +2 -0
  273. package/dist/i18n-cache/singleton-operations.cjs.map +1 -0
  274. package/dist/i18n-cache/singleton-operations.d.ts +8 -0
  275. package/dist/i18n-cache/singleton-operations.d.ts.map +1 -0
  276. package/dist/i18n-cache/singleton-operations.mjs +2 -0
  277. package/dist/i18n-cache/singleton-operations.mjs.map +1 -0
  278. package/dist/i18n-store/I18nStore.cjs +2 -0
  279. package/dist/i18n-store/I18nStore.cjs.map +1 -0
  280. package/dist/i18n-store/I18nStore.d.ts +41 -0
  281. package/dist/i18n-store/I18nStore.d.ts.map +1 -0
  282. package/dist/i18n-store/I18nStore.mjs +2 -0
  283. package/dist/i18n-store/I18nStore.mjs.map +1 -0
  284. package/dist/i18n-store/singleton-operations.cjs +2 -0
  285. package/dist/i18n-store/singleton-operations.cjs.map +1 -0
  286. package/dist/i18n-store/singleton-operations.d.ts +7 -0
  287. package/dist/i18n-store/singleton-operations.d.ts.map +1 -0
  288. package/dist/i18n-store/singleton-operations.mjs +2 -0
  289. package/dist/i18n-store/singleton-operations.mjs.map +1 -0
  290. package/dist/i18n-store/storeTypes.d.ts +22 -0
  291. package/dist/i18n-store/storeTypes.d.ts.map +1 -0
  292. package/dist/i18n-store/useI18nStore.cjs +2 -0
  293. package/dist/i18n-store/useI18nStore.cjs.map +1 -0
  294. package/dist/i18n-store/useI18nStore.mjs +2 -0
  295. package/dist/i18n-store/useI18nStore.mjs.map +1 -0
  296. package/dist/i18n-store/utils/dictionaries.cjs +2 -0
  297. package/dist/i18n-store/utils/dictionaries.cjs.map +1 -0
  298. package/dist/i18n-store/utils/dictionaries.mjs +2 -0
  299. package/dist/i18n-store/utils/dictionaries.mjs.map +1 -0
  300. package/dist/i18n-store/utils/subscriptions.cjs +2 -0
  301. package/dist/i18n-store/utils/subscriptions.cjs.map +1 -0
  302. package/dist/i18n-store/utils/subscriptions.mjs +2 -0
  303. package/dist/i18n-store/utils/subscriptions.mjs.map +1 -0
  304. package/dist/i18n-store/utils/translations.cjs +2 -0
  305. package/dist/i18n-store/utils/translations.cjs.map +1 -0
  306. package/dist/i18n-store/utils/translations.mjs +2 -0
  307. package/dist/i18n-store/utils/translations.mjs.map +1 -0
  308. package/dist/pure.cjs +1 -0
  309. package/dist/pure.d.ts +18 -677
  310. package/dist/pure.mjs +1 -0
  311. package/dist/setup/i18nConfig.cjs +2 -0
  312. package/dist/setup/i18nConfig.cjs.map +1 -0
  313. package/dist/setup/i18nConfig.d.ts +48 -0
  314. package/dist/setup/i18nConfig.d.ts.map +1 -0
  315. package/dist/setup/i18nConfig.mjs +2 -0
  316. package/dist/setup/i18nConfig.mjs.map +1 -0
  317. package/dist/setup/initializeGTSRA.cjs +2 -0
  318. package/dist/setup/initializeGTSRA.cjs.map +1 -0
  319. package/dist/setup/initializeGTSRA.d.ts +11 -0
  320. package/dist/setup/initializeGTSRA.d.ts.map +1 -0
  321. package/dist/setup/initializeGTSRA.mjs +2 -0
  322. package/dist/setup/initializeGTSRA.mjs.map +1 -0
  323. package/dist/utils/internal/addGTIdentifier.cjs +2 -0
  324. package/dist/utils/internal/addGTIdentifier.cjs.map +1 -0
  325. package/dist/utils/internal/addGTIdentifier.mjs +2 -0
  326. package/dist/utils/internal/addGTIdentifier.mjs.map +1 -0
  327. package/dist/utils/internal/removeInjectedT.cjs +2 -0
  328. package/dist/utils/internal/removeInjectedT.cjs.map +1 -0
  329. package/dist/utils/internal/removeInjectedT.mjs +2 -0
  330. package/dist/utils/internal/removeInjectedT.mjs.map +1 -0
  331. package/dist/utils/internal/writeChildrenAsObjects.cjs +2 -0
  332. package/dist/utils/internal/writeChildrenAsObjects.cjs.map +1 -0
  333. package/dist/utils/internal/writeChildrenAsObjects.mjs +2 -0
  334. package/dist/utils/internal/writeChildrenAsObjects.mjs.map +1 -0
  335. package/dist/utils/plurals/getPluralBranch.cjs +2 -0
  336. package/dist/utils/plurals/getPluralBranch.cjs.map +1 -0
  337. package/dist/utils/plurals/getPluralBranch.d.ts +12 -0
  338. package/dist/utils/plurals/getPluralBranch.d.ts.map +1 -0
  339. package/dist/utils/plurals/getPluralBranch.mjs +2 -0
  340. package/dist/utils/plurals/getPluralBranch.mjs.map +1 -0
  341. package/dist/utils/rendering/createRenderPipeline.cjs +2 -0
  342. package/dist/utils/rendering/createRenderPipeline.cjs.map +1 -0
  343. package/dist/utils/rendering/createRenderPipeline.d.ts +18 -0
  344. package/dist/utils/rendering/createRenderPipeline.d.ts.map +1 -0
  345. package/dist/utils/rendering/createRenderPipeline.mjs +2 -0
  346. package/dist/utils/rendering/createRenderPipeline.mjs.map +1 -0
  347. package/dist/utils/rendering/createRenderVariable.cjs +2 -0
  348. package/dist/utils/rendering/createRenderVariable.cjs.map +1 -0
  349. package/dist/utils/rendering/createRenderVariable.d.ts +46 -0
  350. package/dist/utils/rendering/createRenderVariable.d.ts.map +1 -0
  351. package/dist/utils/rendering/createRenderVariable.mjs +2 -0
  352. package/dist/utils/rendering/createRenderVariable.mjs.map +1 -0
  353. package/dist/utils/rendering/getDefaultRenderSettings.cjs +2 -0
  354. package/dist/utils/rendering/getDefaultRenderSettings.cjs.map +1 -0
  355. package/dist/utils/rendering/getDefaultRenderSettings.d.ts +10 -0
  356. package/dist/utils/rendering/getDefaultRenderSettings.d.ts.map +1 -0
  357. package/dist/utils/rendering/getDefaultRenderSettings.mjs +2 -0
  358. package/dist/utils/rendering/getDefaultRenderSettings.mjs.map +1 -0
  359. package/dist/utils/rendering/getGTTag.cjs +2 -0
  360. package/dist/utils/rendering/getGTTag.cjs.map +1 -0
  361. package/dist/utils/rendering/getGTTag.mjs +2 -0
  362. package/dist/utils/rendering/getGTTag.mjs.map +1 -0
  363. package/dist/utils/rendering/renderDefaultChildren.shared.cjs +2 -0
  364. package/dist/utils/rendering/renderDefaultChildren.shared.cjs.map +1 -0
  365. package/dist/utils/rendering/renderDefaultChildren.shared.d.ts +12 -0
  366. package/dist/utils/rendering/renderDefaultChildren.shared.d.ts.map +1 -0
  367. package/dist/utils/rendering/renderDefaultChildren.shared.mjs +2 -0
  368. package/dist/utils/rendering/renderDefaultChildren.shared.mjs.map +1 -0
  369. package/dist/utils/rendering/renderPipeline.cjs +2 -0
  370. package/dist/utils/rendering/renderPipeline.cjs.map +1 -0
  371. package/dist/utils/rendering/renderPipeline.mjs +2 -0
  372. package/dist/utils/rendering/renderPipeline.mjs.map +1 -0
  373. package/dist/utils/rendering/renderPipeline.rsc.cjs +2 -0
  374. package/dist/utils/rendering/renderPipeline.rsc.cjs.map +1 -0
  375. package/dist/utils/rendering/renderPipeline.rsc.d.ts +11 -0
  376. package/dist/utils/rendering/renderPipeline.rsc.d.ts.map +1 -0
  377. package/dist/utils/rendering/renderPipeline.rsc.mjs +2 -0
  378. package/dist/utils/rendering/renderPipeline.rsc.mjs.map +1 -0
  379. package/dist/utils/rendering/renderPreparedT.shared.cjs +2 -0
  380. package/dist/utils/rendering/renderPreparedT.shared.cjs.map +1 -0
  381. package/dist/utils/rendering/renderPreparedT.shared.d.ts +16 -0
  382. package/dist/utils/rendering/renderPreparedT.shared.d.ts.map +1 -0
  383. package/dist/utils/rendering/renderPreparedT.shared.mjs +2 -0
  384. package/dist/utils/rendering/renderPreparedT.shared.mjs.map +1 -0
  385. package/dist/utils/rendering/renderTranslatedChildren.shared.cjs +2 -0
  386. package/dist/utils/rendering/renderTranslatedChildren.shared.cjs.map +1 -0
  387. package/dist/utils/rendering/renderTranslatedChildren.shared.d.ts +13 -0
  388. package/dist/utils/rendering/renderTranslatedChildren.shared.d.ts.map +1 -0
  389. package/dist/utils/rendering/renderTranslatedChildren.shared.mjs +2 -0
  390. package/dist/utils/rendering/renderTranslatedChildren.shared.mjs.map +1 -0
  391. package/dist/utils/translation/prepareT.shared.cjs +2 -0
  392. package/dist/utils/translation/prepareT.shared.cjs.map +1 -0
  393. package/dist/utils/translation/prepareT.shared.d.ts +40 -0
  394. package/dist/utils/translation/prepareT.shared.d.ts.map +1 -0
  395. package/dist/utils/translation/prepareT.shared.mjs +2 -0
  396. package/dist/utils/translation/prepareT.shared.mjs.map +1 -0
  397. package/dist/utils/translation/usePrepareT.cjs +2 -0
  398. package/dist/utils/translation/usePrepareT.cjs.map +1 -0
  399. package/dist/utils/translation/usePrepareT.mjs +2 -0
  400. package/dist/utils/translation/usePrepareT.mjs.map +1 -0
  401. package/dist/utils/types.d.ts +64 -0
  402. package/dist/utils/types.d.ts.map +1 -0
  403. package/dist/utils/utils.cjs +2 -0
  404. package/dist/utils/utils.cjs.map +1 -0
  405. package/dist/utils/utils.mjs +2 -0
  406. package/dist/utils/utils.mjs.map +1 -0
  407. package/dist/utils/variables/_getVariableProps.cjs +2 -0
  408. package/dist/utils/variables/_getVariableProps.cjs.map +1 -0
  409. package/dist/utils/variables/_getVariableProps.mjs +2 -0
  410. package/dist/utils/variables/_getVariableProps.mjs.map +1 -0
  411. package/dist/utils/variables/getVariableName.cjs +2 -0
  412. package/dist/utils/variables/getVariableName.cjs.map +1 -0
  413. package/dist/utils/variables/getVariableName.mjs +2 -0
  414. package/dist/utils/variables/getVariableName.mjs.map +1 -0
  415. package/package.json +13 -41
  416. package/dist/components-rsc.cjs.min.cjs +0 -2
  417. package/dist/components-rsc.cjs.min.cjs.map +0 -1
  418. package/dist/components-rsc.d.ts.map +0 -1
  419. package/dist/components-rsc.esm.min.mjs +0 -2
  420. package/dist/components-rsc.esm.min.mjs.map +0 -1
  421. package/dist/components.cjs.min.cjs +0 -2
  422. package/dist/components.cjs.min.cjs.map +0 -1
  423. package/dist/components.d.ts.map +0 -1
  424. package/dist/components.esm.min.mjs +0 -2
  425. package/dist/components.esm.min.mjs.map +0 -1
  426. package/dist/cookies.cjs.min.cjs +0 -2
  427. package/dist/cookies.cjs.min.cjs.map +0 -1
  428. package/dist/cookies.d.ts +0 -16
  429. package/dist/cookies.d.ts.map +0 -1
  430. package/dist/cookies.esm.min.mjs +0 -2
  431. package/dist/cookies.esm.min.mjs.map +0 -1
  432. package/dist/hooks.cjs.min.cjs +0 -2
  433. package/dist/hooks.cjs.min.cjs.map +0 -1
  434. package/dist/hooks.d.ts.map +0 -1
  435. package/dist/hooks.esm.min.mjs +0 -2
  436. package/dist/hooks.esm.min.mjs.map +0 -1
  437. package/dist/pure.cjs.min.cjs +0 -2
  438. package/dist/pure.cjs.min.cjs.map +0 -1
  439. package/dist/pure.d.ts.map +0 -1
  440. package/dist/pure.esm.min.mjs +0 -2
  441. package/dist/pure.esm.min.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTranslationsSnapshot.cjs","names":["getReactI18nCache"],"sources":["../../../src/functions/helpers/getTranslationsSnapshot.ts"],"sourcesContent":["import { Hash, Locale } from 'gt-i18n/internal/types';\nimport { Translation } from 'gt-i18n/types';\nimport { getReactI18nCache } from '../../i18n-cache/singleton-operations';\n\n/**\n * Returns a promise of serializable cached translations that\n * can be passed to a provider for hydration\n *\n * TODO: perhaps should be moved to /i18n if allowing for type generics\n */\nexport async function getTranslationsSnapshot(\n locale: Locale\n): Promise<Record<Locale, Record<Hash, Translation>>> {\n const i18nCache = getReactI18nCache();\n const translations = await i18nCache.loadTranslations(locale);\n // Only pass translations for the given locale to minimize the size of the snapshot\n return { [locale]: translations };\n}\n"],"mappings":"6DAUA,eAAsB,EACpB,EACoD,CAEpD,IAAM,EAAe,MADHA,EAAAA,mBACkB,CAAC,iBAAiB,EAAO,CAE7D,MAAO,EAAG,GAAS,EAAc"}
@@ -0,0 +1,14 @@
1
+ import { Translation } from "gt-i18n/types";
2
+ import { Hash, Locale } from "gt-i18n/internal/types";
3
+
4
+ //#region src/functions/helpers/getTranslationsSnapshot.d.ts
5
+ /**
6
+ * Returns a promise of serializable cached translations that
7
+ * can be passed to a provider for hydration
8
+ *
9
+ * TODO: perhaps should be moved to /i18n if allowing for type generics
10
+ */
11
+ declare function getTranslationsSnapshot(locale: Locale): Promise<Record<Locale, Record<Hash, Translation>>>;
12
+ //#endregion
13
+ export { getTranslationsSnapshot };
14
+ //# sourceMappingURL=getTranslationsSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTranslationsSnapshot.d.ts","names":[],"sources":["../../../src/functions/helpers/getTranslationsSnapshot.ts"],"mappings":";;;;;;AAUA;;;;iBAAsB,uBAAA,CACpB,MAAA,EAAQ,MAAA,GACP,OAAA,CAAQ,MAAA,CAAO,MAAA,EAAQ,MAAA,CAAO,IAAA,EAAM,WAAA"}
@@ -0,0 +1,2 @@
1
+ import{getReactI18nCache as e}from"../../i18n-cache/singleton-operations.mjs";async function t(t){let n=await e().loadTranslations(t);return{[t]:n}}export{t as getTranslationsSnapshot};
2
+ //# sourceMappingURL=getTranslationsSnapshot.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTranslationsSnapshot.mjs","names":[],"sources":["../../../src/functions/helpers/getTranslationsSnapshot.ts"],"sourcesContent":["import { Hash, Locale } from 'gt-i18n/internal/types';\nimport { Translation } from 'gt-i18n/types';\nimport { getReactI18nCache } from '../../i18n-cache/singleton-operations';\n\n/**\n * Returns a promise of serializable cached translations that\n * can be passed to a provider for hydration\n *\n * TODO: perhaps should be moved to /i18n if allowing for type generics\n */\nexport async function getTranslationsSnapshot(\n locale: Locale\n): Promise<Record<Locale, Record<Hash, Translation>>> {\n const i18nCache = getReactI18nCache();\n const translations = await i18nCache.loadTranslations(locale);\n // Only pass translations for the given locale to minimize the size of the snapshot\n return { [locale]: translations };\n}\n"],"mappings":"8EAUA,eAAsB,EACpB,EACoD,CAEpD,IAAM,EAAe,MADH,GACkB,CAAC,iBAAiB,EAAO,CAE7D,MAAO,EAAG,GAAS,EAAc"}
@@ -0,0 +1,2 @@
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../i18n-cache/singleton-operations.cjs`),t=require(`../../setup/i18nConfig.cjs`),n=require(`../../condition-store/singleton-operations.cjs`),r=require(`../../hooks/utils/getShouldTranslate.cjs`);let i=require(`gt-i18n/internal`),a=require(`generaltranslation/internal`);const o=(e,...t)=>{if(d(e),typeof e==`string`){let n=t.at(0),r=n?.$locale??f();return s(r,e,(0,i.createLookupOptions)(r,n??{},`ICU`))}return c(e,t)};function s(n,a,o={}){let s=e.getReactI18nCache(),c=t.getI18nConfig().getDefaultLocale();if(!r.getShouldTranslate())return(0,i.interpolateMessage)({options:o,source:a,sourceLocale:c});let l=(0,i.createLookupOptions)(n,o,`ICU`);return(0,i.interpolateMessage)({source:a,target:s.lookupTranslation(l.$locale,a,l),options:l,sourceLocale:c})}function c(t,n){let r=f(),i=u(t,n),a=e.getReactI18nCache().lookupTranslation(r,i,{$format:`STRING`});if(a)return a;let{message:o,variables:c}=l(t,n);return s(r,o,c)}function l(e,t){let n=[],r={},i=0;for(let a=0;a<e.length;a++)if(n.push(e[a]),a<t.length){let e=i.toString();n.push(`{${e}}`),r[e]=t[a],i++}return{message:n.join(``),variables:r}}function u(e,t){return e.map((e,n)=>e+(t[n]??``)).join(``)}function d(e){let r=t.getI18nConfig().getRenderStrategy()===`server-render`,o=!n.isConditionStoreInitialized();if(!r||!o)return;let s=typeof e==`string`?e:e.join(``),c=(0,a.createDiagnosticMessage)({source:`@generaltranslation/react-core`,severity:`Error`,whatHappened:`Using the t() function at the module level is forbidden in server-rendered applications.`,fix:`Either move the t() invocation into a request-time scope or register the string with the msg() function and translate with an m() function. Ensure that you have added the <GTProvider> at the root of your component tree.`,wayOut:(0,i.getRuntimeEnvironment)()===`development`?void 0:`Falling back to defaultLocale value.`,details:`Message: "${s}"`});if((0,i.getRuntimeEnvironment)()===`development`)throw Error(c);console.error(c)}function f(){return n.getConditionStore().getLocale()}exports.t=o;
2
+ //# sourceMappingURL=t.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"t.cjs","names":["getReactI18nCache","getI18nConfig","getShouldTranslate","isReadonlyConditionStoreInitialized","getReadonlyConditionStore"],"sources":["../../../src/functions/translation/t.ts"],"sourcesContent":["import {\n createLookupOptions,\n getRuntimeEnvironment,\n interpolateMessage,\n} from 'gt-i18n/internal';\nimport type { GTTranslationOptions } from 'gt-i18n/types';\nimport type { LookupOptionsFor } from 'gt-i18n/internal/types';\nimport { getI18nConfig } from '../../setup/i18nConfig';\nimport {\n getReadonlyConditionStore,\n isReadonlyConditionStoreInitialized,\n} from '../../condition-store/singleton-operations';\nimport { StringContent, StringFormat } from 'generaltranslation/types';\nimport { getReactI18nCache } from '../../i18n-cache/singleton-operations';\nimport { getShouldTranslate } from '../../hooks/utils/getShouldTranslate';\nimport { createDiagnosticMessage } from 'generaltranslation/internal';\n\n/**\n * Translate a message\n * @param {string} message - The message to translate.\n * @param {GTTranslationOptions} [options] - The options for the translation.\n * @returns {string} The translated message.\n *\n * @example\n * t('Hello, world!'); // Translates 'Hello, world!'\n *\n * @example\n * t('Hello, {name}!', { name: 'John' }); // Translates 'Hello, John!'\n *\n * @example\n * t`Hello, ${name}` // Translate via tagged template literal\n *\n */\nexport const t: StringOrTemplateSyncResolutionFunction = (\n messageOrStrings: string | TemplateStringsArray,\n ...values: unknown[]\n) => {\n // Warnings and errors\n enforceSSRRules(messageOrStrings);\n\n // t(\"Hello, {name}!\", { name: \"John\" })\n if (typeof messageOrStrings === 'string') {\n const options = values.at(0) as GTTranslationOptions | undefined;\n const locale = options?.$locale ?? getLocale();\n return resolveStringContent(\n locale,\n messageOrStrings,\n createLookupOptions(locale, options ?? {}, 'ICU')\n );\n }\n\n // t`Hello, ${name}`\n return handleTaggedTemplateLiteralTranslation(messageOrStrings, values);\n};\n\n// ----- Helper Functions ----- //\n\nexport function resolveStringContent(\n locale: string,\n content: StringContent,\n options: LookupOptionsFor<StringFormat> = {}\n): StringContent {\n const i18nCache = getReactI18nCache();\n const defaultLocale = getI18nConfig().getDefaultLocale();\n if (!getShouldTranslate()) {\n return interpolateMessage({\n options,\n source: content,\n sourceLocale: defaultLocale,\n });\n }\n\n const lookupOptions = createLookupOptions(locale, options, 'ICU');\n const translation = i18nCache.lookupTranslation(\n lookupOptions.$locale,\n content,\n lookupOptions\n );\n return interpolateMessage({\n source: content,\n target: translation,\n options: lookupOptions,\n sourceLocale: defaultLocale,\n });\n}\n\n/**\n * Handle tagged template literal translation\n * @param messageOrStrings - The message or strings to translate.\n * @param values - The values to interpolate.\n * @returns The translated message.\n *\n * This is triggered when there has been no compiler transformation\n *\n * Try looking up interpolated template first\n * If not found, resolve uninterpolated message\n */\nfunction handleTaggedTemplateLiteralTranslation(\n messageOrStrings: TemplateStringsArray,\n values: unknown[]\n): string {\n const locale = getLocale();\n // for tagged template literals, there has been no compiler transformation\n // (1) lookup interpolated template (aka derived message)\n const interpolatedTemplate = interpolateTemplateLiteral(\n messageOrStrings,\n values\n );\n const i18nCache = getReactI18nCache();\n const translatedInterpolatedTemplate = i18nCache.lookupTranslation(\n locale,\n interpolatedTemplate,\n { $format: 'STRING' }\n );\n if (translatedInterpolatedTemplate) return translatedInterpolatedTemplate;\n\n // (2) resolve uninterpolated message\n const { message, variables } = extractInterpolatableValues(\n messageOrStrings,\n values\n );\n return resolveStringContent(locale, message, variables);\n}\n\n/**\n * Given a TemplateStringsArray, and values, return the uninterpolated message and variables.\n * @param strings - The template strings.\n * @param values - The values to interpolate.\n * @returns The interpolated message and variables.\n */\nfunction extractInterpolatableValues(\n strings: TemplateStringsArray,\n values: unknown[]\n): {\n message: string;\n variables: Record<string, unknown>;\n} {\n // String parts\n const parts: string[] = [];\n // Variables\n const variables: Record<string, unknown> = {};\n let varIndex = 0;\n\n for (let i = 0; i < strings.length; i++) {\n // Add the cooked text from the quasi (use cooked to handle escape sequences)\n parts.push(strings[i]);\n\n // If there's a corresponding expression, create a variable placeholder\n if (i < values.length) {\n const key = varIndex.toString();\n parts.push(`{${key}}`);\n variables[key] = values[i];\n varIndex++;\n }\n }\n\n return {\n message: parts.join(''),\n variables,\n };\n}\n\n/**\n * Interpolate a template literal\n * @param message - The message to interpolate.\n * @param variables - The variables to interpolate.\n * @returns The interpolated message.\n */\nfunction interpolateTemplateLiteral(\n strings: TemplateStringsArray,\n values: unknown[]\n): string {\n return strings\n .map((string, index) => {\n return string + (values[index] ?? '');\n })\n .join('');\n}\n\n/**\n * Module-level t() only works for SPA.\n * We have to error or fallback in SSR.\n */\nfunction enforceSSRRules(messageOrStrings: string | TemplateStringsArray) {\n const ssrEnabled = getI18nConfig().getRenderStrategy() === 'server-render';\n const moduleLevel = !isReadonlyConditionStoreInitialized();\n if (!ssrEnabled || !moduleLevel) return;\n\n const message =\n typeof messageOrStrings === 'string'\n ? messageOrStrings\n : messageOrStrings.join('');\n const runtimeEnvironment = getRuntimeEnvironment();\n const errorMessage = createDiagnosticMessage({\n source: '@generaltranslation/react-core',\n severity: 'Error',\n whatHappened:\n 'Using the t() function at the module level is forbidden in server-rendered applications.',\n fix: 'Either move the t() invocation into a request-time scope or register the string with the msg() function and translate with an m() function. Ensure that you have added the <GTProvider> at the root of your component tree.',\n wayOut:\n runtimeEnvironment === 'development'\n ? undefined\n : 'Falling back to defaultLocale value.',\n details: `Message: \"${message}\"`,\n });\n if (getRuntimeEnvironment() === 'development') {\n throw new Error(errorMessage);\n } else {\n console.error(errorMessage);\n }\n}\n\nfunction getLocale(): string {\n return getReadonlyConditionStore().getLocale();\n}\n\n/**\n * Overloaded type for the `t` function.\n * - Tagged template: t`Hello, ${name}` (transformed by the compiler plugin at build time)\n * - Function call: t(\"Hello, {name}\", { name: \"John\" })\n *\n * {@link TemplateSyncResolutionFunction}\n * {@link SyncResolutionFunction}\n */\ninterface StringOrTemplateSyncResolutionFunction {\n (strings: TemplateStringsArray, ...values: unknown[]): string;\n (message: string, options?: GTTranslationOptions): string;\n}\n\n/**\n * Type for the `t` function when used as a tagged template literal.\n * @param strings - The template strings.\n * @param values - The values to interpolate.\n * @returns The translated message.\n */\ntype TemplateSyncResolutionFunction = (\n strings: TemplateStringsArray,\n ...values: unknown[]\n) => string;\n"],"mappings":"kVAiCA,MAAa,GACX,EACA,GAAG,IACA,CAKH,GAHA,EAAgB,EAAiB,CAG7B,OAAO,GAAqB,SAAU,CACxC,IAAM,EAAU,EAAO,GAAG,EAAE,CACtB,EAAS,GAAS,SAAW,GAAW,CAC9C,OAAO,EACL,EACA,GAAA,EAAA,EAAA,qBACoB,EAAQ,GAAW,EAAE,CAAE,MAAM,CAClD,CAIH,OAAO,EAAuC,EAAkB,EAAO,EAKzE,SAAgB,EACd,EACA,EACA,EAA0C,EAAE,CAC7B,CACf,IAAM,EAAYA,EAAAA,mBAAmB,CAC/B,EAAgBC,EAAAA,eAAe,CAAC,kBAAkB,CACxD,GAAI,CAACC,EAAAA,oBAAoB,CACvB,OAAA,EAAA,EAAA,oBAA0B,CACxB,UACA,OAAQ,EACR,aAAc,EACf,CAAC,CAGJ,IAAM,GAAA,EAAA,EAAA,qBAAoC,EAAQ,EAAS,MAAM,CAMjE,OAAA,EAAA,EAAA,oBAA0B,CACxB,OAAQ,EACR,OAPkB,EAAU,kBAC5B,EAAc,QACd,EACA,EAImB,CACnB,QAAS,EACT,aAAc,EACf,CAAC,CAcJ,SAAS,EACP,EACA,EACQ,CACR,IAAM,EAAS,GAAW,CAGpB,EAAuB,EAC3B,EACA,EACD,CAEK,EADYF,EAAAA,mBAC8B,CAAC,kBAC/C,EACA,EACA,CAAE,QAAS,SAAU,CACtB,CACD,GAAI,EAAgC,OAAO,EAG3C,GAAM,CAAE,UAAS,aAAc,EAC7B,EACA,EACD,CACD,OAAO,EAAqB,EAAQ,EAAS,EAAU,CASzD,SAAS,EACP,EACA,EAIA,CAEA,IAAM,EAAkB,EAAE,CAEpB,EAAqC,EAAE,CACzC,EAAW,EAEf,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAKlC,GAHA,EAAM,KAAK,EAAQ,GAAG,CAGlB,EAAI,EAAO,OAAQ,CACrB,IAAM,EAAM,EAAS,UAAU,CAC/B,EAAM,KAAK,IAAI,EAAI,GAAG,CACtB,EAAU,GAAO,EAAO,GACxB,IAIJ,MAAO,CACL,QAAS,EAAM,KAAK,GAAG,CACvB,YACD,CASH,SAAS,EACP,EACA,EACQ,CACR,OAAO,EACJ,KAAK,EAAQ,IACL,GAAU,EAAO,IAAU,IAClC,CACD,KAAK,GAAG,CAOb,SAAS,EAAgB,EAAiD,CACxE,IAAM,EAAaC,EAAAA,eAAe,CAAC,mBAAmB,GAAK,gBACrD,EAAc,CAACE,EAAAA,6BAAqC,CAC1D,GAAI,CAAC,GAAc,CAAC,EAAa,OAEjC,IAAM,EACJ,OAAO,GAAqB,SACxB,EACA,EAAiB,KAAK,GAAG,CAEzB,GAAA,EAAA,EAAA,yBAAuC,CAC3C,OAAQ,iCACR,SAAU,QACV,aACE,2FACF,IAAK,8NACL,QAAA,EAAA,EAAA,wBACoB,GAAK,cACnB,IAAA,GACA,uCACN,QAAS,aAAa,EAAQ,GAC/B,CAAC,CACF,IAAA,EAAA,EAAA,wBAA2B,GAAK,cAC9B,MAAU,MAAM,EAAa,CAE7B,QAAQ,MAAM,EAAa,CAI/B,SAAS,GAAoB,CAC3B,OAAOC,EAAAA,mBAA2B,CAAC,WAAW"}
@@ -0,0 +1,34 @@
1
+ import { GTTranslationOptions } from "gt-i18n/types";
2
+ //#region src/functions/translation/t.d.ts
3
+ /**
4
+ * Translate a message
5
+ * @param {string} message - The message to translate.
6
+ * @param {GTTranslationOptions} [options] - The options for the translation.
7
+ * @returns {string} The translated message.
8
+ *
9
+ * @example
10
+ * t('Hello, world!'); // Translates 'Hello, world!'
11
+ *
12
+ * @example
13
+ * t('Hello, {name}!', { name: 'John' }); // Translates 'Hello, John!'
14
+ *
15
+ * @example
16
+ * t`Hello, ${name}` // Translate via tagged template literal
17
+ *
18
+ */
19
+ declare const t: StringOrTemplateSyncResolutionFunction;
20
+ /**
21
+ * Overloaded type for the `t` function.
22
+ * - Tagged template: t`Hello, ${name}` (transformed by the compiler plugin at build time)
23
+ * - Function call: t("Hello, {name}", { name: "John" })
24
+ *
25
+ * {@link TemplateSyncResolutionFunction}
26
+ * {@link SyncResolutionFunction}
27
+ */
28
+ interface StringOrTemplateSyncResolutionFunction {
29
+ (strings: TemplateStringsArray, ...values: unknown[]): string;
30
+ (message: string, options?: GTTranslationOptions): string;
31
+ }
32
+ //#endregion
33
+ export { t };
34
+ //# sourceMappingURL=t.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"t.d.ts","names":[],"sources":["../../../src/functions/translation/t.ts"],"mappings":";;;;AAiCA;;;;;AAmDC;;;;;;;;;cAnDY,CAAA,EAAG,sCAAA;;;;;;;;;UA+LN,sCAAA;EAAA,CACP,OAAA,EAAS,oBAAA,KAAyB,MAAA;EAAA,CAClC,OAAA,UAAiB,OAAA,GAAU,oBAAA;AAAA"}
@@ -0,0 +1,2 @@
1
+ import{getReactI18nCache as e}from"../../i18n-cache/singleton-operations.mjs";import{getI18nConfig as t}from"../../setup/i18nConfig.mjs";import{getConditionStore as n,isConditionStoreInitialized as r}from"../../condition-store/singleton-operations.mjs";import{getShouldTranslate as i}from"../../hooks/utils/getShouldTranslate.mjs";import{createLookupOptions as a,getRuntimeEnvironment as o,interpolateMessage as s}from"gt-i18n/internal";import{createDiagnosticMessage as c}from"generaltranslation/internal";const l=(e,...t)=>{if(m(e),typeof e==`string`){let n=t.at(0),r=n?.$locale??h();return u(r,e,a(r,n??{},`ICU`))}return d(e,t)};function u(n,r,o={}){let c=e(),l=t().getDefaultLocale();if(!i())return s({options:o,source:r,sourceLocale:l});let u=a(n,o,`ICU`);return s({source:r,target:c.lookupTranslation(u.$locale,r,u),options:u,sourceLocale:l})}function d(t,n){let r=h(),i=p(t,n),a=e().lookupTranslation(r,i,{$format:`STRING`});if(a)return a;let{message:o,variables:s}=f(t,n);return u(r,o,s)}function f(e,t){let n=[],r={},i=0;for(let a=0;a<e.length;a++)if(n.push(e[a]),a<t.length){let e=i.toString();n.push(`{${e}}`),r[e]=t[a],i++}return{message:n.join(``),variables:r}}function p(e,t){return e.map((e,n)=>e+(t[n]??``)).join(``)}function m(e){let n=t().getRenderStrategy()===`server-render`,i=!r();if(!n||!i)return;let a=typeof e==`string`?e:e.join(``),s=c({source:`@generaltranslation/react-core`,severity:`Error`,whatHappened:`Using the t() function at the module level is forbidden in server-rendered applications.`,fix:`Either move the t() invocation into a request-time scope or register the string with the msg() function and translate with an m() function. Ensure that you have added the <GTProvider> at the root of your component tree.`,wayOut:o()===`development`?void 0:`Falling back to defaultLocale value.`,details:`Message: "${a}"`});if(o()===`development`)throw Error(s);console.error(s)}function h(){return n().getLocale()}export{l as t};
2
+ //# sourceMappingURL=t.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"t.mjs","names":["getI18nConfig","isReadonlyConditionStoreInitialized","getReadonlyConditionStore"],"sources":["../../../src/functions/translation/t.ts"],"sourcesContent":["import {\n createLookupOptions,\n getRuntimeEnvironment,\n interpolateMessage,\n} from 'gt-i18n/internal';\nimport type { GTTranslationOptions } from 'gt-i18n/types';\nimport type { LookupOptionsFor } from 'gt-i18n/internal/types';\nimport { getI18nConfig } from '../../setup/i18nConfig';\nimport {\n getReadonlyConditionStore,\n isReadonlyConditionStoreInitialized,\n} from '../../condition-store/singleton-operations';\nimport { StringContent, StringFormat } from 'generaltranslation/types';\nimport { getReactI18nCache } from '../../i18n-cache/singleton-operations';\nimport { getShouldTranslate } from '../../hooks/utils/getShouldTranslate';\nimport { createDiagnosticMessage } from 'generaltranslation/internal';\n\n/**\n * Translate a message\n * @param {string} message - The message to translate.\n * @param {GTTranslationOptions} [options] - The options for the translation.\n * @returns {string} The translated message.\n *\n * @example\n * t('Hello, world!'); // Translates 'Hello, world!'\n *\n * @example\n * t('Hello, {name}!', { name: 'John' }); // Translates 'Hello, John!'\n *\n * @example\n * t`Hello, ${name}` // Translate via tagged template literal\n *\n */\nexport const t: StringOrTemplateSyncResolutionFunction = (\n messageOrStrings: string | TemplateStringsArray,\n ...values: unknown[]\n) => {\n // Warnings and errors\n enforceSSRRules(messageOrStrings);\n\n // t(\"Hello, {name}!\", { name: \"John\" })\n if (typeof messageOrStrings === 'string') {\n const options = values.at(0) as GTTranslationOptions | undefined;\n const locale = options?.$locale ?? getLocale();\n return resolveStringContent(\n locale,\n messageOrStrings,\n createLookupOptions(locale, options ?? {}, 'ICU')\n );\n }\n\n // t`Hello, ${name}`\n return handleTaggedTemplateLiteralTranslation(messageOrStrings, values);\n};\n\n// ----- Helper Functions ----- //\n\nexport function resolveStringContent(\n locale: string,\n content: StringContent,\n options: LookupOptionsFor<StringFormat> = {}\n): StringContent {\n const i18nCache = getReactI18nCache();\n const defaultLocale = getI18nConfig().getDefaultLocale();\n if (!getShouldTranslate()) {\n return interpolateMessage({\n options,\n source: content,\n sourceLocale: defaultLocale,\n });\n }\n\n const lookupOptions = createLookupOptions(locale, options, 'ICU');\n const translation = i18nCache.lookupTranslation(\n lookupOptions.$locale,\n content,\n lookupOptions\n );\n return interpolateMessage({\n source: content,\n target: translation,\n options: lookupOptions,\n sourceLocale: defaultLocale,\n });\n}\n\n/**\n * Handle tagged template literal translation\n * @param messageOrStrings - The message or strings to translate.\n * @param values - The values to interpolate.\n * @returns The translated message.\n *\n * This is triggered when there has been no compiler transformation\n *\n * Try looking up interpolated template first\n * If not found, resolve uninterpolated message\n */\nfunction handleTaggedTemplateLiteralTranslation(\n messageOrStrings: TemplateStringsArray,\n values: unknown[]\n): string {\n const locale = getLocale();\n // for tagged template literals, there has been no compiler transformation\n // (1) lookup interpolated template (aka derived message)\n const interpolatedTemplate = interpolateTemplateLiteral(\n messageOrStrings,\n values\n );\n const i18nCache = getReactI18nCache();\n const translatedInterpolatedTemplate = i18nCache.lookupTranslation(\n locale,\n interpolatedTemplate,\n { $format: 'STRING' }\n );\n if (translatedInterpolatedTemplate) return translatedInterpolatedTemplate;\n\n // (2) resolve uninterpolated message\n const { message, variables } = extractInterpolatableValues(\n messageOrStrings,\n values\n );\n return resolveStringContent(locale, message, variables);\n}\n\n/**\n * Given a TemplateStringsArray, and values, return the uninterpolated message and variables.\n * @param strings - The template strings.\n * @param values - The values to interpolate.\n * @returns The interpolated message and variables.\n */\nfunction extractInterpolatableValues(\n strings: TemplateStringsArray,\n values: unknown[]\n): {\n message: string;\n variables: Record<string, unknown>;\n} {\n // String parts\n const parts: string[] = [];\n // Variables\n const variables: Record<string, unknown> = {};\n let varIndex = 0;\n\n for (let i = 0; i < strings.length; i++) {\n // Add the cooked text from the quasi (use cooked to handle escape sequences)\n parts.push(strings[i]);\n\n // If there's a corresponding expression, create a variable placeholder\n if (i < values.length) {\n const key = varIndex.toString();\n parts.push(`{${key}}`);\n variables[key] = values[i];\n varIndex++;\n }\n }\n\n return {\n message: parts.join(''),\n variables,\n };\n}\n\n/**\n * Interpolate a template literal\n * @param message - The message to interpolate.\n * @param variables - The variables to interpolate.\n * @returns The interpolated message.\n */\nfunction interpolateTemplateLiteral(\n strings: TemplateStringsArray,\n values: unknown[]\n): string {\n return strings\n .map((string, index) => {\n return string + (values[index] ?? '');\n })\n .join('');\n}\n\n/**\n * Module-level t() only works for SPA.\n * We have to error or fallback in SSR.\n */\nfunction enforceSSRRules(messageOrStrings: string | TemplateStringsArray) {\n const ssrEnabled = getI18nConfig().getRenderStrategy() === 'server-render';\n const moduleLevel = !isReadonlyConditionStoreInitialized();\n if (!ssrEnabled || !moduleLevel) return;\n\n const message =\n typeof messageOrStrings === 'string'\n ? messageOrStrings\n : messageOrStrings.join('');\n const runtimeEnvironment = getRuntimeEnvironment();\n const errorMessage = createDiagnosticMessage({\n source: '@generaltranslation/react-core',\n severity: 'Error',\n whatHappened:\n 'Using the t() function at the module level is forbidden in server-rendered applications.',\n fix: 'Either move the t() invocation into a request-time scope or register the string with the msg() function and translate with an m() function. Ensure that you have added the <GTProvider> at the root of your component tree.',\n wayOut:\n runtimeEnvironment === 'development'\n ? undefined\n : 'Falling back to defaultLocale value.',\n details: `Message: \"${message}\"`,\n });\n if (getRuntimeEnvironment() === 'development') {\n throw new Error(errorMessage);\n } else {\n console.error(errorMessage);\n }\n}\n\nfunction getLocale(): string {\n return getReadonlyConditionStore().getLocale();\n}\n\n/**\n * Overloaded type for the `t` function.\n * - Tagged template: t`Hello, ${name}` (transformed by the compiler plugin at build time)\n * - Function call: t(\"Hello, {name}\", { name: \"John\" })\n *\n * {@link TemplateSyncResolutionFunction}\n * {@link SyncResolutionFunction}\n */\ninterface StringOrTemplateSyncResolutionFunction {\n (strings: TemplateStringsArray, ...values: unknown[]): string;\n (message: string, options?: GTTranslationOptions): string;\n}\n\n/**\n * Type for the `t` function when used as a tagged template literal.\n * @param strings - The template strings.\n * @param values - The values to interpolate.\n * @returns The translated message.\n */\ntype TemplateSyncResolutionFunction = (\n strings: TemplateStringsArray,\n ...values: unknown[]\n) => string;\n"],"mappings":"2fAiCA,MAAa,GACX,EACA,GAAG,IACA,CAKH,GAHA,EAAgB,EAAiB,CAG7B,OAAO,GAAqB,SAAU,CACxC,IAAM,EAAU,EAAO,GAAG,EAAE,CACtB,EAAS,GAAS,SAAW,GAAW,CAC9C,OAAO,EACL,EACA,EACA,EAAoB,EAAQ,GAAW,EAAE,CAAE,MAAM,CAClD,CAIH,OAAO,EAAuC,EAAkB,EAAO,EAKzE,SAAgB,EACd,EACA,EACA,EAA0C,EAAE,CAC7B,CACf,IAAM,EAAY,GAAmB,CAC/B,EAAgBA,GAAe,CAAC,kBAAkB,CACxD,GAAI,CAAC,GAAoB,CACvB,OAAO,EAAmB,CACxB,UACA,OAAQ,EACR,aAAc,EACf,CAAC,CAGJ,IAAM,EAAgB,EAAoB,EAAQ,EAAS,MAAM,CAMjE,OAAO,EAAmB,CACxB,OAAQ,EACR,OAPkB,EAAU,kBAC5B,EAAc,QACd,EACA,EAImB,CACnB,QAAS,EACT,aAAc,EACf,CAAC,CAcJ,SAAS,EACP,EACA,EACQ,CACR,IAAM,EAAS,GAAW,CAGpB,EAAuB,EAC3B,EACA,EACD,CAEK,EADY,GAC8B,CAAC,kBAC/C,EACA,EACA,CAAE,QAAS,SAAU,CACtB,CACD,GAAI,EAAgC,OAAO,EAG3C,GAAM,CAAE,UAAS,aAAc,EAC7B,EACA,EACD,CACD,OAAO,EAAqB,EAAQ,EAAS,EAAU,CASzD,SAAS,EACP,EACA,EAIA,CAEA,IAAM,EAAkB,EAAE,CAEpB,EAAqC,EAAE,CACzC,EAAW,EAEf,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAKlC,GAHA,EAAM,KAAK,EAAQ,GAAG,CAGlB,EAAI,EAAO,OAAQ,CACrB,IAAM,EAAM,EAAS,UAAU,CAC/B,EAAM,KAAK,IAAI,EAAI,GAAG,CACtB,EAAU,GAAO,EAAO,GACxB,IAIJ,MAAO,CACL,QAAS,EAAM,KAAK,GAAG,CACvB,YACD,CASH,SAAS,EACP,EACA,EACQ,CACR,OAAO,EACJ,KAAK,EAAQ,IACL,GAAU,EAAO,IAAU,IAClC,CACD,KAAK,GAAG,CAOb,SAAS,EAAgB,EAAiD,CACxE,IAAM,EAAaA,GAAe,CAAC,mBAAmB,GAAK,gBACrD,EAAc,CAACC,GAAqC,CAC1D,GAAI,CAAC,GAAc,CAAC,EAAa,OAEjC,IAAM,EACJ,OAAO,GAAqB,SACxB,EACA,EAAiB,KAAK,GAAG,CAEzB,EAAe,EAAwB,CAC3C,OAAQ,iCACR,SAAU,QACV,aACE,2FACF,IAAK,8NACL,OAPyB,GAQL,GAAK,cACnB,IAAA,GACA,uCACN,QAAS,aAAa,EAAQ,GAC/B,CAAC,CACF,GAAI,GAAuB,GAAK,cAC9B,MAAU,MAAM,EAAa,CAE7B,QAAQ,MAAM,EAAa,CAI/B,SAAS,GAAoB,CAC3B,OAAOC,GAA2B,CAAC,WAAW"}
@@ -0,0 +1,2 @@
1
+ const e=require(`../condition-store/singleton-operations.cjs`),t=require(`../context/context.cjs`);function n(){return t.useGTContext()?.conditionStore??e.getConditionStore()}function r(){return n().getLocale()}function i(){return n().getRegion()}function a(){return n().getEnableI18n()}exports.useConditionStore=n,exports.useEnableI18n=a,exports.useLocale=r,exports.useRegion=i;
2
+ //# sourceMappingURL=condition-store.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-store.cjs","names":["useGTContext","getReadonlyConditionStore"],"sources":["../../src/hooks/condition-store.ts"],"sourcesContent":["import { ReadonlyConditionStoreInterface } from 'gt-i18n/internal/types';\nimport { getReadonlyConditionStore } from '../condition-store/singleton-operations';\nimport { useGTContext } from '../context/context';\n\n/**\n * NOTE: useSetLocale() and useSetEnableI18n() are not implemented in @generaltranslation/react-core\n * Some server environments are read only, so we cannot implement these hooks.\n */\n\nexport function useConditionStore(): ReadonlyConditionStoreInterface {\n const context = useGTContext();\n return context?.conditionStore ?? getReadonlyConditionStore();\n}\n\n/**\n * Returns the current locale.\n */\nexport function useLocale(): string {\n return useConditionStore().getLocale();\n}\n\n/**\n * Returns the current region, or undefined if no region is set.\n */\nexport function useRegion(): string | undefined {\n return useConditionStore().getRegion();\n}\n\n/**\n * Returns the current enableI18n flag.\n */\nexport function useEnableI18n(): boolean {\n return useConditionStore().getEnableI18n();\n}\n"],"mappings":"mGASA,SAAgB,GAAqD,CAEnE,OADgBA,EAAAA,cACF,EAAE,gBAAkBC,EAAAA,mBAA2B,CAM/D,SAAgB,GAAoB,CAClC,OAAO,GAAmB,CAAC,WAAW,CAMxC,SAAgB,GAAgC,CAC9C,OAAO,GAAmB,CAAC,WAAW,CAMxC,SAAgB,GAAyB,CACvC,OAAO,GAAmB,CAAC,eAAe"}
@@ -0,0 +1,23 @@
1
+ import { ReadonlyConditionStoreInterface } from "gt-i18n/internal/types";
2
+
3
+ //#region src/hooks/condition-store.d.ts
4
+ /**
5
+ * NOTE: useSetLocale() and useSetEnableI18n() are not implemented in @generaltranslation/react-core
6
+ * Some server environments are read only, so we cannot implement these hooks.
7
+ */
8
+ declare function useConditionStore(): ReadonlyConditionStoreInterface;
9
+ /**
10
+ * Returns the current locale.
11
+ */
12
+ declare function useLocale(): string;
13
+ /**
14
+ * Returns the current region, or undefined if no region is set.
15
+ */
16
+ declare function useRegion(): string | undefined;
17
+ /**
18
+ * Returns the current enableI18n flag.
19
+ */
20
+ declare function useEnableI18n(): boolean;
21
+ //#endregion
22
+ export { useConditionStore, useEnableI18n, useLocale, useRegion };
23
+ //# sourceMappingURL=condition-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-store.d.ts","names":[],"sources":["../../src/hooks/condition-store.ts"],"mappings":";;;;;AASA;;iBAAgB,iBAAA,CAAA,GAAqB,+BAAA;;;AAQrC;iBAAgB,SAAA,CAAA;;;;iBAOA,SAAA,CAAA;;;;iBAOA,aAAA,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{getConditionStore as e}from"../condition-store/singleton-operations.mjs";import{useGTContext as t}from"../context/context.mjs";function n(){return t()?.conditionStore??e()}function r(){return n().getLocale()}function i(){return n().getRegion()}function a(){return n().getEnableI18n()}export{n as useConditionStore,a as useEnableI18n,r as useLocale,i as useRegion};
2
+ //# sourceMappingURL=condition-store.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-store.mjs","names":["getReadonlyConditionStore"],"sources":["../../src/hooks/condition-store.ts"],"sourcesContent":["import { ReadonlyConditionStoreInterface } from 'gt-i18n/internal/types';\nimport { getReadonlyConditionStore } from '../condition-store/singleton-operations';\nimport { useGTContext } from '../context/context';\n\n/**\n * NOTE: useSetLocale() and useSetEnableI18n() are not implemented in @generaltranslation/react-core\n * Some server environments are read only, so we cannot implement these hooks.\n */\n\nexport function useConditionStore(): ReadonlyConditionStoreInterface {\n const context = useGTContext();\n return context?.conditionStore ?? getReadonlyConditionStore();\n}\n\n/**\n * Returns the current locale.\n */\nexport function useLocale(): string {\n return useConditionStore().getLocale();\n}\n\n/**\n * Returns the current region, or undefined if no region is set.\n */\nexport function useRegion(): string | undefined {\n return useConditionStore().getRegion();\n}\n\n/**\n * Returns the current enableI18n flag.\n */\nexport function useEnableI18n(): boolean {\n return useConditionStore().getEnableI18n();\n}\n"],"mappings":"sIASA,SAAgB,GAAqD,CAEnE,OADgB,GACF,EAAE,gBAAkBA,GAA2B,CAM/D,SAAgB,GAAoB,CAClC,OAAO,GAAmB,CAAC,WAAW,CAMxC,SAAgB,GAAgC,CAC9C,OAAO,GAAmB,CAAC,WAAW,CAMxC,SAAgB,GAAyB,CACvC,OAAO,GAAmB,CAAC,eAAe"}
@@ -0,0 +1,2 @@
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`react`);function t(t,n,r){let i=(0,e.useRef)(0),a=(0,e.useCallback)(e=>n(n=>{t.current.has(r(n))&&(i.current++,e())}),[n,r,t]),o=(0,e.useCallback)(()=>i.current,[]);(0,e.useSyncExternalStore)(a,o,o)}const n=process.env.NODE_ENV===`production`?()=>{}:t;exports.useSubscribeToTrackedLookups=n;
2
+ //# sourceMappingURL=useSubscribeToTrackedLookups.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSubscribeToTrackedLookups.cjs","names":[],"sources":["../../../src/hooks/external-store/useSubscribeToTrackedLookups.ts"],"sourcesContent":["import {\n type RefObject,\n useCallback,\n useRef,\n useSyncExternalStore,\n} from 'react';\nimport type { StoreListener, Unsubscribe } from '../../i18n-store/storeTypes';\n\ntype UseSubscribeToTrackedLookups = <L>(\n trackedKeysRef: RefObject<Set<string> | null>,\n subscribeToEvents: (onEvent: (lookup: L) => void) => Unsubscribe,\n getListenerKey: (lookup: L) => string\n) => void;\n\n/**\n * Subscribe to store events, but only trigger re-renders when the event's\n * lookup is in the tracked keys set. Shared by the tracked translation and\n * dictionary resolvers, which differ only in the store subscribe method and the\n * listener-key function.\n *\n * Remember that we can make no assumptions about when the tracked set gets\n * updated. This is technically not pure, but it is an acceptable trade since it\n * only drives dev translation hot reload.\n */\nfunction useSubscribeToTrackedLookupsDev<L>(\n trackedKeysRef: RefObject<Set<string> | null>,\n subscribeToEvents: (onEvent: (lookup: L) => void) => Unsubscribe,\n getListenerKey: (lookup: L) => string\n) {\n // invalidation counter for triggering updates\n const versionRef = useRef(0);\n const subscribe = useCallback(\n (listener: StoreListener) => {\n return subscribeToEvents((lookup) => {\n if (!trackedKeysRef.current!.has(getListenerKey(lookup))) return;\n versionRef.current++;\n listener();\n });\n },\n [subscribeToEvents, getListenerKey, trackedKeysRef]\n );\n const getSnapshot = useCallback(() => versionRef.current, []);\n\n useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n}\n\nconst useSubscribeToTrackedLookupsProd: UseSubscribeToTrackedLookups = () => {};\n\nexport const useSubscribeToTrackedLookups: UseSubscribeToTrackedLookups =\n process.env.NODE_ENV === 'production'\n ? useSubscribeToTrackedLookupsProd\n : useSubscribeToTrackedLookupsDev;\n"],"mappings":"uEAwBA,SAAS,EACP,EACA,EACA,EACA,CAEA,IAAM,GAAA,EAAA,EAAA,QAAoB,EAAE,CACtB,GAAA,EAAA,EAAA,aACH,GACQ,EAAmB,GAAW,CAC9B,EAAe,QAAS,IAAI,EAAe,EAAO,CAAC,GACxD,EAAW,UACX,GAAU,GACV,CAEJ,CAAC,EAAmB,EAAgB,EAAe,CACpD,CACK,GAAA,EAAA,EAAA,iBAAgC,EAAW,QAAS,EAAE,CAAC,EAE7D,EAAA,EAAA,sBAAqB,EAAW,EAAa,EAAY,CAK3D,MAAa,EACX,QAAQ,IAAI,WAAa,iBAHkD,GAKvE"}
@@ -0,0 +1,2 @@
1
+ import{useCallback as e,useRef as t,useSyncExternalStore as n}from"react";function r(r,i,a){let o=t(0),s=e(e=>i(t=>{r.current.has(a(t))&&(o.current++,e())}),[i,a,r]),c=e(()=>o.current,[]);n(s,c,c)}const i=process.env.NODE_ENV===`production`?()=>{}:r;export{i as useSubscribeToTrackedLookups};
2
+ //# sourceMappingURL=useSubscribeToTrackedLookups.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSubscribeToTrackedLookups.mjs","names":[],"sources":["../../../src/hooks/external-store/useSubscribeToTrackedLookups.ts"],"sourcesContent":["import {\n type RefObject,\n useCallback,\n useRef,\n useSyncExternalStore,\n} from 'react';\nimport type { StoreListener, Unsubscribe } from '../../i18n-store/storeTypes';\n\ntype UseSubscribeToTrackedLookups = <L>(\n trackedKeysRef: RefObject<Set<string> | null>,\n subscribeToEvents: (onEvent: (lookup: L) => void) => Unsubscribe,\n getListenerKey: (lookup: L) => string\n) => void;\n\n/**\n * Subscribe to store events, but only trigger re-renders when the event's\n * lookup is in the tracked keys set. Shared by the tracked translation and\n * dictionary resolvers, which differ only in the store subscribe method and the\n * listener-key function.\n *\n * Remember that we can make no assumptions about when the tracked set gets\n * updated. This is technically not pure, but it is an acceptable trade since it\n * only drives dev translation hot reload.\n */\nfunction useSubscribeToTrackedLookupsDev<L>(\n trackedKeysRef: RefObject<Set<string> | null>,\n subscribeToEvents: (onEvent: (lookup: L) => void) => Unsubscribe,\n getListenerKey: (lookup: L) => string\n) {\n // invalidation counter for triggering updates\n const versionRef = useRef(0);\n const subscribe = useCallback(\n (listener: StoreListener) => {\n return subscribeToEvents((lookup) => {\n if (!trackedKeysRef.current!.has(getListenerKey(lookup))) return;\n versionRef.current++;\n listener();\n });\n },\n [subscribeToEvents, getListenerKey, trackedKeysRef]\n );\n const getSnapshot = useCallback(() => versionRef.current, []);\n\n useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n}\n\nconst useSubscribeToTrackedLookupsProd: UseSubscribeToTrackedLookups = () => {};\n\nexport const useSubscribeToTrackedLookups: UseSubscribeToTrackedLookups =\n process.env.NODE_ENV === 'production'\n ? useSubscribeToTrackedLookupsProd\n : useSubscribeToTrackedLookupsDev;\n"],"mappings":"0EAwBA,SAAS,EACP,EACA,EACA,EACA,CAEA,IAAM,EAAa,EAAO,EAAE,CACtB,EAAY,EACf,GACQ,EAAmB,GAAW,CAC9B,EAAe,QAAS,IAAI,EAAe,EAAO,CAAC,GACxD,EAAW,UACX,GAAU,GACV,CAEJ,CAAC,EAAmB,EAAgB,EAAe,CACpD,CACK,EAAc,MAAkB,EAAW,QAAS,EAAE,CAAC,CAE7D,EAAqB,EAAW,EAAa,EAAY,CAK3D,MAAa,EACX,QAAQ,IAAI,WAAa,iBAHkD,GAKvE"}
@@ -0,0 +1,2 @@
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../i18n-store/useI18nStore.cjs`),t=require(`../utils/missing-translation.cjs`),n=require(`./useSubscribeToTrackedLookups.cjs`);let r=require(`gt-i18n/internal`),i=require(`react`);function a(){let a=e.useDictionariesSnapshot(),o=e.useI18nStore(),s=process.env.NODE_ENV!==`production`&&(0,r.getI18nConfig)().isDevHotReloadEnabled(),c=t.useHandleMissingDictionaryObject(),l=(0,i.useRef)(null);return l.current??=new Set,n.useSubscribeToTrackedLookups(l,o.subscribeToDictionaryObjectEvents,r.getDictionaryListenerKey),(0,i.useCallback)(e=>{let t=(0,r.getDictionaryListenerKey)(e);s&&l.current.add(t);let n=o.getDictionaryObjectSnapshot(e,a);return n==null&&s&&c(e),n},[o,a,s,c])}exports.useTrackedDictionaryObjResolver=a;
2
+ //# sourceMappingURL=useTrackedDictionaryObjResolver.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTrackedDictionaryObjResolver.cjs","names":["useDictionariesSnapshot","useI18nStore","useHandleMissingDictionaryObject","getDictionaryListenerKey"],"sources":["../../../src/hooks/external-store/useTrackedDictionaryObjResolver.ts"],"sourcesContent":["import { getDictionaryListenerKey, getI18nConfig } from 'gt-i18n/internal';\nimport type {\n DictionaryLookup,\n DictionaryObjectSnapshot,\n} from '../../i18n-store/storeTypes';\nimport {\n useDictionariesSnapshot,\n useI18nStore,\n} from '../../i18n-store/useI18nStore';\nimport { useCallback, useRef } from 'react';\nimport { useHandleMissingDictionaryObject } from '../utils/missing-translation';\nimport { useSubscribeToTrackedLookups } from './useSubscribeToTrackedLookups';\n\nexport type TrackedDictionaryObjResolver = (\n lookup: DictionaryLookup\n) => DictionaryObjectSnapshot;\n\n// TODO: rename to useTrackedDictionaryObjectResolver\nexport function useTrackedDictionaryObjResolver(): TrackedDictionaryObjResolver {\n const dictionariesSnapshot = useDictionariesSnapshot();\n const i18nStore = useI18nStore();\n const devHotReloadEnabled =\n process.env.NODE_ENV !== 'production' &&\n getI18nConfig().isDevHotReloadEnabled();\n const onMissingDictionaryObj = useHandleMissingDictionaryObject();\n\n const trackedKeysRef = useRef<Set<string> | null>(null);\n if (trackedKeysRef.current == null) {\n trackedKeysRef.current = new Set();\n }\n\n // subscribe to dictionary object updates\n useSubscribeToTrackedLookups(\n trackedKeysRef,\n i18nStore.subscribeToDictionaryObjectEvents,\n getDictionaryListenerKey\n );\n\n // Resolution callback\n return useCallback(\n (lookup: DictionaryLookup) => {\n // Track the lookup for dev hot reload\n const lookupKey = getDictionaryListenerKey(lookup);\n if (devHotReloadEnabled) {\n trackedKeysRef.current!.add(lookupKey);\n }\n\n // Resolve the dictionary entry from the store\n const dictionaryObject = i18nStore.getDictionaryObjectSnapshot(\n lookup,\n dictionariesSnapshot\n );\n\n // Hot reload\n if (dictionaryObject == null && devHotReloadEnabled) {\n onMissingDictionaryObj(lookup);\n }\n\n return dictionaryObject;\n },\n [\n i18nStore,\n dictionariesSnapshot,\n devHotReloadEnabled,\n onMissingDictionaryObj,\n ]\n );\n}\n"],"mappings":"wPAkBA,SAAgB,GAAgE,CAC9E,IAAM,EAAuBA,EAAAA,yBAAyB,CAChD,EAAYC,EAAAA,cAAc,CAC1B,EACJ,QAAQ,IAAI,WAAa,eAAA,EAAA,EAAA,gBACV,CAAC,uBAAuB,CACnC,EAAyBC,EAAAA,kCAAkC,CAE3D,GAAA,EAAA,EAAA,QAA4C,KAAK,CAavD,MAZA,CACE,EAAe,UAAU,IAAI,IAI/B,EAAA,6BACE,EACA,EAAU,kCACVC,EAAAA,yBACD,EAGD,EAAA,EAAA,aACG,GAA6B,CAE5B,IAAM,GAAA,EAAA,EAAA,0BAAqC,EAAO,CAC9C,GACF,EAAe,QAAS,IAAI,EAAU,CAIxC,IAAM,EAAmB,EAAU,4BACjC,EACA,EACD,CAOD,OAJI,GAAoB,MAAQ,GAC9B,EAAuB,EAAO,CAGzB,GAET,CACE,EACA,EACA,EACA,EACD,CACF"}
@@ -0,0 +1,2 @@
1
+ import{useDictionariesSnapshot as e,useI18nStore as t}from"../../i18n-store/useI18nStore.mjs";import{useHandleMissingDictionaryObject as n}from"../utils/missing-translation.mjs";import{useSubscribeToTrackedLookups as r}from"./useSubscribeToTrackedLookups.mjs";import{getDictionaryListenerKey as i,getI18nConfig as a}from"gt-i18n/internal";import{useCallback as o,useRef as s}from"react";function c(){let c=e(),l=t(),u=process.env.NODE_ENV!==`production`&&a().isDevHotReloadEnabled(),d=n(),f=s(null);return f.current??=new Set,r(f,l.subscribeToDictionaryObjectEvents,i),o(e=>{let t=i(e);u&&f.current.add(t);let n=l.getDictionaryObjectSnapshot(e,c);return n==null&&u&&d(e),n},[l,c,u,d])}export{c as useTrackedDictionaryObjResolver};
2
+ //# sourceMappingURL=useTrackedDictionaryObjResolver.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTrackedDictionaryObjResolver.mjs","names":[],"sources":["../../../src/hooks/external-store/useTrackedDictionaryObjResolver.ts"],"sourcesContent":["import { getDictionaryListenerKey, getI18nConfig } from 'gt-i18n/internal';\nimport type {\n DictionaryLookup,\n DictionaryObjectSnapshot,\n} from '../../i18n-store/storeTypes';\nimport {\n useDictionariesSnapshot,\n useI18nStore,\n} from '../../i18n-store/useI18nStore';\nimport { useCallback, useRef } from 'react';\nimport { useHandleMissingDictionaryObject } from '../utils/missing-translation';\nimport { useSubscribeToTrackedLookups } from './useSubscribeToTrackedLookups';\n\nexport type TrackedDictionaryObjResolver = (\n lookup: DictionaryLookup\n) => DictionaryObjectSnapshot;\n\n// TODO: rename to useTrackedDictionaryObjectResolver\nexport function useTrackedDictionaryObjResolver(): TrackedDictionaryObjResolver {\n const dictionariesSnapshot = useDictionariesSnapshot();\n const i18nStore = useI18nStore();\n const devHotReloadEnabled =\n process.env.NODE_ENV !== 'production' &&\n getI18nConfig().isDevHotReloadEnabled();\n const onMissingDictionaryObj = useHandleMissingDictionaryObject();\n\n const trackedKeysRef = useRef<Set<string> | null>(null);\n if (trackedKeysRef.current == null) {\n trackedKeysRef.current = new Set();\n }\n\n // subscribe to dictionary object updates\n useSubscribeToTrackedLookups(\n trackedKeysRef,\n i18nStore.subscribeToDictionaryObjectEvents,\n getDictionaryListenerKey\n );\n\n // Resolution callback\n return useCallback(\n (lookup: DictionaryLookup) => {\n // Track the lookup for dev hot reload\n const lookupKey = getDictionaryListenerKey(lookup);\n if (devHotReloadEnabled) {\n trackedKeysRef.current!.add(lookupKey);\n }\n\n // Resolve the dictionary entry from the store\n const dictionaryObject = i18nStore.getDictionaryObjectSnapshot(\n lookup,\n dictionariesSnapshot\n );\n\n // Hot reload\n if (dictionaryObject == null && devHotReloadEnabled) {\n onMissingDictionaryObj(lookup);\n }\n\n return dictionaryObject;\n },\n [\n i18nStore,\n dictionariesSnapshot,\n devHotReloadEnabled,\n onMissingDictionaryObj,\n ]\n );\n}\n"],"mappings":"mYAkBA,SAAgB,GAAgE,CAC9E,IAAM,EAAuB,GAAyB,CAChD,EAAY,GAAc,CAC1B,EACJ,QAAQ,IAAI,WAAa,cACzB,GAAe,CAAC,uBAAuB,CACnC,EAAyB,GAAkC,CAE3D,EAAiB,EAA2B,KAAK,CAavD,MAZA,CACE,EAAe,UAAU,IAAI,IAI/B,EACE,EACA,EAAU,kCACV,EACD,CAGM,EACJ,GAA6B,CAE5B,IAAM,EAAY,EAAyB,EAAO,CAC9C,GACF,EAAe,QAAS,IAAI,EAAU,CAIxC,IAAM,EAAmB,EAAU,4BACjC,EACA,EACD,CAOD,OAJI,GAAoB,MAAQ,GAC9B,EAAuB,EAAO,CAGzB,GAET,CACE,EACA,EACA,EACA,EACD,CACF"}
@@ -0,0 +1,2 @@
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../i18n-store/useI18nStore.cjs`),t=require(`../utils/missing-translation.cjs`),n=require(`./useSubscribeToTrackedLookups.cjs`);let r=require(`gt-i18n/internal`),i=require(`react`);function a(){let a=e.useDictionariesSnapshot(),o=e.useI18nStore(),s=process.env.NODE_ENV!==`production`&&(0,r.getI18nConfig)().isDevHotReloadEnabled(),c=t.useHandleMissingDictionaryEntry(),l=(0,i.useRef)(null);return l.current??=new Set,n.useSubscribeToTrackedLookups(l,o.subscribeToDictionaryEntryEvents,r.getDictionaryListenerKey),(0,i.useCallback)(e=>{let t=(0,r.getDictionaryListenerKey)(e);s&&l.current.add(t);let n=o.getDictionaryEntrySnapshot(e,a);return n==null&&s&&c(e),n},[o,a,s,c])}exports.useTrackedDictionaryResolver=a;
2
+ //# sourceMappingURL=useTrackedDictionaryResolver.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTrackedDictionaryResolver.cjs","names":["useDictionariesSnapshot","useI18nStore","useHandleMissingDictionaryEntry","getDictionaryListenerKey"],"sources":["../../../src/hooks/external-store/useTrackedDictionaryResolver.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport {\n useDictionariesSnapshot,\n useI18nStore,\n} from '../../i18n-store/useI18nStore';\nimport type {\n DictionaryEntrySnapshot,\n DictionaryLookup,\n} from '../../i18n-store/storeTypes';\nimport { getDictionaryListenerKey, getI18nConfig } from 'gt-i18n/internal';\nimport { useHandleMissingDictionaryEntry } from '../utils/missing-translation';\nimport { useSubscribeToTrackedLookups } from './useSubscribeToTrackedLookups';\n\nexport type TrackedDictionaryEntryResolver = (\n lookup: DictionaryLookup\n) => DictionaryEntrySnapshot;\n\n// TODO: rename to useTrackedDictionaryEntryResolver\nexport function useTrackedDictionaryResolver(): TrackedDictionaryEntryResolver {\n const dictionariesSnapshot = useDictionariesSnapshot();\n const i18nStore = useI18nStore();\n const devHotReloadEnabled =\n process.env.NODE_ENV !== 'production' &&\n getI18nConfig().isDevHotReloadEnabled();\n const onMissingDictionaryEntry = useHandleMissingDictionaryEntry();\n\n const trackedKeysRef = useRef<Set<string> | null>(null);\n if (trackedKeysRef.current == null) {\n trackedKeysRef.current = new Set();\n }\n\n // subscribe to dictionary entry updates\n useSubscribeToTrackedLookups(\n trackedKeysRef,\n i18nStore.subscribeToDictionaryEntryEvents,\n getDictionaryListenerKey\n );\n\n // Resolution callback\n return useCallback(\n (lookup: DictionaryLookup) => {\n // Track the lookup for dev hot reload\n const lookupKey = getDictionaryListenerKey(lookup);\n if (devHotReloadEnabled) {\n trackedKeysRef.current!.add(lookupKey);\n }\n\n // Resolve the dictionary entry from the store\n const dictionaryEntry = i18nStore.getDictionaryEntrySnapshot(\n lookup,\n dictionariesSnapshot\n );\n\n // Hot reload\n if (dictionaryEntry == null && devHotReloadEnabled) {\n onMissingDictionaryEntry(lookup);\n }\n\n return dictionaryEntry;\n },\n [\n i18nStore,\n dictionariesSnapshot,\n devHotReloadEnabled,\n onMissingDictionaryEntry,\n ]\n );\n}\n"],"mappings":"wPAkBA,SAAgB,GAA+D,CAC7E,IAAM,EAAuBA,EAAAA,yBAAyB,CAChD,EAAYC,EAAAA,cAAc,CAC1B,EACJ,QAAQ,IAAI,WAAa,eAAA,EAAA,EAAA,gBACV,CAAC,uBAAuB,CACnC,EAA2BC,EAAAA,iCAAiC,CAE5D,GAAA,EAAA,EAAA,QAA4C,KAAK,CAavD,MAZA,CACE,EAAe,UAAU,IAAI,IAI/B,EAAA,6BACE,EACA,EAAU,iCACVC,EAAAA,yBACD,EAGD,EAAA,EAAA,aACG,GAA6B,CAE5B,IAAM,GAAA,EAAA,EAAA,0BAAqC,EAAO,CAC9C,GACF,EAAe,QAAS,IAAI,EAAU,CAIxC,IAAM,EAAkB,EAAU,2BAChC,EACA,EACD,CAOD,OAJI,GAAmB,MAAQ,GAC7B,EAAyB,EAAO,CAG3B,GAET,CACE,EACA,EACA,EACA,EACD,CACF"}
@@ -0,0 +1,2 @@
1
+ import{useDictionariesSnapshot as e,useI18nStore as t}from"../../i18n-store/useI18nStore.mjs";import{useHandleMissingDictionaryEntry as n}from"../utils/missing-translation.mjs";import{useSubscribeToTrackedLookups as r}from"./useSubscribeToTrackedLookups.mjs";import{getDictionaryListenerKey as i,getI18nConfig as a}from"gt-i18n/internal";import{useCallback as o,useRef as s}from"react";function c(){let c=e(),l=t(),u=process.env.NODE_ENV!==`production`&&a().isDevHotReloadEnabled(),d=n(),f=s(null);return f.current??=new Set,r(f,l.subscribeToDictionaryEntryEvents,i),o(e=>{let t=i(e);u&&f.current.add(t);let n=l.getDictionaryEntrySnapshot(e,c);return n==null&&u&&d(e),n},[l,c,u,d])}export{c as useTrackedDictionaryResolver};
2
+ //# sourceMappingURL=useTrackedDictionaryResolver.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTrackedDictionaryResolver.mjs","names":[],"sources":["../../../src/hooks/external-store/useTrackedDictionaryResolver.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport {\n useDictionariesSnapshot,\n useI18nStore,\n} from '../../i18n-store/useI18nStore';\nimport type {\n DictionaryEntrySnapshot,\n DictionaryLookup,\n} from '../../i18n-store/storeTypes';\nimport { getDictionaryListenerKey, getI18nConfig } from 'gt-i18n/internal';\nimport { useHandleMissingDictionaryEntry } from '../utils/missing-translation';\nimport { useSubscribeToTrackedLookups } from './useSubscribeToTrackedLookups';\n\nexport type TrackedDictionaryEntryResolver = (\n lookup: DictionaryLookup\n) => DictionaryEntrySnapshot;\n\n// TODO: rename to useTrackedDictionaryEntryResolver\nexport function useTrackedDictionaryResolver(): TrackedDictionaryEntryResolver {\n const dictionariesSnapshot = useDictionariesSnapshot();\n const i18nStore = useI18nStore();\n const devHotReloadEnabled =\n process.env.NODE_ENV !== 'production' &&\n getI18nConfig().isDevHotReloadEnabled();\n const onMissingDictionaryEntry = useHandleMissingDictionaryEntry();\n\n const trackedKeysRef = useRef<Set<string> | null>(null);\n if (trackedKeysRef.current == null) {\n trackedKeysRef.current = new Set();\n }\n\n // subscribe to dictionary entry updates\n useSubscribeToTrackedLookups(\n trackedKeysRef,\n i18nStore.subscribeToDictionaryEntryEvents,\n getDictionaryListenerKey\n );\n\n // Resolution callback\n return useCallback(\n (lookup: DictionaryLookup) => {\n // Track the lookup for dev hot reload\n const lookupKey = getDictionaryListenerKey(lookup);\n if (devHotReloadEnabled) {\n trackedKeysRef.current!.add(lookupKey);\n }\n\n // Resolve the dictionary entry from the store\n const dictionaryEntry = i18nStore.getDictionaryEntrySnapshot(\n lookup,\n dictionariesSnapshot\n );\n\n // Hot reload\n if (dictionaryEntry == null && devHotReloadEnabled) {\n onMissingDictionaryEntry(lookup);\n }\n\n return dictionaryEntry;\n },\n [\n i18nStore,\n dictionariesSnapshot,\n devHotReloadEnabled,\n onMissingDictionaryEntry,\n ]\n );\n}\n"],"mappings":"kYAkBA,SAAgB,GAA+D,CAC7E,IAAM,EAAuB,GAAyB,CAChD,EAAY,GAAc,CAC1B,EACJ,QAAQ,IAAI,WAAa,cACzB,GAAe,CAAC,uBAAuB,CACnC,EAA2B,GAAiC,CAE5D,EAAiB,EAA2B,KAAK,CAavD,MAZA,CACE,EAAe,UAAU,IAAI,IAI/B,EACE,EACA,EAAU,iCACV,EACD,CAGM,EACJ,GAA6B,CAE5B,IAAM,EAAY,EAAyB,EAAO,CAC9C,GACF,EAAe,QAAS,IAAI,EAAU,CAIxC,IAAM,EAAkB,EAAU,2BAChC,EACA,EACD,CAOD,OAJI,GAAmB,MAAQ,GAC7B,EAAyB,EAAO,CAG3B,GAET,CACE,EACA,EACA,EACA,EACD,CACF"}
@@ -0,0 +1,2 @@
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../condition-store.cjs`),t=require(`../utils.cjs`),n=require(`../../i18n-store/useI18nStore.cjs`),r=require(`../utils/missing-translation.cjs`),i=require(`./useSubscribeToTrackedLookups.cjs`);let a=require(`gt-i18n/internal`),o=require(`react`);function s(e=[]){let t=n.useTranslationsSnapshot(),s=n.useI18nStore(),l=process.env.NODE_ENV!==`production`&&(0,a.getI18nConfig)().isDevHotReloadEnabled(),u=r.useHandleMissingTranslation(),d=(0,o.useRef)(null);return d.current??=new Set,c(e,d),i.useSubscribeToTrackedLookups(d,s.subscribeToTranslationEvents,a.getTranslateListenerKey),(0,o.useCallback)(e=>{let n=(0,a.getTranslateListenerKey)(e);l&&d.current.add(n);let r=s.getTranslateSnapshot(e,t);return r==null&&l&&u(e),r},[s,t,u,l])}function c(r,i){let s=n.useI18nStore(),c=e.useLocale(),l=process.env.NODE_ENV!==`production`&&(0,a.getI18nConfig)().isDevHotReloadEnabled(),u=t.useShouldTranslate(),d=n.useTranslationsSnapshot(),f=(0,o.useMemo)(()=>r?.length>0&&u&&l,[r,u,l]),p=(0,o.useMemo)(()=>f?r.map(({message:e,...t})=>{let n=t.$locale??c,r={locale:n,message:e,options:(0,a.createLookupOptions)(n,t,`ICU`)};return[r,(0,a.getTranslateListenerKey)(r)]}):[],[c,f,r]);f&&p.forEach(([,e])=>{i.current.add(e)}),(0,o.useEffect)(()=>{f&&p.filter(([e])=>s.getTranslateSnapshot(e,d)==null).forEach(([e])=>s.translate(e))},[f,s,p,d])}exports.useTrackedTranslationResolver=s;
2
+ //# sourceMappingURL=useTrackedTranslationResolver.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTrackedTranslationResolver.cjs","names":["useTranslationsSnapshot","useI18nStore","useHandleMissingTranslation","getTranslateListenerKey","useLocale","useShouldTranslate"],"sources":["../../../src/hooks/external-store/useTrackedTranslationResolver.ts"],"sourcesContent":["import { type RefObject, useCallback, useEffect, useMemo, useRef } from 'react';\nimport {\n createLookupOptions,\n getI18nConfig,\n getTranslateListenerKey,\n} from 'gt-i18n/internal';\nimport type { Translation } from 'gt-i18n/types';\nimport type {\n TranslateLookup,\n TranslateSnapshot,\n} from '../../i18n-store/storeTypes';\nimport type { TranslationMetadata } from 'gt-i18n/internal/types';\nimport type { StringFormat } from '@generaltranslation/format';\nimport { useLocale } from '../condition-store';\nimport { useShouldTranslate } from '../utils';\nimport {\n useI18nStore,\n useTranslationsSnapshot,\n} from '../../i18n-store/useI18nStore';\nimport { useHandleMissingTranslation } from '../utils/missing-translation';\nimport { useSubscribeToTrackedLookups } from './useSubscribeToTrackedLookups';\n\n/**\n * Returns the translation, but also triggers a translation if it is not found\n * when dev hot reload is enabled.\n */\nexport type TrackedTranslationResolver = <T extends Translation>(\n lookup: TranslateLookup<T>\n) => TranslateSnapshot<T>;\n\nexport type Message = TranslationMetadata & {\n message: string;\n};\n\n/**\n * NOTE:\n * gt() may be called during render, so tracking intentionally only mutates\n * hook-local refs. This widens the event filter used by our existing\n * useSyncExternalStore subscription, but does not update React state or mutate\n * the translation cache during render.\n *\n * A render that is later aborted may leave behind an extra tracked key. That is\n * acceptable for dev hot reload because the worst case is an unnecessary\n * invalidation for this hook instance, not incorrect rendered output.\n */\n\nexport function useTrackedTranslationResolver(\n messages: Message[] = []\n): TrackedTranslationResolver {\n const translationsSnapshot = useTranslationsSnapshot();\n const i18nStore = useI18nStore();\n const devHotReloadEnabled =\n process.env.NODE_ENV !== 'production' &&\n getI18nConfig().isDevHotReloadEnabled();\n const onMissingTranslation = useHandleMissingTranslation();\n\n /**\n * Track lookups per hook instance without updating React state during render.\n */\n const trackedKeysRef = useRef<Set<string> | null>(null);\n if (trackedKeysRef.current == null) {\n trackedKeysRef.current = new Set();\n }\n\n // (optimization) Pre-subscribe to compiler-injected lookups\n usePreloadCompilerLookups(messages, trackedKeysRef);\n\n // (tx hot reload) Subscribe to translation updates\n useSubscribeToTrackedLookups(\n trackedKeysRef,\n i18nStore.subscribeToTranslationEvents,\n getTranslateListenerKey\n );\n\n /**\n * Remember that we can make no assumptions about when this cb gets invoked\n * - Resolves translation from lookup\n * - enqueues dev hot reload (if needed)\n */\n return useCallback(\n <T extends Translation>(\n lookup: TranslateLookup<T>\n ): TranslateSnapshot<T> => {\n // Track the lookup for dev hot reload\n const lookupKey = getTranslateListenerKey(lookup);\n if (devHotReloadEnabled) {\n trackedKeysRef.current!.add(lookupKey);\n }\n\n // Resolve the translation from the store\n const translation = i18nStore.getTranslateSnapshot(\n lookup,\n translationsSnapshot\n );\n\n // Trigger a hot reload if the translation is not found\n if (translation == null && devHotReloadEnabled) {\n onMissingTranslation(lookup);\n }\n return translation;\n },\n [i18nStore, translationsSnapshot, onMissingTranslation, devHotReloadEnabled]\n );\n}\n\n/**\n * Pre-subscribe to compiler-injected lookups\n * trigger translations for them\n *\n * This ref mutation is safe because this is translation hot reload only\n * and effects are deterministic\n */\nfunction usePreloadCompilerLookups(\n messages: Message[],\n trackedKeysRef: RefObject<Set<string> | null>\n) {\n const i18nStore = useI18nStore();\n const locale = useLocale();\n const devHotReloadEnabled =\n process.env.NODE_ENV !== 'production' &&\n getI18nConfig().isDevHotReloadEnabled();\n const shouldTranslate = useShouldTranslate();\n const translationsSnapshot = useTranslationsSnapshot();\n const txHotReloadEnabled = useMemo(() => {\n return messages?.length > 0 && shouldTranslate && devHotReloadEnabled;\n }, [messages, shouldTranslate, devHotReloadEnabled]);\n\n // Precompute as much as we can\n const lookups: [TranslateLookup<string>, string][] = useMemo(() => {\n if (!txHotReloadEnabled) return [];\n return messages.map(({ message, ...options }) => {\n const targetLocale = options.$locale ?? locale;\n const lookupOptions = createLookupOptions<StringFormat>(\n targetLocale,\n options,\n 'ICU'\n );\n const lookup = {\n locale: targetLocale,\n message,\n options: lookupOptions,\n };\n return [lookup, getTranslateListenerKey(lookup)];\n });\n }, [locale, txHotReloadEnabled, messages]);\n\n // Pre-subscribe to the lookups\n if (txHotReloadEnabled) {\n lookups.forEach(([, lookupKey]) => {\n trackedKeysRef.current!.add(lookupKey);\n });\n }\n\n /**\n * Delegate non-pure operations to post commit\n *\n * (Optimization) Trigger a hot reload if the translation is not found\n * for compiler-injected lookups\n *\n * TODO: for use() + suspense strategy, use a Promise.all()\n * TODO: server side translation invocation\n */\n useEffect(() => {\n if (!txHotReloadEnabled) return;\n\n lookups\n .filter(\n ([lookup]) =>\n i18nStore.getTranslateSnapshot(lookup, translationsSnapshot) == null\n )\n .forEach(([lookup]) => i18nStore.translate(lookup));\n }, [txHotReloadEnabled, i18nStore, lookups, translationsSnapshot]);\n}\n"],"mappings":"sTA8CA,SAAgB,EACd,EAAsB,EAAE,CACI,CAC5B,IAAM,EAAuBA,EAAAA,yBAAyB,CAChD,EAAYC,EAAAA,cAAc,CAC1B,EACJ,QAAQ,IAAI,WAAa,eAAA,EAAA,EAAA,gBACV,CAAC,uBAAuB,CACnC,EAAuBC,EAAAA,6BAA6B,CAKpD,GAAA,EAAA,EAAA,QAA4C,KAAK,CAoBvD,MAnBA,CACE,EAAe,UAAU,IAAI,IAI/B,EAA0B,EAAU,EAAe,CAGnD,EAAA,6BACE,EACA,EAAU,6BACVC,EAAAA,wBACD,EAOD,EAAA,EAAA,aAEI,GACyB,CAEzB,IAAM,GAAA,EAAA,EAAA,yBAAoC,EAAO,CAC7C,GACF,EAAe,QAAS,IAAI,EAAU,CAIxC,IAAM,EAAc,EAAU,qBAC5B,EACA,EACD,CAMD,OAHI,GAAe,MAAQ,GACzB,EAAqB,EAAO,CAEvB,GAET,CAAC,EAAW,EAAsB,EAAsB,EAAoB,CAC7E,CAUH,SAAS,EACP,EACA,EACA,CACA,IAAM,EAAYF,EAAAA,cAAc,CAC1B,EAASG,EAAAA,WAAW,CACpB,EACJ,QAAQ,IAAI,WAAa,eAAA,EAAA,EAAA,gBACV,CAAC,uBAAuB,CACnC,EAAkBC,EAAAA,oBAAoB,CACtC,EAAuBL,EAAAA,yBAAyB,CAChD,GAAA,EAAA,EAAA,aACG,GAAU,OAAS,GAAK,GAAmB,EACjD,CAAC,EAAU,EAAiB,EAAoB,CAAC,CAG9C,GAAA,EAAA,EAAA,aACC,EACE,EAAS,KAAK,CAAE,UAAS,GAAG,KAAc,CAC/C,IAAM,EAAe,EAAQ,SAAW,EAMlC,EAAS,CACb,OAAQ,EACR,UACA,SAAA,EAAA,EAAA,qBAPA,EACA,EACA,MAKsB,CACvB,CACD,MAAO,CAAC,GAAA,EAAA,EAAA,yBAAgC,EAAO,CAAC,EAChD,CAd8B,EAAE,CAejC,CAAC,EAAQ,EAAoB,EAAS,CAAC,CAGtC,GACF,EAAQ,SAAS,EAAG,KAAe,CACjC,EAAe,QAAS,IAAI,EAAU,EACtC,EAYJ,EAAA,EAAA,eAAgB,CACT,GAEL,EACG,QACE,CAAC,KACA,EAAU,qBAAqB,EAAQ,EAAqB,EAAI,KACnE,CACA,SAAS,CAAC,KAAY,EAAU,UAAU,EAAO,CAAC,EACpD,CAAC,EAAoB,EAAW,EAAS,EAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Translation } from "gt-i18n/types";
2
+ import { TranslationMetadata } from "gt-i18n/internal/types";
3
+
4
+ //#region src/hooks/external-store/useTrackedTranslationResolver.d.ts
5
+ type Message = TranslationMetadata & {
6
+ message: string;
7
+ };
8
+ //#endregion
9
+ export { Message };
10
+ //# sourceMappingURL=useTrackedTranslationResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTrackedTranslationResolver.d.ts","names":[],"sources":["../../../src/hooks/external-store/useTrackedTranslationResolver.ts"],"mappings":";;;;KA8BY,OAAA,GAAU,mBAAA;EACpB,OAAA;AAAA"}
@@ -0,0 +1,2 @@
1
+ import{useLocale as e}from"../condition-store.mjs";import{useShouldTranslate as t}from"../utils.mjs";import{useI18nStore as n,useTranslationsSnapshot as r}from"../../i18n-store/useI18nStore.mjs";import{useHandleMissingTranslation as i}from"../utils/missing-translation.mjs";import{useSubscribeToTrackedLookups as a}from"./useSubscribeToTrackedLookups.mjs";import{createLookupOptions as o,getI18nConfig as s,getTranslateListenerKey as c}from"gt-i18n/internal";import{useCallback as l,useEffect as u,useMemo as d,useRef as f}from"react";function p(e=[]){let t=r(),o=n(),u=process.env.NODE_ENV!==`production`&&s().isDevHotReloadEnabled(),d=i(),p=f(null);return p.current??=new Set,m(e,p),a(p,o.subscribeToTranslationEvents,c),l(e=>{let n=c(e);u&&p.current.add(n);let r=o.getTranslateSnapshot(e,t);return r==null&&u&&d(e),r},[o,t,d,u])}function m(i,a){let l=n(),f=e(),p=process.env.NODE_ENV!==`production`&&s().isDevHotReloadEnabled(),m=t(),h=r(),g=d(()=>i?.length>0&&m&&p,[i,m,p]),_=d(()=>g?i.map(({message:e,...t})=>{let n=t.$locale??f,r={locale:n,message:e,options:o(n,t,`ICU`)};return[r,c(r)]}):[],[f,g,i]);g&&_.forEach(([,e])=>{a.current.add(e)}),u(()=>{g&&_.filter(([e])=>l.getTranslateSnapshot(e,h)==null).forEach(([e])=>l.translate(e))},[g,l,_,h])}export{p as useTrackedTranslationResolver};
2
+ //# sourceMappingURL=useTrackedTranslationResolver.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTrackedTranslationResolver.mjs","names":[],"sources":["../../../src/hooks/external-store/useTrackedTranslationResolver.ts"],"sourcesContent":["import { type RefObject, useCallback, useEffect, useMemo, useRef } from 'react';\nimport {\n createLookupOptions,\n getI18nConfig,\n getTranslateListenerKey,\n} from 'gt-i18n/internal';\nimport type { Translation } from 'gt-i18n/types';\nimport type {\n TranslateLookup,\n TranslateSnapshot,\n} from '../../i18n-store/storeTypes';\nimport type { TranslationMetadata } from 'gt-i18n/internal/types';\nimport type { StringFormat } from '@generaltranslation/format';\nimport { useLocale } from '../condition-store';\nimport { useShouldTranslate } from '../utils';\nimport {\n useI18nStore,\n useTranslationsSnapshot,\n} from '../../i18n-store/useI18nStore';\nimport { useHandleMissingTranslation } from '../utils/missing-translation';\nimport { useSubscribeToTrackedLookups } from './useSubscribeToTrackedLookups';\n\n/**\n * Returns the translation, but also triggers a translation if it is not found\n * when dev hot reload is enabled.\n */\nexport type TrackedTranslationResolver = <T extends Translation>(\n lookup: TranslateLookup<T>\n) => TranslateSnapshot<T>;\n\nexport type Message = TranslationMetadata & {\n message: string;\n};\n\n/**\n * NOTE:\n * gt() may be called during render, so tracking intentionally only mutates\n * hook-local refs. This widens the event filter used by our existing\n * useSyncExternalStore subscription, but does not update React state or mutate\n * the translation cache during render.\n *\n * A render that is later aborted may leave behind an extra tracked key. That is\n * acceptable for dev hot reload because the worst case is an unnecessary\n * invalidation for this hook instance, not incorrect rendered output.\n */\n\nexport function useTrackedTranslationResolver(\n messages: Message[] = []\n): TrackedTranslationResolver {\n const translationsSnapshot = useTranslationsSnapshot();\n const i18nStore = useI18nStore();\n const devHotReloadEnabled =\n process.env.NODE_ENV !== 'production' &&\n getI18nConfig().isDevHotReloadEnabled();\n const onMissingTranslation = useHandleMissingTranslation();\n\n /**\n * Track lookups per hook instance without updating React state during render.\n */\n const trackedKeysRef = useRef<Set<string> | null>(null);\n if (trackedKeysRef.current == null) {\n trackedKeysRef.current = new Set();\n }\n\n // (optimization) Pre-subscribe to compiler-injected lookups\n usePreloadCompilerLookups(messages, trackedKeysRef);\n\n // (tx hot reload) Subscribe to translation updates\n useSubscribeToTrackedLookups(\n trackedKeysRef,\n i18nStore.subscribeToTranslationEvents,\n getTranslateListenerKey\n );\n\n /**\n * Remember that we can make no assumptions about when this cb gets invoked\n * - Resolves translation from lookup\n * - enqueues dev hot reload (if needed)\n */\n return useCallback(\n <T extends Translation>(\n lookup: TranslateLookup<T>\n ): TranslateSnapshot<T> => {\n // Track the lookup for dev hot reload\n const lookupKey = getTranslateListenerKey(lookup);\n if (devHotReloadEnabled) {\n trackedKeysRef.current!.add(lookupKey);\n }\n\n // Resolve the translation from the store\n const translation = i18nStore.getTranslateSnapshot(\n lookup,\n translationsSnapshot\n );\n\n // Trigger a hot reload if the translation is not found\n if (translation == null && devHotReloadEnabled) {\n onMissingTranslation(lookup);\n }\n return translation;\n },\n [i18nStore, translationsSnapshot, onMissingTranslation, devHotReloadEnabled]\n );\n}\n\n/**\n * Pre-subscribe to compiler-injected lookups\n * trigger translations for them\n *\n * This ref mutation is safe because this is translation hot reload only\n * and effects are deterministic\n */\nfunction usePreloadCompilerLookups(\n messages: Message[],\n trackedKeysRef: RefObject<Set<string> | null>\n) {\n const i18nStore = useI18nStore();\n const locale = useLocale();\n const devHotReloadEnabled =\n process.env.NODE_ENV !== 'production' &&\n getI18nConfig().isDevHotReloadEnabled();\n const shouldTranslate = useShouldTranslate();\n const translationsSnapshot = useTranslationsSnapshot();\n const txHotReloadEnabled = useMemo(() => {\n return messages?.length > 0 && shouldTranslate && devHotReloadEnabled;\n }, [messages, shouldTranslate, devHotReloadEnabled]);\n\n // Precompute as much as we can\n const lookups: [TranslateLookup<string>, string][] = useMemo(() => {\n if (!txHotReloadEnabled) return [];\n return messages.map(({ message, ...options }) => {\n const targetLocale = options.$locale ?? locale;\n const lookupOptions = createLookupOptions<StringFormat>(\n targetLocale,\n options,\n 'ICU'\n );\n const lookup = {\n locale: targetLocale,\n message,\n options: lookupOptions,\n };\n return [lookup, getTranslateListenerKey(lookup)];\n });\n }, [locale, txHotReloadEnabled, messages]);\n\n // Pre-subscribe to the lookups\n if (txHotReloadEnabled) {\n lookups.forEach(([, lookupKey]) => {\n trackedKeysRef.current!.add(lookupKey);\n });\n }\n\n /**\n * Delegate non-pure operations to post commit\n *\n * (Optimization) Trigger a hot reload if the translation is not found\n * for compiler-injected lookups\n *\n * TODO: for use() + suspense strategy, use a Promise.all()\n * TODO: server side translation invocation\n */\n useEffect(() => {\n if (!txHotReloadEnabled) return;\n\n lookups\n .filter(\n ([lookup]) =>\n i18nStore.getTranslateSnapshot(lookup, translationsSnapshot) == null\n )\n .forEach(([lookup]) => i18nStore.translate(lookup));\n }, [txHotReloadEnabled, i18nStore, lookups, translationsSnapshot]);\n}\n"],"mappings":"uhBA8CA,SAAgB,EACd,EAAsB,EAAE,CACI,CAC5B,IAAM,EAAuB,GAAyB,CAChD,EAAY,GAAc,CAC1B,EACJ,QAAQ,IAAI,WAAa,cACzB,GAAe,CAAC,uBAAuB,CACnC,EAAuB,GAA6B,CAKpD,EAAiB,EAA2B,KAAK,CAoBvD,MAnBA,CACE,EAAe,UAAU,IAAI,IAI/B,EAA0B,EAAU,EAAe,CAGnD,EACE,EACA,EAAU,6BACV,EACD,CAOM,EAEH,GACyB,CAEzB,IAAM,EAAY,EAAwB,EAAO,CAC7C,GACF,EAAe,QAAS,IAAI,EAAU,CAIxC,IAAM,EAAc,EAAU,qBAC5B,EACA,EACD,CAMD,OAHI,GAAe,MAAQ,GACzB,EAAqB,EAAO,CAEvB,GAET,CAAC,EAAW,EAAsB,EAAsB,EAAoB,CAC7E,CAUH,SAAS,EACP,EACA,EACA,CACA,IAAM,EAAY,GAAc,CAC1B,EAAS,GAAW,CACpB,EACJ,QAAQ,IAAI,WAAa,cACzB,GAAe,CAAC,uBAAuB,CACnC,EAAkB,GAAoB,CACtC,EAAuB,GAAyB,CAChD,EAAqB,MAClB,GAAU,OAAS,GAAK,GAAmB,EACjD,CAAC,EAAU,EAAiB,EAAoB,CAAC,CAG9C,EAA+C,MAC9C,EACE,EAAS,KAAK,CAAE,UAAS,GAAG,KAAc,CAC/C,IAAM,EAAe,EAAQ,SAAW,EAMlC,EAAS,CACb,OAAQ,EACR,UACA,QARoB,EACpB,EACA,EACA,MAKsB,CACvB,CACD,MAAO,CAAC,EAAQ,EAAwB,EAAO,CAAC,EAChD,CAd8B,EAAE,CAejC,CAAC,EAAQ,EAAoB,EAAS,CAAC,CAGtC,GACF,EAAQ,SAAS,EAAG,KAAe,CACjC,EAAe,QAAS,IAAI,EAAU,EACtC,CAYJ,MAAgB,CACT,GAEL,EACG,QACE,CAAC,KACA,EAAU,qBAAqB,EAAQ,EAAqB,EAAI,KACnE,CACA,SAAS,CAAC,KAAY,EAAU,UAAU,EAAO,CAAC,EACpD,CAAC,EAAoB,EAAW,EAAS,EAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../i18n-store/useI18nStore.cjs`),t=require(`./utils/missing-translation.cjs`);let n=require(`gt-i18n/internal`),r=require(`react`);function i(i){let a=e.useI18nStore(),o=e.useTranslationsSnapshot(),s=t.useHandleMissingTranslation(),c=(0,r.useSyncExternalStore)(e=>a.subscribeToTranslate(i,e),()=>a.getTranslateSnapshot(i,o),()=>a.getTranslateSnapshot(i,o));return process.env.NODE_ENV!==`production`&&c==null&&(0,n.getI18nConfig)().isDevHotReloadEnabled()&&s(i),c}exports.useTranslate=i;
2
+ //# sourceMappingURL=external-store.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-store.cjs","names":["useI18nStore","useTranslationsSnapshot","useHandleMissingTranslation"],"sources":["../../src/hooks/external-store.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport type { Translation } from 'gt-i18n/types';\nimport type {\n TranslateLookup,\n TranslateSnapshot,\n} from '../i18n-store/storeTypes';\nimport {\n useI18nStore,\n useTranslationsSnapshot,\n} from '../i18n-store/useI18nStore';\nimport { getI18nConfig } from 'gt-i18n/internal';\nimport { useHandleMissingTranslation } from './utils/missing-translation';\n\n/**\n * @internal\n */\nexport function useTranslate<T extends Translation>(\n lookup: TranslateLookup<T>\n): TranslateSnapshot<T> {\n const i18nStore = useI18nStore();\n const translationsSnapshot = useTranslationsSnapshot();\n const onMissingTranslation = useHandleMissingTranslation();\n\n /**\n * TODO: for snapshot lookup, we can use the translation snapshot\n * to avoid the adapter.resolveTranslation call.\n */\n const storeTranslation = useSyncExternalStore(\n (listener) => i18nStore.subscribeToTranslate(lookup, listener),\n () => i18nStore.getTranslateSnapshot(lookup, translationsSnapshot),\n () => i18nStore.getTranslateSnapshot(lookup, translationsSnapshot)\n );\n\n if (\n process.env.NODE_ENV !== 'production' &&\n storeTranslation == null &&\n getI18nConfig().isDevHotReloadEnabled()\n ) {\n // TODO: (separate PR): add configuration for a use() + suspense strategy\n // TODO: consider moving this to a useEffect\n onMissingTranslation(lookup);\n }\n\n return storeTranslation;\n}\n"],"mappings":"iMAgBA,SAAgB,EACd,EACsB,CACtB,IAAM,EAAYA,EAAAA,cAAc,CAC1B,EAAuBC,EAAAA,yBAAyB,CAChD,EAAuBC,EAAAA,6BAA6B,CAMpD,GAAA,EAAA,EAAA,sBACH,GAAa,EAAU,qBAAqB,EAAQ,EAAS,KACxD,EAAU,qBAAqB,EAAQ,EAAqB,KAC5D,EAAU,qBAAqB,EAAQ,EAAqB,CACnE,CAYD,OATE,QAAQ,IAAI,WAAa,cACzB,GAAoB,OAAA,EAAA,EAAA,gBACL,CAAC,uBAAuB,EAIvC,EAAqB,EAAO,CAGvB"}
@@ -0,0 +1,2 @@
1
+ import{useI18nStore as e,useTranslationsSnapshot as t}from"../i18n-store/useI18nStore.mjs";import{useHandleMissingTranslation as n}from"./utils/missing-translation.mjs";import{getI18nConfig as r}from"gt-i18n/internal";import{useSyncExternalStore as i}from"react";function a(a){let o=e(),s=t(),c=n(),l=i(e=>o.subscribeToTranslate(a,e),()=>o.getTranslateSnapshot(a,s),()=>o.getTranslateSnapshot(a,s));return process.env.NODE_ENV!==`production`&&l==null&&r().isDevHotReloadEnabled()&&c(a),l}export{a as useTranslate};
2
+ //# sourceMappingURL=external-store.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-store.mjs","names":[],"sources":["../../src/hooks/external-store.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport type { Translation } from 'gt-i18n/types';\nimport type {\n TranslateLookup,\n TranslateSnapshot,\n} from '../i18n-store/storeTypes';\nimport {\n useI18nStore,\n useTranslationsSnapshot,\n} from '../i18n-store/useI18nStore';\nimport { getI18nConfig } from 'gt-i18n/internal';\nimport { useHandleMissingTranslation } from './utils/missing-translation';\n\n/**\n * @internal\n */\nexport function useTranslate<T extends Translation>(\n lookup: TranslateLookup<T>\n): TranslateSnapshot<T> {\n const i18nStore = useI18nStore();\n const translationsSnapshot = useTranslationsSnapshot();\n const onMissingTranslation = useHandleMissingTranslation();\n\n /**\n * TODO: for snapshot lookup, we can use the translation snapshot\n * to avoid the adapter.resolveTranslation call.\n */\n const storeTranslation = useSyncExternalStore(\n (listener) => i18nStore.subscribeToTranslate(lookup, listener),\n () => i18nStore.getTranslateSnapshot(lookup, translationsSnapshot),\n () => i18nStore.getTranslateSnapshot(lookup, translationsSnapshot)\n );\n\n if (\n process.env.NODE_ENV !== 'production' &&\n storeTranslation == null &&\n getI18nConfig().isDevHotReloadEnabled()\n ) {\n // TODO: (separate PR): add configuration for a use() + suspense strategy\n // TODO: consider moving this to a useEffect\n onMissingTranslation(lookup);\n }\n\n return storeTranslation;\n}\n"],"mappings":"uQAgBA,SAAgB,EACd,EACsB,CACtB,IAAM,EAAY,GAAc,CAC1B,EAAuB,GAAyB,CAChD,EAAuB,GAA6B,CAMpD,EAAmB,EACtB,GAAa,EAAU,qBAAqB,EAAQ,EAAS,KACxD,EAAU,qBAAqB,EAAQ,EAAqB,KAC5D,EAAU,qBAAqB,EAAQ,EAAqB,CACnE,CAYD,OATE,QAAQ,IAAI,WAAa,cACzB,GAAoB,MACpB,GAAe,CAAC,uBAAuB,EAIvC,EAAqB,EAAO,CAGvB"}
@@ -0,0 +1,2 @@
1
+ require(`../_virtual/_rolldown/runtime.cjs`);let e=require(`gt-i18n/internal`),t=require(`react`);function n(){return(0,t.useMemo)(()=>(0,e.getI18nConfig)().getCustomMapping(),[])}function r(){return(0,t.useMemo)(()=>(0,e.getI18nConfig)().getDefaultLocale(),[])}function i(){return(0,t.useMemo)(()=>(0,e.getI18nConfig)().getLocales(),[])}exports.useCustomMapping=n,exports.useDefaultLocale=r,exports.useLocales=i;
2
+ //# sourceMappingURL=i18n-config.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-config.cjs","names":[],"sources":["../../src/hooks/i18n-config.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { getI18nConfig } from 'gt-i18n/internal';\nimport type { CustomMapping } from 'generaltranslation/types';\n\nexport function useCustomMapping(): CustomMapping {\n return useMemo(() => getI18nConfig().getCustomMapping(), []);\n}\n\nexport function useDefaultLocale(): string {\n return useMemo(() => getI18nConfig().getDefaultLocale(), []);\n}\n\nexport function useLocales(): readonly string[] {\n return useMemo(() => getI18nConfig().getLocales(), []);\n}\n"],"mappings":"kGAIA,SAAgB,GAAkC,CAChD,OAAA,EAAA,EAAA,cAAA,EAAA,EAAA,gBAAoC,CAAC,kBAAkB,CAAE,EAAE,CAAC,CAG9D,SAAgB,GAA2B,CACzC,OAAA,EAAA,EAAA,cAAA,EAAA,EAAA,gBAAoC,CAAC,kBAAkB,CAAE,EAAE,CAAC,CAG9D,SAAgB,GAAgC,CAC9C,OAAA,EAAA,EAAA,cAAA,EAAA,EAAA,gBAAoC,CAAC,YAAY,CAAE,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { CustomMapping } from "generaltranslation/types";
2
+
3
+ //#region src/hooks/i18n-config.d.ts
4
+ declare function useCustomMapping(): CustomMapping;
5
+ declare function useDefaultLocale(): string;
6
+ declare function useLocales(): readonly string[];
7
+ //#endregion
8
+ export { useCustomMapping, useDefaultLocale, useLocales };
9
+ //# sourceMappingURL=i18n-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-config.d.ts","names":[],"sources":["../../src/hooks/i18n-config.ts"],"mappings":";;;iBAIgB,gBAAA,CAAA,GAAoB,aAAA;AAAA,iBAIpB,gBAAA,CAAA;AAAA,iBAIA,UAAA,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{getI18nConfig as e}from"gt-i18n/internal";import{useMemo as t}from"react";function n(){return t(()=>e().getCustomMapping(),[])}function r(){return t(()=>e().getDefaultLocale(),[])}function i(){return t(()=>e().getLocales(),[])}export{n as useCustomMapping,r as useDefaultLocale,i as useLocales};
2
+ //# sourceMappingURL=i18n-config.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-config.mjs","names":[],"sources":["../../src/hooks/i18n-config.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { getI18nConfig } from 'gt-i18n/internal';\nimport type { CustomMapping } from 'generaltranslation/types';\n\nexport function useCustomMapping(): CustomMapping {\n return useMemo(() => getI18nConfig().getCustomMapping(), []);\n}\n\nexport function useDefaultLocale(): string {\n return useMemo(() => getI18nConfig().getDefaultLocale(), []);\n}\n\nexport function useLocales(): readonly string[] {\n return useMemo(() => getI18nConfig().getLocales(), []);\n}\n"],"mappings":"iFAIA,SAAgB,GAAkC,CAChD,OAAO,MAAc,GAAe,CAAC,kBAAkB,CAAE,EAAE,CAAC,CAG9D,SAAgB,GAA2B,CACzC,OAAO,MAAc,GAAe,CAAC,kBAAkB,CAAE,EAAE,CAAC,CAG9D,SAAgB,GAAgC,CAC9C,OAAO,MAAc,GAAe,CAAC,YAAY,CAAE,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`./condition-store.cjs`),t=require(`./i18n-config.cjs`),n=require(`./utils.cjs`),r=require(`./external-store/useTrackedTranslationResolver.cjs`);let i=require(`gt-i18n/internal`),a=require(`react`);function o(o){let s=e.useLocale(),c=t.useDefaultLocale(),l=n.useShouldTranslate(),u=r.useTrackedTranslationResolver(o);return(0,a.useCallback)((e,t={})=>{let n=(0,i.createLookupOptions)(t.$locale??s,t,`ICU`);return l?(0,i.interpolateMessage)({source:e,target:u({locale:n.$locale,message:e,options:n}),options:n,sourceLocale:c}):(0,i.interpolateMessage)({options:n,source:e,sourceLocale:c})},[c,s,l,u])}exports.useGT=o;
2
+ //# sourceMappingURL=useGT.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGT.cjs","names":["useLocale","useDefaultLocale","useShouldTranslate","useTrackedTranslationResolver"],"sources":["../../src/hooks/useGT.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { createLookupOptions, interpolateMessage } from 'gt-i18n/internal';\nimport { useLocale } from './condition-store';\nimport { useShouldTranslate } from './utils';\nimport type { GTFunctionType, GTTranslationOptions } from 'gt-i18n/types';\nimport type { StringFormat } from '@generaltranslation/format/types';\nimport { useDefaultLocale } from './i18n-config';\nimport {\n type Message,\n useTrackedTranslationResolver,\n} from './external-store/useTrackedTranslationResolver';\n\n// ===== Hook ===== //\n\nexport function useGT(_messages?: Message[]): GTFunctionType {\n const locale = useLocale();\n const defaultLocale = useDefaultLocale();\n const shouldTranslate = useShouldTranslate();\n const resolveTranslation = useTrackedTranslationResolver(_messages);\n\n /**\n * gt() string translation callback\n */\n return useCallback(\n (message: string, options: GTTranslationOptions = {}) => {\n const lookupOptions = createLookupOptions<StringFormat>(\n options.$locale ?? locale,\n options,\n 'ICU'\n );\n\n if (!shouldTranslate) {\n return interpolateMessage({\n options: lookupOptions,\n source: message,\n sourceLocale: defaultLocale,\n });\n }\n\n const translation = resolveTranslation({\n locale: lookupOptions.$locale,\n message,\n options: lookupOptions,\n });\n\n return interpolateMessage({\n source: message,\n target: translation,\n options: lookupOptions,\n sourceLocale: defaultLocale,\n });\n },\n [defaultLocale, locale, shouldTranslate, resolveTranslation]\n );\n}\n"],"mappings":"mQAcA,SAAgB,EAAM,EAAuC,CAC3D,IAAM,EAASA,EAAAA,WAAW,CACpB,EAAgBC,EAAAA,kBAAkB,CAClC,EAAkBC,EAAAA,oBAAoB,CACtC,EAAqBC,EAAAA,8BAA8B,EAAU,CAKnE,OAAA,EAAA,EAAA,cACG,EAAiB,EAAgC,EAAE,GAAK,CACvD,IAAM,GAAA,EAAA,EAAA,qBACJ,EAAQ,SAAW,EACnB,EACA,MACD,CAgBD,OAdK,GAcL,EAAA,EAAA,oBAA0B,CACxB,OAAQ,EACR,OARkB,EAAmB,CACrC,OAAQ,EAAc,QACtB,UACA,QAAS,EACV,CAIoB,CACnB,QAAS,EACT,aAAc,EACf,CAAC,EAlBA,EAAA,EAAA,oBAA0B,CACxB,QAAS,EACT,OAAQ,EACR,aAAc,EACf,CAAC,EAgBN,CAAC,EAAe,EAAQ,EAAiB,EAAmB,CAC7D"}
@@ -0,0 +1,8 @@
1
+ import { Message } from "./external-store/useTrackedTranslationResolver.js";
2
+ import { GTFunctionType } from "gt-i18n/types";
3
+
4
+ //#region src/hooks/useGT.d.ts
5
+ declare function useGT(_messages?: Message[]): GTFunctionType;
6
+ //#endregion
7
+ export { useGT };
8
+ //# sourceMappingURL=useGT.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGT.d.ts","names":[],"sources":["../../src/hooks/useGT.ts"],"mappings":";;;;iBAcgB,KAAA,CAAM,SAAA,GAAY,OAAA,KAAY,cAAA"}
@@ -0,0 +1,2 @@
1
+ import{useLocale as e}from"./condition-store.mjs";import{useDefaultLocale as t}from"./i18n-config.mjs";import{useShouldTranslate as n}from"./utils.mjs";import{useTrackedTranslationResolver as r}from"./external-store/useTrackedTranslationResolver.mjs";import{createLookupOptions as i,interpolateMessage as a}from"gt-i18n/internal";import{useCallback as o}from"react";function s(s){let c=e(),l=t(),u=n(),d=r(s);return o((e,t={})=>{let n=i(t.$locale??c,t,`ICU`);return a(u?{source:e,target:d({locale:n.$locale,message:e,options:n}),options:n,sourceLocale:l}:{options:n,source:e,sourceLocale:l})},[l,c,u,d])}export{s as useGT};
2
+ //# sourceMappingURL=useGT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGT.mjs","names":[],"sources":["../../src/hooks/useGT.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { createLookupOptions, interpolateMessage } from 'gt-i18n/internal';\nimport { useLocale } from './condition-store';\nimport { useShouldTranslate } from './utils';\nimport type { GTFunctionType, GTTranslationOptions } from 'gt-i18n/types';\nimport type { StringFormat } from '@generaltranslation/format/types';\nimport { useDefaultLocale } from './i18n-config';\nimport {\n type Message,\n useTrackedTranslationResolver,\n} from './external-store/useTrackedTranslationResolver';\n\n// ===== Hook ===== //\n\nexport function useGT(_messages?: Message[]): GTFunctionType {\n const locale = useLocale();\n const defaultLocale = useDefaultLocale();\n const shouldTranslate = useShouldTranslate();\n const resolveTranslation = useTrackedTranslationResolver(_messages);\n\n /**\n * gt() string translation callback\n */\n return useCallback(\n (message: string, options: GTTranslationOptions = {}) => {\n const lookupOptions = createLookupOptions<StringFormat>(\n options.$locale ?? locale,\n options,\n 'ICU'\n );\n\n if (!shouldTranslate) {\n return interpolateMessage({\n options: lookupOptions,\n source: message,\n sourceLocale: defaultLocale,\n });\n }\n\n const translation = resolveTranslation({\n locale: lookupOptions.$locale,\n message,\n options: lookupOptions,\n });\n\n return interpolateMessage({\n source: message,\n target: translation,\n options: lookupOptions,\n sourceLocale: defaultLocale,\n });\n },\n [defaultLocale, locale, shouldTranslate, resolveTranslation]\n );\n}\n"],"mappings":"8WAcA,SAAgB,EAAM,EAAuC,CAC3D,IAAM,EAAS,GAAW,CACpB,EAAgB,GAAkB,CAClC,EAAkB,GAAoB,CACtC,EAAqB,EAA8B,EAAU,CAKnE,OAAO,GACJ,EAAiB,EAAgC,EAAE,GAAK,CACvD,IAAM,EAAgB,EACpB,EAAQ,SAAW,EACnB,EACA,MACD,CAgBD,OAAO,EAdF,EAcqB,CACxB,OAAQ,EACR,OARkB,EAAmB,CACrC,OAAQ,EAAc,QACtB,UACA,QAAS,EACV,CAIoB,CACnB,QAAS,EACT,aAAc,EACf,CAlB2B,CACxB,QAAS,EACT,OAAQ,EACR,aAAc,EACf,CAAC,EAgBN,CAAC,EAAe,EAAQ,EAAiB,EAAmB,CAC7D"}
@@ -0,0 +1,2 @@
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`./condition-store.cjs`),t=require(`./i18n-config.cjs`);let n=require(`react`),r=require(`@generaltranslation/format`);function i(i){let a=t.useLocales(),o=t.useCustomMapping(),s=e.useLocale(),c=(0,n.useMemo)(()=>{if(!a||a.length===0)return[];let e=new Intl.Collator;return[...a].sort((t,n)=>e.compare((0,r.getLocaleProperties)(t,s,o).nativeNameWithRegionCode,(0,r.getLocaleProperties)(n,s,o).nativeNameWithRegionCode))},[a,s,o]),l=(0,n.useCallback)(e=>(0,r.getLocaleProperties)(e,e,o),[s,o]);return{locale:s,locales:i||c,getLocaleProperties:l}}exports.useInternalLocaleSelector=i;
2
+ //# sourceMappingURL=useInternalLocaleSelector.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInternalLocaleSelector.cjs","names":["useLocales","useCustomMapping","useLocale"],"sources":["../../src/hooks/useInternalLocaleSelector.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport type { LocaleProperties } from '@generaltranslation/format/types';\nimport { useCustomMapping, useLocales } from './i18n-config';\nimport { useLocale } from './condition-store';\nimport { getLocaleProperties } from '@generaltranslation/format';\n\n// Explicit return type so the inferred type stays portable for downstream\n// packages (e.g. gt-react-native), otherwise the getLocaleProperties callback\n// pulls in generaltranslation's bundled, non-nameable type (TS2742).\nexport type InternalLocaleSelectorResult = {\n locale: string;\n locales: string[];\n getLocaleProperties: (locale: string) => LocaleProperties;\n};\n\nexport function useInternalLocaleSelector(\n locales?: string[]\n): InternalLocaleSelectorResult {\n // Retrieve the locale, locales, and setLocale function\n const contextLocales = useLocales();\n const customMapping = useCustomMapping();\n const locale = useLocale();\n\n // sort\n const sortedLocales = useMemo(() => {\n if (!contextLocales || contextLocales.length === 0) {\n return [];\n }\n const collator = new Intl.Collator();\n return [...contextLocales].sort((a, b) =>\n collator.compare(\n getLocaleProperties(a, locale, customMapping).nativeNameWithRegionCode,\n getLocaleProperties(b, locale, customMapping).nativeNameWithRegionCode\n )\n );\n }, [contextLocales, locale, customMapping]);\n\n // create getLocaleProperties callback\n const getLocalePropertiesCallback = useCallback(\n (locale: string) => {\n return getLocaleProperties(locale, locale, customMapping);\n },\n [locale, customMapping]\n );\n\n return {\n locale,\n locales: locales ? locales : sortedLocales,\n getLocaleProperties: getLocalePropertiesCallback,\n };\n}\n"],"mappings":"oLAeA,SAAgB,EACd,EAC8B,CAE9B,IAAM,EAAiBA,EAAAA,YAAY,CAC7B,EAAgBC,EAAAA,kBAAkB,CAClC,EAASC,EAAAA,WAAW,CAGpB,GAAA,EAAA,EAAA,aAA8B,CAClC,GAAI,CAAC,GAAkB,EAAe,SAAW,EAC/C,MAAO,EAAE,CAEX,IAAM,EAAW,IAAI,KAAK,SAC1B,MAAO,CAAC,GAAG,EAAe,CAAC,MAAM,EAAG,IAClC,EAAS,SAAA,EAAA,EAAA,qBACa,EAAG,EAAQ,EAAc,CAAC,0BAAA,EAAA,EAAA,qBAC1B,EAAG,EAAQ,EAAc,CAAC,yBAC/C,CACF,EACA,CAAC,EAAgB,EAAQ,EAAc,CAAC,CAGrC,GAAA,EAAA,EAAA,aACH,IACC,EAAA,EAAA,qBAA2B,EAAQ,EAAQ,EAAc,CAE3D,CAAC,EAAQ,EAAc,CACxB,CAED,MAAO,CACL,SACA,QAAS,GAAoB,EAC7B,oBAAqB,EACtB"}
@@ -0,0 +1,12 @@
1
+ import { LocaleProperties } from "@generaltranslation/format/types";
2
+
3
+ //#region src/hooks/useInternalLocaleSelector.d.ts
4
+ type InternalLocaleSelectorResult = {
5
+ locale: string;
6
+ locales: string[];
7
+ getLocaleProperties: (locale: string) => LocaleProperties;
8
+ };
9
+ declare function useInternalLocaleSelector(locales?: string[]): InternalLocaleSelectorResult;
10
+ //#endregion
11
+ export { InternalLocaleSelectorResult, useInternalLocaleSelector };
12
+ //# sourceMappingURL=useInternalLocaleSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInternalLocaleSelector.d.ts","names":[],"sources":["../../src/hooks/useInternalLocaleSelector.ts"],"mappings":";;;KASY,4BAAA;EACV,MAAA;EACA,OAAA;EACA,mBAAA,GAAsB,MAAA,aAAmB,gBAAA;AAAA;AAAA,iBAG3B,yBAAA,CACd,OAAA,cACC,4BAAA"}
@@ -0,0 +1,2 @@
1
+ import{useLocale as e}from"./condition-store.mjs";import{useCustomMapping as t,useLocales as n}from"./i18n-config.mjs";import{useCallback as r,useMemo as i}from"react";import{getLocaleProperties as a}from"@generaltranslation/format";function o(o){let s=n(),c=t(),l=e(),u=i(()=>{if(!s||s.length===0)return[];let e=new Intl.Collator;return[...s].sort((t,n)=>e.compare(a(t,l,c).nativeNameWithRegionCode,a(n,l,c).nativeNameWithRegionCode))},[s,l,c]),d=r(e=>a(e,e,c),[l,c]);return{locale:l,locales:o||u,getLocaleProperties:d}}export{o as useInternalLocaleSelector};
2
+ //# sourceMappingURL=useInternalLocaleSelector.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInternalLocaleSelector.mjs","names":[],"sources":["../../src/hooks/useInternalLocaleSelector.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport type { LocaleProperties } from '@generaltranslation/format/types';\nimport { useCustomMapping, useLocales } from './i18n-config';\nimport { useLocale } from './condition-store';\nimport { getLocaleProperties } from '@generaltranslation/format';\n\n// Explicit return type so the inferred type stays portable for downstream\n// packages (e.g. gt-react-native), otherwise the getLocaleProperties callback\n// pulls in generaltranslation's bundled, non-nameable type (TS2742).\nexport type InternalLocaleSelectorResult = {\n locale: string;\n locales: string[];\n getLocaleProperties: (locale: string) => LocaleProperties;\n};\n\nexport function useInternalLocaleSelector(\n locales?: string[]\n): InternalLocaleSelectorResult {\n // Retrieve the locale, locales, and setLocale function\n const contextLocales = useLocales();\n const customMapping = useCustomMapping();\n const locale = useLocale();\n\n // sort\n const sortedLocales = useMemo(() => {\n if (!contextLocales || contextLocales.length === 0) {\n return [];\n }\n const collator = new Intl.Collator();\n return [...contextLocales].sort((a, b) =>\n collator.compare(\n getLocaleProperties(a, locale, customMapping).nativeNameWithRegionCode,\n getLocaleProperties(b, locale, customMapping).nativeNameWithRegionCode\n )\n );\n }, [contextLocales, locale, customMapping]);\n\n // create getLocaleProperties callback\n const getLocalePropertiesCallback = useCallback(\n (locale: string) => {\n return getLocaleProperties(locale, locale, customMapping);\n },\n [locale, customMapping]\n );\n\n return {\n locale,\n locales: locales ? locales : sortedLocales,\n getLocaleProperties: getLocalePropertiesCallback,\n };\n}\n"],"mappings":"yOAeA,SAAgB,EACd,EAC8B,CAE9B,IAAM,EAAiB,GAAY,CAC7B,EAAgB,GAAkB,CAClC,EAAS,GAAW,CAGpB,EAAgB,MAAc,CAClC,GAAI,CAAC,GAAkB,EAAe,SAAW,EAC/C,MAAO,EAAE,CAEX,IAAM,EAAW,IAAI,KAAK,SAC1B,MAAO,CAAC,GAAG,EAAe,CAAC,MAAM,EAAG,IAClC,EAAS,QACP,EAAoB,EAAG,EAAQ,EAAc,CAAC,yBAC9C,EAAoB,EAAG,EAAQ,EAAc,CAAC,yBAC/C,CACF,EACA,CAAC,EAAgB,EAAQ,EAAc,CAAC,CAGrC,EAA8B,EACjC,GACQ,EAAoB,EAAQ,EAAQ,EAAc,CAE3D,CAAC,EAAQ,EAAc,CACxB,CAED,MAAO,CACL,SACA,QAAS,GAAoB,EAC7B,oBAAqB,EACtB"}
@@ -0,0 +1,2 @@
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`./condition-store.cjs`),t=require(`./i18n-config.cjs`);let n=require(`gt-i18n/internal`),r=require(`react`),i=require(`@generaltranslation/format`);function a({regions:a,customMapping:o,prioritizeCurrentLocaleRegion:s=!0,sortRegionsAlphabetically:c=!0}={}){let l=t.useLocales(),u=t.useCustomMapping(),d=e.useLocale(),f=e.useRegion(),{regionCode:p}=(0,i.getLocaleProperties)(d,d,u),[m,h]=(0,r.useMemo)(()=>{let e=(0,n.getI18nConfig)().getGTClass(d),t=new Map(l.map(e=>{let t=(0,i.getLocaleProperties)(e,d,u);return[t.regionCode,t]})),r=a?[...a]:Array.from(t?.keys()||[p]),f=new Map(r.map(n=>[n,{locale:t?.get(n)?.code||d,...e.getRegionProperties(n),...typeof o?.[n]==`string`?{name:o?.[n]}:o?.[n]}]));if(c&&r.sort((e,t)=>new Intl.Collator().compare(f.get(e).name,f.get(t).name)),s){let e=r.indexOf(p);e>0&&(r.splice(e,1),r.unshift(p))}return[r,f]},[a,o,d,p,l,u,s,c]);return{region:f,regions:m,regionData:h,locale:d,localeRegion:p}}exports.useInternalRegionSelector=a;
2
+ //# sourceMappingURL=useInternalRegionSelector.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInternalRegionSelector.cjs","names":["useLocales","useCustomMapping","useLocale","useRegion"],"sources":["../../src/hooks/useInternalRegionSelector.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useCustomMapping, useLocales } from './i18n-config';\nimport { useLocale, useRegion } from './condition-store';\nimport { getLocaleProperties } from '@generaltranslation/format';\nimport { getI18nConfig } from 'gt-i18n/internal';\n\nexport type RegionData = {\n code: string;\n name: string;\n emoji: string;\n locale: string;\n};\n\nexport type InternalRegionSelectorOptions = {\n regions?: string[];\n customMapping?: {\n [region: string]:\n | string\n | { name?: string; emoji?: string; locale?: string };\n };\n prioritizeCurrentLocaleRegion?: boolean;\n sortRegionsAlphabetically?: boolean;\n};\n\nexport type InternalRegionSelectorResult = {\n region: string | undefined;\n regions: string[];\n regionData: Map<string, RegionData>;\n locale: string;\n localeRegion: string;\n};\n\n/**\n * Internal logic for region selection in applications supporting multiple regions.\n *\n * Returns the current region, an ordered list of available regions (inferred\n * from the supported locales when not provided), and a map of region codes to\n * their display data (name, emoji, associated locale).\n */\nexport function useInternalRegionSelector({\n regions: _regions,\n customMapping,\n prioritizeCurrentLocaleRegion = true,\n sortRegionsAlphabetically = true,\n}: InternalRegionSelectorOptions = {}): InternalRegionSelectorResult {\n // Retrieve the locale, locales, and region\n const contextLocales = useLocales();\n const localeCustomMapping = useCustomMapping();\n const locale = useLocale();\n const region = useRegion();\n const { regionCode: localeRegion } = getLocaleProperties(\n locale,\n locale,\n localeCustomMapping\n );\n\n const [\n regions, // ordered list of ISO 3166 region codes\n regionData, // map of ISO 3166 region codes to region display data, potentially not ordered\n ] = useMemo<[string[], Map<string, RegionData>]>(() => {\n const gt = getI18nConfig().getGTClass(locale);\n const regionToLocaleMap = new Map(\n contextLocales.map((l) => {\n const lp = getLocaleProperties(l, locale, localeCustomMapping); // has to be directly called so sourceLocale can be in the user's current locale\n return [lp.regionCode, lp];\n })\n );\n\n const regions = _regions\n ? [..._regions]\n : Array.from(regionToLocaleMap?.keys() || [localeRegion]);\n\n const regionData = new Map<string, RegionData>(\n regions.map((r: string) => {\n return [\n r,\n {\n locale: regionToLocaleMap?.get(r)?.code || locale,\n ...gt.getRegionProperties(r),\n ...(typeof customMapping?.[r] === 'string'\n ? { name: customMapping?.[r] }\n : customMapping?.[r]),\n },\n ];\n })\n );\n\n if (sortRegionsAlphabetically) {\n regions.sort((a, b) =>\n new Intl.Collator().compare(\n regionData.get(a)!.name,\n regionData.get(b)!.name\n )\n );\n }\n\n if (prioritizeCurrentLocaleRegion) {\n const localeRegionIndex = regions.indexOf(localeRegion);\n if (localeRegionIndex > 0) {\n // 0 because no action is needed if it's already at the start\n regions.splice(localeRegionIndex, 1);\n regions.unshift(localeRegion);\n }\n }\n\n return [regions, regionData];\n }, [\n _regions,\n customMapping,\n locale,\n localeRegion,\n contextLocales,\n localeCustomMapping,\n prioritizeCurrentLocaleRegion,\n sortRegionsAlphabetically,\n ]);\n\n return {\n region,\n regions,\n regionData,\n locale,\n localeRegion,\n };\n}\n"],"mappings":"kNAuCA,SAAgB,EAA0B,CACxC,QAAS,EACT,gBACA,gCAAgC,GAChC,4BAA4B,IACK,EAAE,CAAgC,CAEnE,IAAM,EAAiBA,EAAAA,YAAY,CAC7B,EAAsBC,EAAAA,kBAAkB,CACxC,EAASC,EAAAA,WAAW,CACpB,EAASC,EAAAA,WAAW,CACpB,CAAE,WAAY,IAAA,EAAA,EAAA,qBAClB,EACA,EACA,EACD,CAEK,CACJ,EACA,IAAA,EAAA,EAAA,aACqD,CACrD,IAAM,GAAA,EAAA,EAAA,gBAAoB,CAAC,WAAW,EAAO,CACvC,EAAoB,IAAI,IAC5B,EAAe,IAAK,GAAM,CACxB,IAAM,GAAA,EAAA,EAAA,qBAAyB,EAAG,EAAQ,EAAoB,CAC9D,MAAO,CAAC,EAAG,WAAY,EAAG,EAC1B,CACH,CAEK,EAAU,EACZ,CAAC,GAAG,EAAS,CACb,MAAM,KAAK,GAAmB,MAAM,EAAI,CAAC,EAAa,CAAC,CAErD,EAAa,IAAI,IACrB,EAAQ,IAAK,GACJ,CACL,EACA,CACE,OAAQ,GAAmB,IAAI,EAAE,EAAE,MAAQ,EAC3C,GAAG,EAAG,oBAAoB,EAAE,CAC5B,GAAI,OAAO,IAAgB,IAAO,SAC9B,CAAE,KAAM,IAAgB,GAAI,CAC5B,IAAgB,GACrB,CACF,CACD,CACH,CAWD,GATI,GACF,EAAQ,MAAM,EAAG,IACf,IAAI,KAAK,UAAU,CAAC,QAClB,EAAW,IAAI,EAAE,CAAE,KACnB,EAAW,IAAI,EAAE,CAAE,KACpB,CACF,CAGC,EAA+B,CACjC,IAAM,EAAoB,EAAQ,QAAQ,EAAa,CACnD,EAAoB,IAEtB,EAAQ,OAAO,EAAmB,EAAE,CACpC,EAAQ,QAAQ,EAAa,EAIjC,MAAO,CAAC,EAAS,EAAW,EAC3B,CACD,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CAAC,CAEF,MAAO,CACL,SACA,UACA,aACA,SACA,eACD"}
@@ -0,0 +1,42 @@
1
+ //#region src/hooks/useInternalRegionSelector.d.ts
2
+ type RegionData = {
3
+ code: string;
4
+ name: string;
5
+ emoji: string;
6
+ locale: string;
7
+ };
8
+ type InternalRegionSelectorOptions = {
9
+ regions?: string[];
10
+ customMapping?: {
11
+ [region: string]: string | {
12
+ name?: string;
13
+ emoji?: string;
14
+ locale?: string;
15
+ };
16
+ };
17
+ prioritizeCurrentLocaleRegion?: boolean;
18
+ sortRegionsAlphabetically?: boolean;
19
+ };
20
+ type InternalRegionSelectorResult = {
21
+ region: string | undefined;
22
+ regions: string[];
23
+ regionData: Map<string, RegionData>;
24
+ locale: string;
25
+ localeRegion: string;
26
+ };
27
+ /**
28
+ * Internal logic for region selection in applications supporting multiple regions.
29
+ *
30
+ * Returns the current region, an ordered list of available regions (inferred
31
+ * from the supported locales when not provided), and a map of region codes to
32
+ * their display data (name, emoji, associated locale).
33
+ */
34
+ declare function useInternalRegionSelector({
35
+ regions: _regions,
36
+ customMapping,
37
+ prioritizeCurrentLocaleRegion,
38
+ sortRegionsAlphabetically
39
+ }?: InternalRegionSelectorOptions): InternalRegionSelectorResult;
40
+ //#endregion
41
+ export { InternalRegionSelectorOptions, InternalRegionSelectorResult, RegionData, useInternalRegionSelector };
42
+ //# sourceMappingURL=useInternalRegionSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInternalRegionSelector.d.ts","names":[],"sources":["../../src/hooks/useInternalRegionSelector.ts"],"mappings":";KAMY,UAAA;EACV,IAAA;EACA,IAAA;EACA,KAAA;EACA,MAAA;AAAA;AAAA,KAGU,6BAAA;EACV,OAAA;EACA,aAAA;IAAA,CACG,MAAA;MAEK,IAAA;MAAe,KAAA;MAAgB,MAAA;IAAA;EAAA;EAEvC,6BAAA;EACA,yBAAA;AAAA;AAAA,KAGU,4BAAA;EACV,MAAA;EACA,OAAA;EACA,UAAA,EAAY,GAAA,SAAY,UAAA;EACxB,MAAA;EACA,YAAA;AAAA;AALF;;;;;;;AAAA,iBAegB,yBAAA,CAAA;EACd,OAAA,EAAS,QAAA;EACT,aAAA;EACA,6BAAA;EACA;AAAA,IACC,6BAAA,GAAqC,4BAAA"}
@@ -0,0 +1,2 @@
1
+ import{useLocale as e,useRegion as t}from"./condition-store.mjs";import{useCustomMapping as n,useLocales as r}from"./i18n-config.mjs";import{getI18nConfig as i}from"gt-i18n/internal";import{useMemo as a}from"react";import{getLocaleProperties as o}from"@generaltranslation/format";function s({regions:s,customMapping:c,prioritizeCurrentLocaleRegion:l=!0,sortRegionsAlphabetically:u=!0}={}){let d=r(),f=n(),p=e(),m=t(),{regionCode:h}=o(p,p,f),[g,_]=a(()=>{let e=i().getGTClass(p),t=new Map(d.map(e=>{let t=o(e,p,f);return[t.regionCode,t]})),n=s?[...s]:Array.from(t?.keys()||[h]),r=new Map(n.map(n=>[n,{locale:t?.get(n)?.code||p,...e.getRegionProperties(n),...typeof c?.[n]==`string`?{name:c?.[n]}:c?.[n]}]));if(u&&n.sort((e,t)=>new Intl.Collator().compare(r.get(e).name,r.get(t).name)),l){let e=n.indexOf(h);e>0&&(n.splice(e,1),n.unshift(h))}return[n,r]},[s,c,p,h,d,f,l,u]);return{region:m,regions:g,regionData:_,locale:p,localeRegion:h}}export{s as useInternalRegionSelector};
2
+ //# sourceMappingURL=useInternalRegionSelector.mjs.map