@inventreedb/ui 0.0.2 → 0.0.3

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 (51) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/README.md +18 -7
  3. package/dist/.vite/manifest.json +125 -0
  4. package/dist/_virtual/errors.js +5 -0
  5. package/dist/_virtual/errors.js.map +1 -0
  6. package/dist/_virtual/index.js +6 -0
  7. package/dist/_virtual/index.js.map +1 -0
  8. package/dist/_virtual/index2.js +5 -0
  9. package/dist/_virtual/index2.js.map +1 -0
  10. package/dist/_virtual/lexer.js +5 -0
  11. package/dist/_virtual/lexer.js.map +1 -0
  12. package/dist/_virtual/moo.js +5 -0
  13. package/dist/_virtual/moo.js.map +1 -0
  14. package/dist/_virtual/parser.js +6 -0
  15. package/dist/_virtual/parser.js.map +1 -0
  16. package/dist/_virtual/parser2.js +5 -0
  17. package/dist/_virtual/parser2.js.map +1 -0
  18. package/dist/enums/ModelInformation.d.ts +20 -0
  19. package/dist/enums/ModelInformation.js +590 -0
  20. package/dist/enums/ModelInformation.js.map +1 -0
  21. package/dist/functions/Events.d.ts +1 -0
  22. package/dist/functions/Events.js +10 -0
  23. package/dist/functions/Events.js.map +1 -0
  24. package/dist/functions/Navigation.d.ts +8 -0
  25. package/dist/functions/Navigation.js +38 -0
  26. package/dist/functions/Navigation.js.map +1 -0
  27. package/dist/index.d.ts +1 -0
  28. package/dist/index.js +5 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/node_modules/@lingui/core/dist/index.js +405 -0
  31. package/dist/node_modules/@lingui/core/dist/index.js.map +1 -0
  32. package/dist/node_modules/@lingui/message-utils/dist/compileMessage.js +326 -0
  33. package/dist/node_modules/@lingui/message-utils/dist/compileMessage.js.map +1 -0
  34. package/dist/node_modules/@messageformat/parser/lib/lexer.js +74 -0
  35. package/dist/node_modules/@messageformat/parser/lib/lexer.js.map +1 -0
  36. package/dist/node_modules/@messageformat/parser/lib/parser.js +223 -0
  37. package/dist/node_modules/@messageformat/parser/lib/parser.js.map +1 -0
  38. package/dist/node_modules/moo/moo.js +539 -0
  39. package/dist/node_modules/moo/moo.js.map +1 -0
  40. package/dist/node_modules/unraw/dist/errors.js +39 -0
  41. package/dist/node_modules/unraw/dist/errors.js.map +1 -0
  42. package/dist/node_modules/unraw/dist/index.js +112 -0
  43. package/dist/node_modules/unraw/dist/index.js.map +1 -0
  44. package/dist/types/Icons.d.ts +5 -0
  45. package/dist/types/Plugins.js +1 -1
  46. package/lib/enums/ModelInformation.tsx +279 -0
  47. package/lib/functions/Events.tsx +6 -0
  48. package/lib/functions/Navigation.tsx +58 -0
  49. package/lib/index.ts +6 -0
  50. package/lib/types/Icons.tsx +9 -0
  51. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Navigation.js","sources":["../../lib/functions/Navigation.tsx"],"sourcesContent":["import type { NavigateFunction } from 'react-router-dom';\nimport { ModelInformationDict } from '../enums/ModelInformation';\nimport type { ModelType } from '../enums/ModelType';\nimport { cancelEvent } from './Events';\n\nexport const getBaseUrl = (): string =>\n (window as any).INVENTREE_SETTINGS?.base_url || 'web';\n\n/**\n * Returns the detail view URL for a given model type\n */\nexport function getDetailUrl(\n model: ModelType,\n pk: number | string,\n absolute?: boolean\n): string {\n const modelInfo = ModelInformationDict[model];\n\n if (pk === undefined || pk === null) {\n return '';\n }\n\n if (!!pk && modelInfo && modelInfo.url_detail) {\n const url = modelInfo.url_detail.replace(':pk', pk.toString());\n const base = getBaseUrl();\n\n if (absolute && base) {\n return `/${base}${url}`;\n } else {\n return url;\n }\n }\n\n console.error(`No detail URL found for model ${model} <${pk}>`);\n return '';\n}\n\n/*\n * Navigate to a provided link.\n * - If the link is to be opened externally, open it in a new tab.\n * - Otherwise, navigate using the provided navigate function.\n */\nexport const navigateToLink = (\n link: string,\n navigate: NavigateFunction,\n event: any\n) => {\n cancelEvent(event);\n\n if (event?.ctrlKey || event?.shiftKey) {\n // Open the link in a new tab\n const url = `/${getBaseUrl()}${link}`;\n window.open(url, '_blank');\n } else {\n // Navigate internally\n navigate(link);\n }\n};\n"],"names":["getBaseUrl","window","INVENTREE_SETTINGS","base_url","getDetailUrl","model","pk","absolute","modelInfo","ModelInformationDict","undefined","url_detail","url","replace","toString","base","console","error","navigateToLink","link","navigate","event","cancelEvent","ctrlKey","shiftKey","open"],"mappings":";;AAKO,MAAMA,aAAaA,MACvBC;;AAAAA,uBAAeC,uBAAfD,mBAAmCE,aAAY;AAAA;AAKlCC,SAAAA,aACdC,OACAC,IACAC,UACQ;AACFC,QAAAA,YAAYC,qBAAqBJ,KAAK;AAExCC,MAAAA,OAAOI,UAAaJ,OAAO,MAAM;AAC5B,WAAA;AAAA,EAAA;AAGT,MAAI,CAAC,CAACA,MAAME,aAAaA,UAAUG,YAAY;AAC7C,UAAMC,MAAMJ,UAAUG,WAAWE,QAAQ,OAAOP,GAAGQ,UAAU;AAC7D,UAAMC,OAAOf,WAAW;AAExB,QAAIO,YAAYQ,MAAM;AACb,aAAA,IAAIA,IAAI,GAAGH,GAAG;AAAA,IAAA,OAChB;AACEA,aAAAA;AAAAA,IAAAA;AAAAA,EACT;AAGFI,UAAQC,MAAM,iCAAiCZ,KAAK,KAAKC,EAAE,GAAG;AACvD,SAAA;AACT;AAOO,MAAMY,iBAAiBA,CAC5BC,MACAC,UACAC,UACG;AACHC,cAAYD,KAAK;AAEbA,OAAAA,+BAAOE,aAAWF,+BAAOG,WAAU;AAErC,UAAMZ,MAAM,IAAIZ,WAAW,CAAC,GAAGmB,IAAI;AAC5BM,WAAAA,KAAKb,KAAK,QAAQ;AAAA,EAAA,OACpB;AAELQ,aAASD,IAAI;AAAA,EAAA;AAEjB;"}
package/dist/index.d.ts CHANGED
@@ -3,4 +3,5 @@ export { ApiEndpoints } from './enums/ApiEndpoints';
3
3
  export { ModelType } from './enums/ModelType';
4
4
  export type { InvenTreePluginContext } from './types/Plugins';
5
5
  export { apiUrl } from './functions/Api';
6
+ export { getBaseUrl, getDetailUrl, navigateToLink } from './functions/Navigation';
6
7
  export { checkPluginVersion } from './functions/Plugins';
package/dist/index.js CHANGED
@@ -2,12 +2,16 @@ import { INVENTREE_PLUGIN_VERSION } from "./types/Plugins.js";
2
2
  import { ApiEndpoints } from "./enums/ApiEndpoints.js";
3
3
  import { ModelType } from "./enums/ModelType.js";
4
4
  import { apiUrl } from "./functions/Api.js";
5
+ import { getBaseUrl, getDetailUrl, navigateToLink } from "./functions/Navigation.js";
5
6
  import { checkPluginVersion } from "./functions/Plugins.js";
6
7
  export {
7
8
  ApiEndpoints,
8
9
  INVENTREE_PLUGIN_VERSION,
9
10
  ModelType,
10
11
  apiUrl,
11
- checkPluginVersion
12
+ checkPluginVersion,
13
+ getBaseUrl,
14
+ getDetailUrl,
15
+ navigateToLink
12
16
  };
13
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,405 @@
1
+ import { d as distExports } from "../../../../_virtual/index.js";
2
+ import { compileMessage } from "../../message-utils/dist/compileMessage.js";
3
+ const isString = (s) => typeof s === "string";
4
+ const isFunction = (f) => typeof f === "function";
5
+ const cache = /* @__PURE__ */ new Map();
6
+ const defaultLocale = "en";
7
+ function normalizeLocales(locales) {
8
+ const out = Array.isArray(locales) ? locales : [locales];
9
+ return [...out, defaultLocale];
10
+ }
11
+ function date(locales, value, format) {
12
+ const _locales = normalizeLocales(locales);
13
+ if (!format) {
14
+ format = "default";
15
+ }
16
+ let o;
17
+ if (typeof format === "string") {
18
+ o = {
19
+ day: "numeric",
20
+ month: "short",
21
+ year: "numeric"
22
+ };
23
+ switch (format) {
24
+ case "full":
25
+ o.weekday = "long";
26
+ case "long":
27
+ o.month = "long";
28
+ break;
29
+ case "short":
30
+ o.month = "numeric";
31
+ break;
32
+ }
33
+ } else {
34
+ o = format;
35
+ }
36
+ const formatter = getMemoized(
37
+ () => cacheKey("date", _locales, format),
38
+ () => new Intl.DateTimeFormat(_locales, o)
39
+ );
40
+ return formatter.format(isString(value) ? new Date(value) : value);
41
+ }
42
+ function time(locales, value, format) {
43
+ let o;
44
+ if (!format) {
45
+ format = "default";
46
+ }
47
+ if (typeof format === "string") {
48
+ o = {
49
+ second: "numeric",
50
+ minute: "numeric",
51
+ hour: "numeric"
52
+ };
53
+ switch (format) {
54
+ case "full":
55
+ case "long":
56
+ o.timeZoneName = "short";
57
+ break;
58
+ case "short":
59
+ delete o.second;
60
+ }
61
+ } else {
62
+ o = format;
63
+ }
64
+ return date(locales, value, o);
65
+ }
66
+ function number(locales, value, format) {
67
+ const _locales = normalizeLocales(locales);
68
+ const formatter = getMemoized(
69
+ () => cacheKey("number", _locales, format),
70
+ () => new Intl.NumberFormat(_locales, format)
71
+ );
72
+ return formatter.format(value);
73
+ }
74
+ function plural(locales, ordinal, value, { offset = 0, ...rules }) {
75
+ const _locales = normalizeLocales(locales);
76
+ const plurals = ordinal ? getMemoized(
77
+ () => cacheKey("plural-ordinal", _locales),
78
+ () => new Intl.PluralRules(_locales, { type: "ordinal" })
79
+ ) : getMemoized(
80
+ () => cacheKey("plural-cardinal", _locales),
81
+ () => new Intl.PluralRules(_locales, { type: "cardinal" })
82
+ );
83
+ return rules[value] ?? rules[plurals.select(value - offset)] ?? rules.other;
84
+ }
85
+ function getMemoized(getKey, construct) {
86
+ const key = getKey();
87
+ let formatter = cache.get(key);
88
+ if (!formatter) {
89
+ formatter = construct();
90
+ cache.set(key, formatter);
91
+ }
92
+ return formatter;
93
+ }
94
+ function cacheKey(type, locales, options) {
95
+ const localeKey = locales.join("-");
96
+ return `${type}-${localeKey}-${JSON.stringify(options)}`;
97
+ }
98
+ const UNICODE_REGEX = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/;
99
+ const OCTOTHORPE_PH = "%__lingui_octothorpe__%";
100
+ const getDefaultFormats = (locale, passedLocales, formats = {}) => {
101
+ const locales = passedLocales || locale;
102
+ const style = (format) => {
103
+ if (typeof format === "object")
104
+ return format;
105
+ return formats[format];
106
+ };
107
+ const replaceOctothorpe = (value, message) => {
108
+ const numberFormat = Object.keys(formats).length ? style("number") : void 0;
109
+ const valueStr = number(locales, value, numberFormat);
110
+ return message.replace(new RegExp(OCTOTHORPE_PH, "g"), valueStr);
111
+ };
112
+ return {
113
+ plural: (value, cases) => {
114
+ const { offset = 0 } = cases;
115
+ const message = plural(locales, false, value, cases);
116
+ return replaceOctothorpe(value - offset, message);
117
+ },
118
+ selectordinal: (value, cases) => {
119
+ const { offset = 0 } = cases;
120
+ const message = plural(locales, true, value, cases);
121
+ return replaceOctothorpe(value - offset, message);
122
+ },
123
+ select: selectFormatter,
124
+ number: (value, format) => number(
125
+ locales,
126
+ value,
127
+ style(format) || { style: format }
128
+ ),
129
+ date: (value, format) => date(locales, value, style(format) || format),
130
+ time: (value, format) => time(locales, value, style(format) || format)
131
+ };
132
+ };
133
+ const selectFormatter = (value, rules) => rules[value] ?? rules.other;
134
+ function interpolate(translation, locale, locales) {
135
+ return (values = {}, formats) => {
136
+ const formatters = getDefaultFormats(locale, locales, formats);
137
+ const formatMessage = (tokens, replaceOctothorpe = false) => {
138
+ if (!Array.isArray(tokens))
139
+ return tokens;
140
+ return tokens.reduce((message, token) => {
141
+ if (token === "#" && replaceOctothorpe) {
142
+ return message + OCTOTHORPE_PH;
143
+ }
144
+ if (isString(token)) {
145
+ return message + token;
146
+ }
147
+ const [name, type, format] = token;
148
+ let interpolatedFormat = {};
149
+ if (type === "plural" || type === "selectordinal" || type === "select") {
150
+ Object.entries(format).forEach(
151
+ ([key, value2]) => {
152
+ interpolatedFormat[key] = formatMessage(
153
+ value2,
154
+ type === "plural" || type === "selectordinal"
155
+ );
156
+ }
157
+ );
158
+ } else {
159
+ interpolatedFormat = format;
160
+ }
161
+ let value;
162
+ if (type) {
163
+ const formatter = formatters[type];
164
+ value = formatter(values[name], interpolatedFormat);
165
+ } else {
166
+ value = values[name];
167
+ }
168
+ if (value == null) {
169
+ return message;
170
+ }
171
+ return message + value;
172
+ }, "");
173
+ };
174
+ const result = formatMessage(translation);
175
+ if (isString(result) && UNICODE_REGEX.test(result)) {
176
+ return distExports.unraw(result);
177
+ }
178
+ if (isString(result))
179
+ return result;
180
+ return result ? String(result) : "";
181
+ };
182
+ }
183
+ var __defProp$1 = Object.defineProperty;
184
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
185
+ var __publicField$1 = (obj, key, value) => {
186
+ __defNormalProp$1(obj, key + "", value);
187
+ return value;
188
+ };
189
+ class EventEmitter {
190
+ constructor() {
191
+ __publicField$1(this, "_events", {});
192
+ }
193
+ on(event, listener) {
194
+ var _a;
195
+ (_a = this._events)[event] ?? (_a[event] = []);
196
+ this._events[event].push(listener);
197
+ return () => this.removeListener(event, listener);
198
+ }
199
+ removeListener(event, listener) {
200
+ const maybeListeners = this._getListeners(event);
201
+ if (!maybeListeners)
202
+ return;
203
+ const index = maybeListeners.indexOf(listener);
204
+ if (~index)
205
+ maybeListeners.splice(index, 1);
206
+ }
207
+ emit(event, ...args) {
208
+ const maybeListeners = this._getListeners(event);
209
+ if (!maybeListeners)
210
+ return;
211
+ maybeListeners.map((listener) => listener.apply(this, args));
212
+ }
213
+ _getListeners(event) {
214
+ const maybeListeners = this._events[event];
215
+ return Array.isArray(maybeListeners) ? maybeListeners : false;
216
+ }
217
+ }
218
+ var __defProp = Object.defineProperty;
219
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
220
+ var __publicField = (obj, key, value) => {
221
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
222
+ return value;
223
+ };
224
+ class I18n extends EventEmitter {
225
+ constructor(params) {
226
+ super();
227
+ __publicField(this, "_locale", "");
228
+ __publicField(this, "_locales");
229
+ __publicField(this, "_localeData", {});
230
+ __publicField(this, "_messages", {});
231
+ __publicField(this, "_missing");
232
+ __publicField(this, "_messageCompiler");
233
+ __publicField(this, "t", this._.bind(this));
234
+ if (process.env.NODE_ENV !== "production") {
235
+ this.setMessagesCompiler(compileMessage);
236
+ }
237
+ if (params.missing != null)
238
+ this._missing = params.missing;
239
+ if (params.messages != null)
240
+ this.load(params.messages);
241
+ if (params.localeData != null)
242
+ this.loadLocaleData(params.localeData);
243
+ if (typeof params.locale === "string" || params.locales) {
244
+ this.activate(params.locale ?? defaultLocale, params.locales);
245
+ }
246
+ }
247
+ get locale() {
248
+ return this._locale;
249
+ }
250
+ get locales() {
251
+ return this._locales;
252
+ }
253
+ get messages() {
254
+ return this._messages[this._locale] ?? {};
255
+ }
256
+ /**
257
+ * @deprecated this has no effect. Please remove this from the code. Deprecated in v4
258
+ */
259
+ get localeData() {
260
+ return this._localeData[this._locale] ?? {};
261
+ }
262
+ _loadLocaleData(locale, localeData) {
263
+ const maybeLocaleData = this._localeData[locale];
264
+ if (!maybeLocaleData) {
265
+ this._localeData[locale] = localeData;
266
+ } else {
267
+ Object.assign(maybeLocaleData, localeData);
268
+ }
269
+ }
270
+ /**
271
+ * Registers a `MessageCompiler` to enable the use of uncompiled catalogs at runtime.
272
+ *
273
+ * In production builds, the `MessageCompiler` is typically excluded to reduce bundle size.
274
+ * By default, message catalogs should be precompiled during the build process. However,
275
+ * if you need to compile catalogs at runtime, you can use this method to set a message compiler.
276
+ *
277
+ * Example usage:
278
+ *
279
+ * ```ts
280
+ * import { compileMessage } from "@lingui/message-utils/compileMessage";
281
+ *
282
+ * i18n.setMessagesCompiler(compileMessage);
283
+ * ```
284
+ */
285
+ setMessagesCompiler(compiler) {
286
+ this._messageCompiler = compiler;
287
+ return this;
288
+ }
289
+ /**
290
+ * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Deprecated in v4
291
+ */
292
+ loadLocaleData(localeOrAllData, localeData) {
293
+ if (typeof localeOrAllData === "string") {
294
+ this._loadLocaleData(localeOrAllData, localeData);
295
+ } else {
296
+ Object.keys(localeOrAllData).forEach(
297
+ (locale) => this._loadLocaleData(locale, localeOrAllData[locale])
298
+ );
299
+ }
300
+ this.emit("change");
301
+ }
302
+ _load(locale, messages) {
303
+ const maybeMessages = this._messages[locale];
304
+ if (!maybeMessages) {
305
+ this._messages[locale] = messages;
306
+ } else {
307
+ Object.assign(maybeMessages, messages);
308
+ }
309
+ }
310
+ load(localeOrMessages, messages) {
311
+ if (typeof localeOrMessages == "string" && typeof messages === "object") {
312
+ this._load(localeOrMessages, messages);
313
+ } else {
314
+ Object.entries(localeOrMessages).forEach(
315
+ ([locale, messages2]) => this._load(locale, messages2)
316
+ );
317
+ }
318
+ this.emit("change");
319
+ }
320
+ /**
321
+ * @param options {@link LoadAndActivateOptions}
322
+ */
323
+ loadAndActivate({ locale, locales, messages }) {
324
+ this._locale = locale;
325
+ this._locales = locales || void 0;
326
+ this._messages[this._locale] = messages;
327
+ this.emit("change");
328
+ }
329
+ activate(locale, locales) {
330
+ if (process.env.NODE_ENV !== "production") {
331
+ if (!this._messages[locale]) {
332
+ console.warn(`Messages for locale "${locale}" not loaded.`);
333
+ }
334
+ }
335
+ this._locale = locale;
336
+ this._locales = locales;
337
+ this.emit("change");
338
+ }
339
+ _(id, values, options) {
340
+ if (!this.locale) {
341
+ throw new Error(
342
+ "Lingui: Attempted to call a translation function without setting a locale.\nMake sure to call `i18n.activate(locale)` before using Lingui functions.\nThis issue may also occur due to a race condition in your initialization logic."
343
+ );
344
+ }
345
+ let message = options == null ? void 0 : options.message;
346
+ if (!id) {
347
+ id = "";
348
+ }
349
+ if (!isString(id)) {
350
+ values = id.values || values;
351
+ message = id.message;
352
+ id = id.id;
353
+ }
354
+ const messageForId = this.messages[id];
355
+ const messageMissing = messageForId === void 0;
356
+ const missing = this._missing;
357
+ if (missing && messageMissing) {
358
+ return isFunction(missing) ? missing(this._locale, id) : missing;
359
+ }
360
+ if (messageMissing) {
361
+ this.emit("missing", { id, locale: this._locale });
362
+ }
363
+ let translation = messageForId || message || id;
364
+ if (isString(translation)) {
365
+ if (this._messageCompiler) {
366
+ translation = this._messageCompiler(translation);
367
+ } else {
368
+ console.warn(`Uncompiled message detected! Message:
369
+
370
+ > ${translation}
371
+
372
+ That means you use raw catalog or your catalog doesn't have a translation for the message and fallback was used.
373
+ ICU features such as interpolation and plurals will not work properly for that message.
374
+
375
+ Please compile your catalog first.
376
+ `);
377
+ }
378
+ }
379
+ if (isString(translation) && UNICODE_REGEX.test(translation))
380
+ return JSON.parse(`"${translation}"`);
381
+ if (isString(translation))
382
+ return translation;
383
+ return interpolate(
384
+ translation,
385
+ this._locale,
386
+ this._locales
387
+ )(values, options == null ? void 0 : options.formats);
388
+ }
389
+ date(value, format) {
390
+ return date(this._locales || this._locale, value, format);
391
+ }
392
+ number(value, format) {
393
+ return number(this._locales || this._locale, value, format);
394
+ }
395
+ }
396
+ function setupI18n(params = {}) {
397
+ return new I18n(params);
398
+ }
399
+ const i18n = setupI18n();
400
+ export {
401
+ I18n,
402
+ i18n,
403
+ setupI18n
404
+ };
405
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../node_modules/@lingui/core/dist/index.mjs"],"sourcesContent":["import { unraw } from 'unraw';\nimport { compileMessage } from '@lingui/message-utils/compileMessage';\n\nconst isString = (s) => typeof s === \"string\";\nconst isFunction = (f) => typeof f === \"function\";\n\nconst cache = /* @__PURE__ */ new Map();\nconst defaultLocale = \"en\";\nfunction normalizeLocales(locales) {\n const out = Array.isArray(locales) ? locales : [locales];\n return [...out, defaultLocale];\n}\nfunction date(locales, value, format) {\n const _locales = normalizeLocales(locales);\n if (!format) {\n format = \"default\";\n }\n let o;\n if (typeof format === \"string\") {\n o = {\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\"\n };\n switch (format) {\n case \"full\":\n o.weekday = \"long\";\n case \"long\":\n o.month = \"long\";\n break;\n case \"short\":\n o.month = \"numeric\";\n break;\n }\n } else {\n o = format;\n }\n const formatter = getMemoized(\n () => cacheKey(\"date\", _locales, format),\n () => new Intl.DateTimeFormat(_locales, o)\n );\n return formatter.format(isString(value) ? new Date(value) : value);\n}\nfunction time(locales, value, format) {\n let o;\n if (!format) {\n format = \"default\";\n }\n if (typeof format === \"string\") {\n o = {\n second: \"numeric\",\n minute: \"numeric\",\n hour: \"numeric\"\n };\n switch (format) {\n case \"full\":\n case \"long\":\n o.timeZoneName = \"short\";\n break;\n case \"short\":\n delete o.second;\n }\n } else {\n o = format;\n }\n return date(locales, value, o);\n}\nfunction number(locales, value, format) {\n const _locales = normalizeLocales(locales);\n const formatter = getMemoized(\n () => cacheKey(\"number\", _locales, format),\n () => new Intl.NumberFormat(_locales, format)\n );\n return formatter.format(value);\n}\nfunction plural(locales, ordinal, value, { offset = 0, ...rules }) {\n const _locales = normalizeLocales(locales);\n const plurals = ordinal ? getMemoized(\n () => cacheKey(\"plural-ordinal\", _locales),\n () => new Intl.PluralRules(_locales, { type: \"ordinal\" })\n ) : getMemoized(\n () => cacheKey(\"plural-cardinal\", _locales),\n () => new Intl.PluralRules(_locales, { type: \"cardinal\" })\n );\n return rules[value] ?? rules[plurals.select(value - offset)] ?? rules.other;\n}\nfunction getMemoized(getKey, construct) {\n const key = getKey();\n let formatter = cache.get(key);\n if (!formatter) {\n formatter = construct();\n cache.set(key, formatter);\n }\n return formatter;\n}\nfunction cacheKey(type, locales, options) {\n const localeKey = locales.join(\"-\");\n return `${type}-${localeKey}-${JSON.stringify(options)}`;\n}\n\nconst formats = {\n __proto__: null,\n date: date,\n defaultLocale: defaultLocale,\n number: number,\n plural: plural,\n time: time\n};\n\nconst UNICODE_REGEX = /\\\\u[a-fA-F0-9]{4}|\\\\x[a-fA-F0-9]{2}/;\nconst OCTOTHORPE_PH = \"%__lingui_octothorpe__%\";\nconst getDefaultFormats = (locale, passedLocales, formats = {}) => {\n const locales = passedLocales || locale;\n const style = (format) => {\n if (typeof format === \"object\")\n return format;\n return formats[format];\n };\n const replaceOctothorpe = (value, message) => {\n const numberFormat = Object.keys(formats).length ? style(\"number\") : void 0;\n const valueStr = number(locales, value, numberFormat);\n return message.replace(new RegExp(OCTOTHORPE_PH, \"g\"), valueStr);\n };\n return {\n plural: (value, cases) => {\n const { offset = 0 } = cases;\n const message = plural(locales, false, value, cases);\n return replaceOctothorpe(value - offset, message);\n },\n selectordinal: (value, cases) => {\n const { offset = 0 } = cases;\n const message = plural(locales, true, value, cases);\n return replaceOctothorpe(value - offset, message);\n },\n select: selectFormatter,\n number: (value, format) => number(\n locales,\n value,\n style(format) || { style: format }\n ),\n date: (value, format) => date(locales, value, style(format) || format),\n time: (value, format) => time(locales, value, style(format) || format)\n };\n};\nconst selectFormatter = (value, rules) => rules[value] ?? rules.other;\nfunction interpolate(translation, locale, locales) {\n return (values = {}, formats) => {\n const formatters = getDefaultFormats(locale, locales, formats);\n const formatMessage = (tokens, replaceOctothorpe = false) => {\n if (!Array.isArray(tokens))\n return tokens;\n return tokens.reduce((message, token) => {\n if (token === \"#\" && replaceOctothorpe) {\n return message + OCTOTHORPE_PH;\n }\n if (isString(token)) {\n return message + token;\n }\n const [name, type, format] = token;\n let interpolatedFormat = {};\n if (type === \"plural\" || type === \"selectordinal\" || type === \"select\") {\n Object.entries(format).forEach(\n ([key, value2]) => {\n interpolatedFormat[key] = formatMessage(\n value2,\n type === \"plural\" || type === \"selectordinal\"\n );\n }\n );\n } else {\n interpolatedFormat = format;\n }\n let value;\n if (type) {\n const formatter = formatters[type];\n value = formatter(values[name], interpolatedFormat);\n } else {\n value = values[name];\n }\n if (value == null) {\n return message;\n }\n return message + value;\n }, \"\");\n };\n const result = formatMessage(translation);\n if (isString(result) && UNICODE_REGEX.test(result)) {\n return unraw(result);\n }\n if (isString(result))\n return result;\n return result ? String(result) : \"\";\n };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => {\n __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass EventEmitter {\n constructor() {\n __publicField$1(this, \"_events\", {});\n }\n on(event, listener) {\n var _a;\n (_a = this._events)[event] ?? (_a[event] = []);\n this._events[event].push(listener);\n return () => this.removeListener(event, listener);\n }\n removeListener(event, listener) {\n const maybeListeners = this._getListeners(event);\n if (!maybeListeners)\n return;\n const index = maybeListeners.indexOf(listener);\n if (~index)\n maybeListeners.splice(index, 1);\n }\n emit(event, ...args) {\n const maybeListeners = this._getListeners(event);\n if (!maybeListeners)\n return;\n maybeListeners.map((listener) => listener.apply(this, args));\n }\n _getListeners(event) {\n const maybeListeners = this._events[event];\n return Array.isArray(maybeListeners) ? maybeListeners : false;\n }\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass I18n extends EventEmitter {\n constructor(params) {\n super();\n __publicField(this, \"_locale\", \"\");\n __publicField(this, \"_locales\");\n __publicField(this, \"_localeData\", {});\n __publicField(this, \"_messages\", {});\n __publicField(this, \"_missing\");\n __publicField(this, \"_messageCompiler\");\n /**\n * Alias for {@see I18n._}\n */\n __publicField(this, \"t\", this._.bind(this));\n if (process.env.NODE_ENV !== \"production\") {\n this.setMessagesCompiler(compileMessage);\n }\n if (params.missing != null)\n this._missing = params.missing;\n if (params.messages != null)\n this.load(params.messages);\n if (params.localeData != null)\n this.loadLocaleData(params.localeData);\n if (typeof params.locale === \"string\" || params.locales) {\n this.activate(params.locale ?? defaultLocale, params.locales);\n }\n }\n get locale() {\n return this._locale;\n }\n get locales() {\n return this._locales;\n }\n get messages() {\n return this._messages[this._locale] ?? {};\n }\n /**\n * @deprecated this has no effect. Please remove this from the code. Deprecated in v4\n */\n get localeData() {\n return this._localeData[this._locale] ?? {};\n }\n _loadLocaleData(locale, localeData) {\n const maybeLocaleData = this._localeData[locale];\n if (!maybeLocaleData) {\n this._localeData[locale] = localeData;\n } else {\n Object.assign(maybeLocaleData, localeData);\n }\n }\n /**\n * Registers a `MessageCompiler` to enable the use of uncompiled catalogs at runtime.\n *\n * In production builds, the `MessageCompiler` is typically excluded to reduce bundle size.\n * By default, message catalogs should be precompiled during the build process. However,\n * if you need to compile catalogs at runtime, you can use this method to set a message compiler.\n *\n * Example usage:\n *\n * ```ts\n * import { compileMessage } from \"@lingui/message-utils/compileMessage\";\n *\n * i18n.setMessagesCompiler(compileMessage);\n * ```\n */\n setMessagesCompiler(compiler) {\n this._messageCompiler = compiler;\n return this;\n }\n /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Deprecated in v4\n */\n loadLocaleData(localeOrAllData, localeData) {\n if (typeof localeOrAllData === \"string\") {\n this._loadLocaleData(localeOrAllData, localeData);\n } else {\n Object.keys(localeOrAllData).forEach(\n (locale) => this._loadLocaleData(locale, localeOrAllData[locale])\n );\n }\n this.emit(\"change\");\n }\n _load(locale, messages) {\n const maybeMessages = this._messages[locale];\n if (!maybeMessages) {\n this._messages[locale] = messages;\n } else {\n Object.assign(maybeMessages, messages);\n }\n }\n load(localeOrMessages, messages) {\n if (typeof localeOrMessages == \"string\" && typeof messages === \"object\") {\n this._load(localeOrMessages, messages);\n } else {\n Object.entries(localeOrMessages).forEach(\n ([locale, messages2]) => this._load(locale, messages2)\n );\n }\n this.emit(\"change\");\n }\n /**\n * @param options {@link LoadAndActivateOptions}\n */\n loadAndActivate({ locale, locales, messages }) {\n this._locale = locale;\n this._locales = locales || void 0;\n this._messages[this._locale] = messages;\n this.emit(\"change\");\n }\n activate(locale, locales) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!this._messages[locale]) {\n console.warn(`Messages for locale \"${locale}\" not loaded.`);\n }\n }\n this._locale = locale;\n this._locales = locales;\n this.emit(\"change\");\n }\n _(id, values, options) {\n if (!this.locale) {\n throw new Error(\n \"Lingui: Attempted to call a translation function without setting a locale.\\nMake sure to call `i18n.activate(locale)` before using Lingui functions.\\nThis issue may also occur due to a race condition in your initialization logic.\"\n );\n }\n let message = options?.message;\n if (!id) {\n id = \"\";\n }\n if (!isString(id)) {\n values = id.values || values;\n message = id.message;\n id = id.id;\n }\n const messageForId = this.messages[id];\n const messageMissing = messageForId === void 0;\n const missing = this._missing;\n if (missing && messageMissing) {\n return isFunction(missing) ? missing(this._locale, id) : missing;\n }\n if (messageMissing) {\n this.emit(\"missing\", { id, locale: this._locale });\n }\n let translation = messageForId || message || id;\n if (isString(translation)) {\n if (this._messageCompiler) {\n translation = this._messageCompiler(translation);\n } else {\n console.warn(`Uncompiled message detected! Message:\n\n> ${translation}\n\nThat means you use raw catalog or your catalog doesn't have a translation for the message and fallback was used.\nICU features such as interpolation and plurals will not work properly for that message. \n\nPlease compile your catalog first. \n`);\n }\n }\n if (isString(translation) && UNICODE_REGEX.test(translation))\n return JSON.parse(`\"${translation}\"`);\n if (isString(translation))\n return translation;\n return interpolate(\n translation,\n this._locale,\n this._locales\n )(values, options?.formats);\n }\n date(value, format) {\n return date(this._locales || this._locale, value, format);\n }\n number(value, format) {\n return number(this._locales || this._locale, value, format);\n }\n}\nfunction setupI18n(params = {}) {\n return new I18n(params);\n}\n\nconst i18n = setupI18n();\n\nexport { I18n, formats, i18n, setupI18n };\n"],"names":["unraw"],"mappings":"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","x_google_ignoreList":[0]}