@workos-inc/widgets-i18n 0.1.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.
- package/CHANGELOG.md +7 -0
- package/LICENSE +21 -0
- package/README.md +219 -0
- package/dist/cjs/index.cjs +38 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +4 -0
- package/dist/cjs/lib/dictionaries.cjs +178 -0
- package/dist/cjs/lib/dictionaries.cjs.map +1 -0
- package/dist/cjs/lib/dictionaries.d.cts +24924 -0
- package/dist/cjs/lib/locale-provider.cjs +92 -0
- package/dist/cjs/lib/locale-provider.cjs.map +1 -0
- package/dist/cjs/lib/locale-provider.d.cts +12 -0
- package/dist/cjs/lib/types/react.d.cjs +3 -0
- package/dist/cjs/lib/types/react.d.cjs.map +1 -0
- package/dist/cjs/lib/types/react.d.d.cts +5 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/dictionaries.d.ts +24924 -0
- package/dist/esm/lib/dictionaries.js +140 -0
- package/dist/esm/lib/dictionaries.js.map +1 -0
- package/dist/esm/lib/locale-provider.d.ts +12 -0
- package/dist/esm/lib/locale-provider.js +64 -0
- package/dist/esm/lib/locale-provider.js.map +1 -0
- package/dist/esm/lib/types/react.d.d.ts +5 -0
- package/dist/esm/lib/types/react.d.js +2 -0
- package/dist/esm/lib/types/react.d.js.map +1 -0
- package/dist/lang/translations/af.json +281 -0
- package/dist/lang/translations/am.json +281 -0
- package/dist/lang/translations/ar.json +281 -0
- package/dist/lang/translations/bg.json +281 -0
- package/dist/lang/translations/bn.json +281 -0
- package/dist/lang/translations/bs.json +281 -0
- package/dist/lang/translations/ca.json +281 -0
- package/dist/lang/translations/cs.json +281 -0
- package/dist/lang/translations/da.json +281 -0
- package/dist/lang/translations/de.json +284 -0
- package/dist/lang/translations/el.json +281 -0
- package/dist/lang/translations/en-AU.json +281 -0
- package/dist/lang/translations/en-CA.json +281 -0
- package/dist/lang/translations/en-GB.json +281 -0
- package/dist/lang/translations/en-US.json +280 -0
- package/dist/lang/translations/es-419.json +281 -0
- package/dist/lang/translations/es-US.json +281 -0
- package/dist/lang/translations/es.json +281 -0
- package/dist/lang/translations/et.json +281 -0
- package/dist/lang/translations/fa.json +281 -0
- package/dist/lang/translations/fi.json +281 -0
- package/dist/lang/translations/fil.json +281 -0
- package/dist/lang/translations/fr-BE.json +281 -0
- package/dist/lang/translations/fr-CA.json +281 -0
- package/dist/lang/translations/fr.json +281 -0
- package/dist/lang/translations/fy.json +281 -0
- package/dist/lang/translations/gl.json +281 -0
- package/dist/lang/translations/gu.json +281 -0
- package/dist/lang/translations/ha.json +281 -0
- package/dist/lang/translations/he.json +281 -0
- package/dist/lang/translations/hi.json +281 -0
- package/dist/lang/translations/hr.json +281 -0
- package/dist/lang/translations/hu.json +281 -0
- package/dist/lang/translations/hy.json +281 -0
- package/dist/lang/translations/id.json +281 -0
- package/dist/lang/translations/is.json +281 -0
- package/dist/lang/translations/it.json +281 -0
- package/dist/lang/translations/ja.json +281 -0
- package/dist/lang/translations/jv.json +281 -0
- package/dist/lang/translations/ka.json +281 -0
- package/dist/lang/translations/kk.json +281 -0
- package/dist/lang/translations/km.json +281 -0
- package/dist/lang/translations/kn.json +281 -0
- package/dist/lang/translations/ko.json +281 -0
- package/dist/lang/translations/lt.json +280 -0
- package/dist/lang/translations/lv.json +281 -0
- package/dist/lang/translations/mk.json +281 -0
- package/dist/lang/translations/ml.json +281 -0
- package/dist/lang/translations/mn.json +281 -0
- package/dist/lang/translations/mr.json +281 -0
- package/dist/lang/translations/ms.json +281 -0
- package/dist/lang/translations/my.json +281 -0
- package/dist/lang/translations/nb.json +281 -0
- package/dist/lang/translations/ne.json +281 -0
- package/dist/lang/translations/nl-BE.json +281 -0
- package/dist/lang/translations/nl.json +281 -0
- package/dist/lang/translations/nn.json +281 -0
- package/dist/lang/translations/no.json +281 -0
- package/dist/lang/translations/pa.json +281 -0
- package/dist/lang/translations/pl.json +281 -0
- package/dist/lang/translations/pt-BR.json +281 -0
- package/dist/lang/translations/pt.json +281 -0
- package/dist/lang/translations/ro.json +281 -0
- package/dist/lang/translations/ru.json +281 -0
- package/dist/lang/translations/sk.json +281 -0
- package/dist/lang/translations/sl.json +281 -0
- package/dist/lang/translations/sq.json +281 -0
- package/dist/lang/translations/sr.json +281 -0
- package/dist/lang/translations/sv.json +281 -0
- package/dist/lang/translations/sw.json +281 -0
- package/dist/lang/translations/ta.json +281 -0
- package/dist/lang/translations/te.json +281 -0
- package/dist/lang/translations/th.json +281 -0
- package/dist/lang/translations/tr.json +281 -0
- package/dist/lang/translations/uk.json +281 -0
- package/dist/lang/translations/ur.json +281 -0
- package/dist/lang/translations/uz.json +281 -0
- package/dist/lang/translations/vi.json +281 -0
- package/dist/lang/translations/zh-CN.json +280 -0
- package/dist/lang/translations/zh-HK.json +281 -0
- package/dist/lang/translations/zh-TW.json +281 -0
- package/dist/lang/translations/zu.json +281 -0
- package/package.json +63 -0
package/CHANGELOG.md
ADDED
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 WorkOS
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# WorkOS Widgets Internationalization
|
|
2
|
+
|
|
3
|
+
A package providing internationalization support for [WorkOS Widgets](https://workos.com/docs/widgets).
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **90+ supported locales**: Comprehensive language support including regional variants (e.g., `en-US`, `en-GB`, `fr-CA`, `zh-CN`)
|
|
8
|
+
- **RTL support**: Automatic right-to-left text direction for Arabic (`ar`), Farsi (`fa`), Hebrew (`he`), and Urdu (`ur`)
|
|
9
|
+
- **Dynamic dictionary loading**: Locale dictionaries are lazily loaded to minimize initial bundle size
|
|
10
|
+
|
|
11
|
+
## API
|
|
12
|
+
|
|
13
|
+
### Components
|
|
14
|
+
|
|
15
|
+
- **`WorkOsLocaleProvider`**: React context provider that wraps your application to enable localization for WorkOS widgets
|
|
16
|
+
|
|
17
|
+
### Functions
|
|
18
|
+
|
|
19
|
+
- **`getDictionary(locale)`**: Asynchronously loads the translation dictionary for a given locale
|
|
20
|
+
- **`isValidLocale(locale)`**: Type guard to check if a string is a valid locale code
|
|
21
|
+
- **`getDir(locale)`**: Returns `"ltr"` or `"rtl"` based on the locale's text direction
|
|
22
|
+
- **`getLocaleCodes()`**: Returns a `Set` of all supported locale codes
|
|
23
|
+
|
|
24
|
+
### Constants & Types
|
|
25
|
+
|
|
26
|
+
- **`LocaleCode`**: TypeScript type representing supported locale codes
|
|
27
|
+
- **`WorkOsLocaleProviderProps`**: Props interface for the locale provider
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
Wrap your application with `WorkOsLocaleProvider` to enable localization:
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
import { WorkOsLocaleProvider } from "@workos-inc/widgets-i18n";
|
|
35
|
+
|
|
36
|
+
function App() {
|
|
37
|
+
return (
|
|
38
|
+
<WorkOsLocaleProvider locale="en-US">
|
|
39
|
+
{/* your app goes here */}
|
|
40
|
+
</WorkOsLocaleProvider>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Server-Side Locale Detection
|
|
46
|
+
|
|
47
|
+
Detect the user's preferred locale from request headers:
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
// utils/locale.ts
|
|
51
|
+
import {
|
|
52
|
+
getDir,
|
|
53
|
+
getLocaleCodes,
|
|
54
|
+
isValidLocale,
|
|
55
|
+
type LocaleCode,
|
|
56
|
+
} from "@workos-inc/widgets-i18n";
|
|
57
|
+
import Negotiator from "negotiator";
|
|
58
|
+
import * as React from "react";
|
|
59
|
+
|
|
60
|
+
const DEFAULT_LOCALE = "en-US" satisfies LocaleCode;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* For apps that support React Server Components, we recommend caching
|
|
64
|
+
* the results of this function using React.cache.
|
|
65
|
+
*
|
|
66
|
+
* @param acceptLanguage - The value of the accept language header from the request.
|
|
67
|
+
* Different frameworks will offer different ways to access this.
|
|
68
|
+
*/
|
|
69
|
+
export const getLocale = React.cache(
|
|
70
|
+
async (acceptLanguage = DEFAULT_LOCALE): Promise<LocaleCode> => {
|
|
71
|
+
const negotiator = new Negotiator({
|
|
72
|
+
headers: { "accept-language": acceptLanguage },
|
|
73
|
+
});
|
|
74
|
+
const locale = negotiator.language(Array.from(getLocaleCodes()));
|
|
75
|
+
return isValidLocale(locale) ? locale : DEFAULT_LOCALE;
|
|
76
|
+
},
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
export function getLocaleDir(locale: LocaleCode) {
|
|
80
|
+
return getDir(locale);
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Apply localization at the root layout level:
|
|
85
|
+
|
|
86
|
+
```tsx
|
|
87
|
+
import { WorkOsLocaleProvider } from "@workos-inc/widgets-i18n";
|
|
88
|
+
import { getLocale, getLocaleDir } from "~/utils/locale";
|
|
89
|
+
import { getRequest } from "your-favorite-framework";
|
|
90
|
+
import "@workos-inc/widgets/styles.css";
|
|
91
|
+
|
|
92
|
+
export default async function RootLayout({ children }) {
|
|
93
|
+
const request = getRequest();
|
|
94
|
+
const locale = await getLocale(request.headers.get("accept-language"));
|
|
95
|
+
const direction = getLocaleDir(locale);
|
|
96
|
+
return (
|
|
97
|
+
<WorkOsLocaleProvider locale={locale}>
|
|
98
|
+
<html dir={direction} lang={locale}>
|
|
99
|
+
<body>{children}</body>
|
|
100
|
+
</html>
|
|
101
|
+
</WorkOsLocaleProvider>
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Server-Side Dictionary Loading (React 19)
|
|
107
|
+
|
|
108
|
+
For React 19 applications, you can pre-load the dictionary on the server using `React.use()`:
|
|
109
|
+
|
|
110
|
+
```tsx
|
|
111
|
+
import { getDictionary, WorkOsLocaleProvider } from "@workos-inc/widgets-i18n";
|
|
112
|
+
import * as React from "react";
|
|
113
|
+
|
|
114
|
+
function LocalizedApp({ locale, children }) {
|
|
115
|
+
const messages = React.use(getDictionary(locale));
|
|
116
|
+
return (
|
|
117
|
+
<React.Suspense fallback={<Loading />}>
|
|
118
|
+
<WorkOsLocaleProvider locale={locale} initialMessages={messages}>
|
|
119
|
+
{children}
|
|
120
|
+
</WorkOsLocaleProvider>
|
|
121
|
+
</React.Suspense>
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Supported locales
|
|
127
|
+
|
|
128
|
+
| Locale code | Language | Autonym |
|
|
129
|
+
| ----------- | ----------------------- | ----------------------- |
|
|
130
|
+
| `af` | Afrikaans | Afrikaans |
|
|
131
|
+
| `am` | Amharic | አማርኛ |
|
|
132
|
+
| `ar` | Arabic | العربية |
|
|
133
|
+
| `bg` | Bulgarian | Български |
|
|
134
|
+
| `bn` | Bengali (Bangla) | বাংলা |
|
|
135
|
+
| `bs` | Bosnian | Bosanski |
|
|
136
|
+
| `ca` | Catalan | Català |
|
|
137
|
+
| `cs` | Czech | Čeština |
|
|
138
|
+
| `da` | Danish | Dansk |
|
|
139
|
+
| `de` | German | Deutsch |
|
|
140
|
+
| `de-DE` | German (Germany) | Deutsch (Deutschland) |
|
|
141
|
+
| `el` | Greek | Ελληνικά |
|
|
142
|
+
| `en` | English | English |
|
|
143
|
+
| `en-AU` | English (Australia) | English (Australia) |
|
|
144
|
+
| `en-CA` | English (Canada) | English (Canada) |
|
|
145
|
+
| `en-GB` | English (UK) | English (UK) |
|
|
146
|
+
| `en-US` | English (US) | English (US) |
|
|
147
|
+
| `es` | Spanish | Español |
|
|
148
|
+
| `es-419` | Spanish (Latin America) | Español (Latinoamérica) |
|
|
149
|
+
| `es-ES` | Spanish (Spain) | Español (España) |
|
|
150
|
+
| `es-US` | Spanish (US) | Español (EE.UU.) |
|
|
151
|
+
| `et` | Estonian | Eesti |
|
|
152
|
+
| `fa` | Farsi (Persian) | فارسی |
|
|
153
|
+
| `fi` | Finnish | Suomi |
|
|
154
|
+
| `fil` | Filipino (Tagalog) | Filipino |
|
|
155
|
+
| `fr` | French | Français |
|
|
156
|
+
| `fr-BE` | French (Belgium) | Français (Belgique) |
|
|
157
|
+
| `fr-CA` | French (Canada) | Français (Canada) |
|
|
158
|
+
| `fr-FR` | French (France) | Français (France) |
|
|
159
|
+
| `fy` | Frisian | Frysk |
|
|
160
|
+
| `gl` | Galician | Galego |
|
|
161
|
+
| `gu` | Gujarati | ગુજરાતી |
|
|
162
|
+
| `ha` | Hausa | هَرْشٜن هَوْس |
|
|
163
|
+
| `he` | Hebrew | עברית |
|
|
164
|
+
| `hi` | Hindi | हिन्दी |
|
|
165
|
+
| `hr` | Croatian | Hrvatski |
|
|
166
|
+
| `hu` | Hungarian | Magyar |
|
|
167
|
+
| `hy` | Armenian | Հայերեն |
|
|
168
|
+
| `id` | Indonesian | Bahasa Indonesia |
|
|
169
|
+
| `is` | Icelandic | Íslenska |
|
|
170
|
+
| `it` | Italian | Italiano |
|
|
171
|
+
| `it-IT` | Italian (Italy) | Italiano (Italia) |
|
|
172
|
+
| `ja` | Japanese | 日本語 |
|
|
173
|
+
| `jv` | Javanese | ꦧꦱꦗꦮ |
|
|
174
|
+
| `ka` | Georgian | ქართული |
|
|
175
|
+
| `kk` | Kazakh | Қазақ тілі |
|
|
176
|
+
| `km` | Khmer | ខេមរភាសា |
|
|
177
|
+
| `kn` | Kannada | ಕನ್ನಡ |
|
|
178
|
+
| `ko` | Korean | 한국어 |
|
|
179
|
+
| `lt` | Lithuanian | Lietuvių |
|
|
180
|
+
| `lv` | Latvian | Latviešu |
|
|
181
|
+
| `mk` | Macedonian | Македонски |
|
|
182
|
+
| `ml` | Malayalam | മലയാളം |
|
|
183
|
+
| `mn` | Mongolian | Монгол |
|
|
184
|
+
| `mr` | Marathi | मराठी |
|
|
185
|
+
| `ms` | Malay | Bahasa Melayu |
|
|
186
|
+
| `my` | Burmese | မြန်မာ |
|
|
187
|
+
| `nb` | Norwegian Bokmål | Norsk Bokmål |
|
|
188
|
+
| `ne` | Nepali | नेपाली भाषा |
|
|
189
|
+
| `nl` | Dutch | Nederlands |
|
|
190
|
+
| `nl-BE` | Flemish | Vlaams |
|
|
191
|
+
| `nl-NL` | Dutch (Netherlands) | Nederlands (Nederland) |
|
|
192
|
+
| `nn` | Norwegian Nynorsk | Norsk Nynorsk |
|
|
193
|
+
| `no` | Norwegian | Norsk |
|
|
194
|
+
| `pa` | Punjabi | ਪੰਜਾਬੀ |
|
|
195
|
+
| `pl` | Polish | Polski |
|
|
196
|
+
| `pt` | Portuguese | Português |
|
|
197
|
+
| `pt-BR` | Portuguese (Brazil) | Português (Brasil) |
|
|
198
|
+
| `pt-PT` | Portuguese (Portugal) | Português (Portugal) |
|
|
199
|
+
| `ro` | Romanian | Română |
|
|
200
|
+
| `ru` | Russian | Русский |
|
|
201
|
+
| `sk` | Slovak | Slovenčina |
|
|
202
|
+
| `sl` | Slovenian | Slovenščina |
|
|
203
|
+
| `sq` | Albanian | Shqip |
|
|
204
|
+
| `sr` | Serbian | Српски |
|
|
205
|
+
| `sv` | Swedish | Svenska |
|
|
206
|
+
| `sw` | Swahili | Kiswahili |
|
|
207
|
+
| `ta` | Tamil | தமிழ் |
|
|
208
|
+
| `te` | Telugu | తెలుగు |
|
|
209
|
+
| `th` | Thai | ไทย |
|
|
210
|
+
| `tr` | Turkish | Türkçe |
|
|
211
|
+
| `uk` | Ukrainian | Українська |
|
|
212
|
+
| `ur` | Urdu | اُردُو |
|
|
213
|
+
| `uz` | Uzbek | Ózbekça |
|
|
214
|
+
| `vi` | Vietnamese | Tiếng Việt |
|
|
215
|
+
| `zh` | Chinese | 中文 |
|
|
216
|
+
| `zh-CN` | Chinese (Simplified) | 中文 (中国) |
|
|
217
|
+
| `zh-HK` | Chinese (Hong Kong) | 中文(香港) |
|
|
218
|
+
| `zh-TW` | Chinese (Taiwan) | 中文(台灣) |
|
|
219
|
+
| `zu` | Zulu | isiZulu |
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var index_exports = {};
|
|
20
|
+
__export(index_exports, {
|
|
21
|
+
WorkOsLocaleProvider: () => import_locale_provider.WorkOsLocaleProvider,
|
|
22
|
+
getDictionary: () => import_dictionaries.getDictionary,
|
|
23
|
+
getDir: () => import_dictionaries.getDir,
|
|
24
|
+
getLocaleCodes: () => import_dictionaries.getLocaleCodes,
|
|
25
|
+
isValidLocale: () => import_dictionaries.isValidLocale
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(index_exports);
|
|
28
|
+
var import_dictionaries = require("./lib/dictionaries.js");
|
|
29
|
+
var import_locale_provider = require("./lib/locale-provider.js");
|
|
30
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
+
0 && (module.exports = {
|
|
32
|
+
WorkOsLocaleProvider,
|
|
33
|
+
getDictionary,
|
|
34
|
+
getDir,
|
|
35
|
+
getLocaleCodes,
|
|
36
|
+
isValidLocale
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export {\n isValidLocale,\n getDictionary,\n getDir,\n getLocaleCodes,\n type LocaleCode,\n} from \"./lib/dictionaries.js\";\nexport { WorkOsLocaleProvider } from \"./lib/locale-provider.js\";\nexport type { WorkOsLocaleProviderProps } from \"./lib/locale-provider.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAMO;AACP,6BAAqC;","names":[]}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var dictionaries_exports = {};
|
|
30
|
+
__export(dictionaries_exports, {
|
|
31
|
+
DEFAULT_LOCALE: () => DEFAULT_LOCALE,
|
|
32
|
+
getDictionary: () => getDictionary,
|
|
33
|
+
getDir: () => getDir,
|
|
34
|
+
getLocaleCodes: () => getLocaleCodes,
|
|
35
|
+
isValidLocale: () => isValidLocale
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(dictionaries_exports);
|
|
38
|
+
const DEFAULT_LOCALE = "en-US";
|
|
39
|
+
const enUS = Promise.resolve({});
|
|
40
|
+
const importMap = {
|
|
41
|
+
af: () => import("../../lang/translations/af.json"),
|
|
42
|
+
am: () => import("../../lang/translations/am.json"),
|
|
43
|
+
ar: () => import("../../lang/translations/ar.json"),
|
|
44
|
+
bg: () => import("../../lang/translations/bg.json"),
|
|
45
|
+
bn: () => import("../../lang/translations/bn.json"),
|
|
46
|
+
bs: () => import("../../lang/translations/bs.json"),
|
|
47
|
+
ca: () => import("../../lang/translations/ca.json"),
|
|
48
|
+
cs: () => import("../../lang/translations/cs.json"),
|
|
49
|
+
da: () => import("../../lang/translations/da.json"),
|
|
50
|
+
de: () => import("../../lang/translations/de.json"),
|
|
51
|
+
"de-DE": () => import("../../lang/translations/de.json"),
|
|
52
|
+
el: () => import("../../lang/translations/el.json"),
|
|
53
|
+
en: async () => ({ default: {} }),
|
|
54
|
+
"en-AU": () => import("../../lang/translations/en-AU.json"),
|
|
55
|
+
"en-CA": () => import("../../lang/translations/en-CA.json"),
|
|
56
|
+
"en-GB": () => import("../../lang/translations/en-GB.json"),
|
|
57
|
+
"en-US": async () => ({ default: {} }),
|
|
58
|
+
es: () => import("../../lang/translations/es.json"),
|
|
59
|
+
"es-419": () => import("../../lang/translations/es-419.json"),
|
|
60
|
+
"es-ES": () => import("../../lang/translations/es.json"),
|
|
61
|
+
"es-US": () => import("../../lang/translations/es-US.json"),
|
|
62
|
+
et: () => import("../../lang/translations/et.json"),
|
|
63
|
+
fa: () => import("../../lang/translations/fa.json"),
|
|
64
|
+
fi: () => import("../../lang/translations/fi.json"),
|
|
65
|
+
fil: () => import("../../lang/translations/fil.json"),
|
|
66
|
+
fr: () => import("../../lang/translations/fr.json"),
|
|
67
|
+
"fr-BE": () => import("../../lang/translations/fr-BE.json"),
|
|
68
|
+
"fr-CA": () => import("../../lang/translations/fr-CA.json"),
|
|
69
|
+
"fr-FR": () => import("../../lang/translations/fr.json"),
|
|
70
|
+
fy: () => import("../../lang/translations/fy.json"),
|
|
71
|
+
gl: () => import("../../lang/translations/gl.json"),
|
|
72
|
+
gu: () => import("../../lang/translations/gu.json"),
|
|
73
|
+
ha: () => import("../../lang/translations/ha.json"),
|
|
74
|
+
he: () => import("../../lang/translations/he.json"),
|
|
75
|
+
hi: () => import("../../lang/translations/hi.json"),
|
|
76
|
+
hr: () => import("../../lang/translations/hr.json"),
|
|
77
|
+
hu: () => import("../../lang/translations/hu.json"),
|
|
78
|
+
hy: () => import("../../lang/translations/hy.json"),
|
|
79
|
+
id: () => import("../../lang/translations/id.json"),
|
|
80
|
+
is: () => import("../../lang/translations/is.json"),
|
|
81
|
+
it: () => import("../../lang/translations/it.json"),
|
|
82
|
+
"it-IT": () => import("../../lang/translations/it.json"),
|
|
83
|
+
ja: () => import("../../lang/translations/ja.json"),
|
|
84
|
+
jv: () => import("../../lang/translations/jv.json"),
|
|
85
|
+
ka: () => import("../../lang/translations/ka.json"),
|
|
86
|
+
kk: () => import("../../lang/translations/kk.json"),
|
|
87
|
+
km: () => import("../../lang/translations/km.json"),
|
|
88
|
+
kn: () => import("../../lang/translations/kn.json"),
|
|
89
|
+
ko: () => import("../../lang/translations/ko.json"),
|
|
90
|
+
lt: () => import("../../lang/translations/lt.json"),
|
|
91
|
+
lv: () => import("../../lang/translations/lv.json"),
|
|
92
|
+
mk: () => import("../../lang/translations/mk.json"),
|
|
93
|
+
ml: () => import("../../lang/translations/ml.json"),
|
|
94
|
+
mn: () => import("../../lang/translations/mn.json"),
|
|
95
|
+
mr: () => import("../../lang/translations/mr.json"),
|
|
96
|
+
ms: () => import("../../lang/translations/ms.json"),
|
|
97
|
+
my: () => import("../../lang/translations/my.json"),
|
|
98
|
+
nb: () => import("../../lang/translations/nb.json"),
|
|
99
|
+
ne: () => import("../../lang/translations/ne.json"),
|
|
100
|
+
nl: () => import("../../lang/translations/nl.json"),
|
|
101
|
+
"nl-BE": () => import("../../lang/translations/nl-BE.json"),
|
|
102
|
+
"nl-NL": () => import("../../lang/translations/nl.json"),
|
|
103
|
+
nn: () => import("../../lang/translations/nn.json"),
|
|
104
|
+
no: () => import("../../lang/translations/no.json"),
|
|
105
|
+
pa: () => import("../../lang/translations/pa.json"),
|
|
106
|
+
pl: () => import("../../lang/translations/pl.json"),
|
|
107
|
+
pt: () => import("../../lang/translations/pt.json"),
|
|
108
|
+
"pt-BR": () => import("../../lang/translations/pt-BR.json"),
|
|
109
|
+
"pt-PT": () => import("../../lang/translations/pt.json"),
|
|
110
|
+
ro: () => import("../../lang/translations/ro.json"),
|
|
111
|
+
ru: () => import("../../lang/translations/ru.json"),
|
|
112
|
+
sk: () => import("../../lang/translations/sk.json"),
|
|
113
|
+
sl: () => import("../../lang/translations/sl.json"),
|
|
114
|
+
sq: () => import("../../lang/translations/sq.json"),
|
|
115
|
+
sr: () => import("../../lang/translations/sr.json"),
|
|
116
|
+
sv: () => import("../../lang/translations/sv.json"),
|
|
117
|
+
sw: () => import("../../lang/translations/sw.json"),
|
|
118
|
+
ta: () => import("../../lang/translations/ta.json"),
|
|
119
|
+
te: () => import("../../lang/translations/te.json"),
|
|
120
|
+
th: () => import("../../lang/translations/th.json"),
|
|
121
|
+
tr: () => import("../../lang/translations/tr.json"),
|
|
122
|
+
uk: () => import("../../lang/translations/uk.json"),
|
|
123
|
+
ur: () => import("../../lang/translations/ur.json"),
|
|
124
|
+
uz: () => import("../../lang/translations/uz.json"),
|
|
125
|
+
vi: () => import("../../lang/translations/vi.json"),
|
|
126
|
+
zh: () => import("../../lang/translations/zh-CN.json"),
|
|
127
|
+
"zh-CN": () => import("../../lang/translations/zh-CN.json"),
|
|
128
|
+
"zh-HK": () => import("../../lang/translations/zh-HK.json"),
|
|
129
|
+
"zh-TW": () => import("../../lang/translations/zh-TW.json"),
|
|
130
|
+
zu: () => import("../../lang/translations/zu.json")
|
|
131
|
+
};
|
|
132
|
+
let localeCodesCache;
|
|
133
|
+
function getLocaleCodes() {
|
|
134
|
+
if (localeCodesCache) {
|
|
135
|
+
return new Set(localeCodesCache);
|
|
136
|
+
}
|
|
137
|
+
localeCodesCache = new Set(Object.keys(importMap));
|
|
138
|
+
return localeCodesCache;
|
|
139
|
+
}
|
|
140
|
+
async function loadDictionary(localeCode) {
|
|
141
|
+
const asyncImport = importMap[localeCode];
|
|
142
|
+
if (!asyncImport) {
|
|
143
|
+
return enUS;
|
|
144
|
+
}
|
|
145
|
+
const dictionary = await asyncImport();
|
|
146
|
+
return dictionary.default || enUS;
|
|
147
|
+
}
|
|
148
|
+
const promiseCache = /* @__PURE__ */ new Map();
|
|
149
|
+
const isValidLocale = (locale) => typeof locale === "string" && (localeCodesCache || getLocaleCodes()).has(locale);
|
|
150
|
+
const RTL_LOCALES = /* @__PURE__ */ new Set(["ar", "fa", "he", "ur"]);
|
|
151
|
+
const getDir = (locale) => RTL_LOCALES.has(locale) ? "rtl" : "ltr";
|
|
152
|
+
function getDictionary(localeCode) {
|
|
153
|
+
if (!isValidLocale(localeCode)) {
|
|
154
|
+
console.warn(
|
|
155
|
+
`@workos-inc/widgets-i18n: locale ${localeCode} is invalid, falling back to ${DEFAULT_LOCALE}`
|
|
156
|
+
);
|
|
157
|
+
return enUS;
|
|
158
|
+
}
|
|
159
|
+
const cached = promiseCache.get(localeCode);
|
|
160
|
+
if (cached) {
|
|
161
|
+
return cached;
|
|
162
|
+
}
|
|
163
|
+
const promise = loadDictionary(localeCode);
|
|
164
|
+
promiseCache.set(localeCode, promise);
|
|
165
|
+
promise.catch(() => {
|
|
166
|
+
promiseCache.delete(localeCode);
|
|
167
|
+
});
|
|
168
|
+
return promise;
|
|
169
|
+
}
|
|
170
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
171
|
+
0 && (module.exports = {
|
|
172
|
+
DEFAULT_LOCALE,
|
|
173
|
+
getDictionary,
|
|
174
|
+
getDir,
|
|
175
|
+
getLocaleCodes,
|
|
176
|
+
isValidLocale
|
|
177
|
+
});
|
|
178
|
+
//# sourceMappingURL=dictionaries.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/dictionaries.ts"],"sourcesContent":["export const DEFAULT_LOCALE = \"en-US\";\nconst enUS = Promise.resolve({});\n\nexport type Dictionary = Record<string, string>;\n\n// The import path must be a string literal (not a variable) so that webpack can\n// do static analysis and create individual bundles for each JSON file\nconst importMap = {\n af: () => import(\"../../lang/translations/af.json\"),\n am: () => import(\"../../lang/translations/am.json\"),\n ar: () => import(\"../../lang/translations/ar.json\"),\n bg: () => import(\"../../lang/translations/bg.json\"),\n bn: () => import(\"../../lang/translations/bn.json\"),\n bs: () => import(\"../../lang/translations/bs.json\"),\n ca: () => import(\"../../lang/translations/ca.json\"),\n cs: () => import(\"../../lang/translations/cs.json\"),\n da: () => import(\"../../lang/translations/da.json\"),\n de: () => import(\"../../lang/translations/de.json\"),\n \"de-DE\": () => import(\"../../lang/translations/de.json\"),\n el: () => import(\"../../lang/translations/el.json\"),\n en: async () => ({ default: {} }),\n \"en-AU\": () => import(\"../../lang/translations/en-AU.json\"),\n \"en-CA\": () => import(\"../../lang/translations/en-CA.json\"),\n \"en-GB\": () => import(\"../../lang/translations/en-GB.json\"),\n \"en-US\": async () => ({ default: {} }),\n es: () => import(\"../../lang/translations/es.json\"),\n \"es-419\": () => import(\"../../lang/translations/es-419.json\"),\n \"es-ES\": () => import(\"../../lang/translations/es.json\"),\n \"es-US\": () => import(\"../../lang/translations/es-US.json\"),\n et: () => import(\"../../lang/translations/et.json\"),\n fa: () => import(\"../../lang/translations/fa.json\"),\n fi: () => import(\"../../lang/translations/fi.json\"),\n fil: () => import(\"../../lang/translations/fil.json\"),\n fr: () => import(\"../../lang/translations/fr.json\"),\n \"fr-BE\": () => import(\"../../lang/translations/fr-BE.json\"),\n \"fr-CA\": () => import(\"../../lang/translations/fr-CA.json\"),\n \"fr-FR\": () => import(\"../../lang/translations/fr.json\"),\n fy: () => import(\"../../lang/translations/fy.json\"),\n gl: () => import(\"../../lang/translations/gl.json\"),\n gu: () => import(\"../../lang/translations/gu.json\"),\n ha: () => import(\"../../lang/translations/ha.json\"),\n he: () => import(\"../../lang/translations/he.json\"),\n hi: () => import(\"../../lang/translations/hi.json\"),\n hr: () => import(\"../../lang/translations/hr.json\"),\n hu: () => import(\"../../lang/translations/hu.json\"),\n hy: () => import(\"../../lang/translations/hy.json\"),\n id: () => import(\"../../lang/translations/id.json\"),\n is: () => import(\"../../lang/translations/is.json\"),\n it: () => import(\"../../lang/translations/it.json\"),\n \"it-IT\": () => import(\"../../lang/translations/it.json\"),\n ja: () => import(\"../../lang/translations/ja.json\"),\n jv: () => import(\"../../lang/translations/jv.json\"),\n ka: () => import(\"../../lang/translations/ka.json\"),\n kk: () => import(\"../../lang/translations/kk.json\"),\n km: () => import(\"../../lang/translations/km.json\"),\n kn: () => import(\"../../lang/translations/kn.json\"),\n ko: () => import(\"../../lang/translations/ko.json\"),\n lt: () => import(\"../../lang/translations/lt.json\"),\n lv: () => import(\"../../lang/translations/lv.json\"),\n mk: () => import(\"../../lang/translations/mk.json\"),\n ml: () => import(\"../../lang/translations/ml.json\"),\n mn: () => import(\"../../lang/translations/mn.json\"),\n mr: () => import(\"../../lang/translations/mr.json\"),\n ms: () => import(\"../../lang/translations/ms.json\"),\n my: () => import(\"../../lang/translations/my.json\"),\n nb: () => import(\"../../lang/translations/nb.json\"),\n ne: () => import(\"../../lang/translations/ne.json\"),\n nl: () => import(\"../../lang/translations/nl.json\"),\n \"nl-BE\": () => import(\"../../lang/translations/nl-BE.json\"),\n \"nl-NL\": () => import(\"../../lang/translations/nl.json\"),\n nn: () => import(\"../../lang/translations/nn.json\"),\n no: () => import(\"../../lang/translations/no.json\"),\n pa: () => import(\"../../lang/translations/pa.json\"),\n pl: () => import(\"../../lang/translations/pl.json\"),\n pt: () => import(\"../../lang/translations/pt.json\"),\n \"pt-BR\": () => import(\"../../lang/translations/pt-BR.json\"),\n \"pt-PT\": () => import(\"../../lang/translations/pt.json\"),\n ro: () => import(\"../../lang/translations/ro.json\"),\n ru: () => import(\"../../lang/translations/ru.json\"),\n sk: () => import(\"../../lang/translations/sk.json\"),\n sl: () => import(\"../../lang/translations/sl.json\"),\n sq: () => import(\"../../lang/translations/sq.json\"),\n sr: () => import(\"../../lang/translations/sr.json\"),\n sv: () => import(\"../../lang/translations/sv.json\"),\n sw: () => import(\"../../lang/translations/sw.json\"),\n ta: () => import(\"../../lang/translations/ta.json\"),\n te: () => import(\"../../lang/translations/te.json\"),\n th: () => import(\"../../lang/translations/th.json\"),\n tr: () => import(\"../../lang/translations/tr.json\"),\n uk: () => import(\"../../lang/translations/uk.json\"),\n ur: () => import(\"../../lang/translations/ur.json\"),\n uz: () => import(\"../../lang/translations/uz.json\"),\n vi: () => import(\"../../lang/translations/vi.json\"),\n zh: () => import(\"../../lang/translations/zh-CN.json\"),\n \"zh-CN\": () => import(\"../../lang/translations/zh-CN.json\"),\n \"zh-HK\": () => import(\"../../lang/translations/zh-HK.json\"),\n \"zh-TW\": () => import(\"../../lang/translations/zh-TW.json\"),\n zu: () => import(\"../../lang/translations/zu.json\"),\n} satisfies Record<string, () => Promise<{ default: Dictionary }>>;\n\nexport type LocaleCode = keyof typeof importMap;\n\nlet localeCodesCache: Set<LocaleCode> | undefined;\n\nexport function getLocaleCodes(): Set<LocaleCode> {\n if (localeCodesCache) {\n return new Set(localeCodesCache);\n }\n localeCodesCache = new Set(Object.keys(importMap) as LocaleCode[]);\n return localeCodesCache;\n}\n\nasync function loadDictionary(localeCode: LocaleCode): Promise<Dictionary> {\n const asyncImport = importMap[localeCode];\n if (!asyncImport) {\n return enUS;\n }\n\n const dictionary = await asyncImport();\n return dictionary.default || enUS;\n}\n\n// Cache for storing promises by locale code\n// This ensures React Suspense receives the same promise instance for the same locale\nconst promiseCache = new Map<LocaleCode, Promise<Dictionary>>();\n\nexport const isValidLocale = (locale: unknown): locale is LocaleCode =>\n typeof locale === \"string\" &&\n (localeCodesCache || getLocaleCodes()).has(locale as LocaleCode);\n\n// Arabic, Farsi (Persian), Hebrew, and Urdu are RTL\nconst RTL_LOCALES = new Set([\"ar\", \"fa\", \"he\", \"ur\"]);\nexport const getDir = (locale: LocaleCode): \"ltr\" | \"rtl\" =>\n RTL_LOCALES.has(locale) ? \"rtl\" : \"ltr\";\n\nexport function getDictionary(localeCode: string): Promise<Dictionary> {\n if (!isValidLocale(localeCode)) {\n // en-US is imported normally and used as a fallback\n console.warn(\n `@workos-inc/widgets-i18n: locale ${localeCode} is invalid, falling back to ${DEFAULT_LOCALE}`,\n );\n return enUS;\n }\n\n const cached = promiseCache.get(localeCode);\n if (cached) {\n return cached;\n }\n\n const promise = loadDictionary(localeCode);\n promiseCache.set(localeCode, promise);\n\n // If the promise fails, remove it from cache so it can be retried\n promise.catch(() => {\n promiseCache.delete(localeCode);\n });\n\n return promise;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,iBAAiB;AAC9B,MAAM,OAAO,QAAQ,QAAQ,CAAC,CAAC;AAM/B,MAAM,YAAY;AAAA,EAChB,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,SAAS,MAAM,OAAO,iCAAiC;AAAA,EACvD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,aAAa,EAAE,SAAS,CAAC,EAAE;AAAA,EAC/B,SAAS,MAAM,OAAO,oCAAoC;AAAA,EAC1D,SAAS,MAAM,OAAO,oCAAoC;AAAA,EAC1D,SAAS,MAAM,OAAO,oCAAoC;AAAA,EAC1D,SAAS,aAAa,EAAE,SAAS,CAAC,EAAE;AAAA,EACpC,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,UAAU,MAAM,OAAO,qCAAqC;AAAA,EAC5D,SAAS,MAAM,OAAO,iCAAiC;AAAA,EACvD,SAAS,MAAM,OAAO,oCAAoC;AAAA,EAC1D,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,KAAK,MAAM,OAAO,kCAAkC;AAAA,EACpD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,SAAS,MAAM,OAAO,oCAAoC;AAAA,EAC1D,SAAS,MAAM,OAAO,oCAAoC;AAAA,EAC1D,SAAS,MAAM,OAAO,iCAAiC;AAAA,EACvD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,SAAS,MAAM,OAAO,iCAAiC;AAAA,EACvD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,SAAS,MAAM,OAAO,oCAAoC;AAAA,EAC1D,SAAS,MAAM,OAAO,iCAAiC;AAAA,EACvD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,SAAS,MAAM,OAAO,oCAAoC;AAAA,EAC1D,SAAS,MAAM,OAAO,iCAAiC;AAAA,EACvD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,iCAAiC;AAAA,EAClD,IAAI,MAAM,OAAO,oCAAoC;AAAA,EACrD,SAAS,MAAM,OAAO,oCAAoC;AAAA,EAC1D,SAAS,MAAM,OAAO,oCAAoC;AAAA,EAC1D,SAAS,MAAM,OAAO,oCAAoC;AAAA,EAC1D,IAAI,MAAM,OAAO,iCAAiC;AACpD;AAIA,IAAI;AAEG,SAAS,iBAAkC;AAChD,MAAI,kBAAkB;AACpB,WAAO,IAAI,IAAI,gBAAgB;AAAA,EACjC;AACA,qBAAmB,IAAI,IAAI,OAAO,KAAK,SAAS,CAAiB;AACjE,SAAO;AACT;AAEA,eAAe,eAAe,YAA6C;AACzE,QAAM,cAAc,UAAU,UAAU;AACxC,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,MAAM,YAAY;AACrC,SAAO,WAAW,WAAW;AAC/B;AAIA,MAAM,eAAe,oBAAI,IAAqC;AAEvD,MAAM,gBAAgB,CAAC,WAC5B,OAAO,WAAW,aACjB,oBAAoB,eAAe,GAAG,IAAI,MAAoB;AAGjE,MAAM,cAAc,oBAAI,IAAI,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAC7C,MAAM,SAAS,CAAC,WACrB,YAAY,IAAI,MAAM,IAAI,QAAQ;AAE7B,SAAS,cAAc,YAAyC;AACrE,MAAI,CAAC,cAAc,UAAU,GAAG;AAE9B,YAAQ;AAAA,MACN,oCAAoC,UAAU,gCAAgC,cAAc;AAAA,IAC9F;AACA,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,aAAa,IAAI,UAAU;AAC1C,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,eAAe,UAAU;AACzC,eAAa,IAAI,YAAY,OAAO;AAGpC,UAAQ,MAAM,MAAM;AAClB,iBAAa,OAAO,UAAU;AAAA,EAChC,CAAC;AAED,SAAO;AACT;","names":[]}
|